OSDN Git Service

PR tree-optimization/33723
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
2
3         PR tree-optimization/33723
4         * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
5         MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
6
7 2007-10-29  Richard Sandiford  <rsandifo@nildram.co.uk>
8
9         PR tree-optimization/33614
10         * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
11         if they can't be reduced to VECTOR_CSTs and aren't legitimate
12         initializer constants.
13
14 2007-10-29  Richard Guenther  <rguenther@suse.de>
15
16         PR tree-optimization/33870
17         * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
18         (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
19         SFTs.
20
21 2007-10-29  Richard Guenther  <rguenther@suse.de>
22
23         * passes.c (init_optimization_passes): Exchange store_copy_prop
24         with copy_prop.
25         * tree-pass.h (pass_store_copy_prop): Remove.
26         * tree-ssa-copy.c (do_store_copy_prop): Remove.
27         (stmt_may_generate-copy): Do not handle store_copy_prop.
28         (get_copy_of_val): Likewise.
29         (set_copy_of_val): Likewise.
30         (copy_prop_visit_assignment): Likewise.
31         (copy_prop_visit_stmt): Likewise.
32         (copy_prop_visit_phi_node): Likewise.
33         (init_copy_prop): Likewise.
34         (execute_copy_prop): Likewise.
35         (do_copy_prop): Remove.
36         (gate_store_copy_prop): Likewise.
37         (store_copy_prop): Likewise.
38         (pass_store_copy_prop): Likewise.
39         (pass_copy_prop): Call execute_copy_prop.
40         * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
41         * common.opt (ftree-store-copy-prop): Mark obsolete.
42         * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
43
44 2007-10-29  Ian Lance Taylor  <iant@google.com>
45
46         * ifcvt.c (noce_can_store_speculate_p): New static function.
47         (noce_process_if_block): Call it.
48         (if_convert): Remove recompute_dominance parameter.  Change all
49         callers.
50
51 2007-10-29  Richard Guenther  <rguenther@suse.de>
52
53         * tree-flow-inline.h (get_subvar_at): Use binary search.
54         (get_first_overlapping_subvar): New function to binary search
55         for the first overlapping subvar.
56         * tree-ssa-operands.c (add_vars_for_offset): Strip down to
57         just handle adding subvars for a pointed-to subvar.  Optimize
58         and use get_first_overlapping_subvar.
59         (add_vars_for_bitmap): Fold into single caller.
60         (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
61         and non pointed-to bits of add_vars_for_offset.
62
63 2007-10-29  Revital Eres  <eres@il.ibm.com> 
64
65         * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
66
67 2007-10-29  Razya Ladelsky  <razya@il.ibm.com>
68             Zdenek Dvorak  <ook@ucw.cz>
69
70         OMP_ATOMIC Changes,
71         reduction support for automatic parallelization.
72
73         * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
74         OMP_ATOMIC_STORE.
75         * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
76         * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
77         and OMP_ATOMIC_STORE.
78         * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
79         * gimple-low.c (lower_stmt): Same.
80         * gimplify.c (gimplify_expr): Same.
81         (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
82         gimplify_omp_atomic_mutex): Remove.
83         (gimplify_omp_atomic): Change it to simply gimplify the
84         statement instead of expanding it.
85         * omp-low.c: Add includes to optabs.h, cfgloop.h.
86         (expand_omp_atomic, expand_omp_atomic_pipeline,
87         goa_stabilize_expr, expand_omp_atomic_mutex,
88         expand_omp_atomic_fetch_op): New functions to implement
89         expansion of OMP_ATOMIC.
90         (expand_omp, build_omp_regions_1): Add support for
91         OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
92         * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
93         OMP_ATOMIC_STORE.
94         * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
95         OMP_ATOMIC_STORE.
96         * tree-parloops.c: add include to tree-vectorizer.h.
97         (reduction_info): New structure for reduction.
98         (reduction_list): New list to represent list of reductions per loop.
99         (struct data_arg): New helper structure for reduction.
100         (reduction_info_hash, reduction_info_eq, reduction_phi,
101         initialize_reductions, create_call_for_reduction,
102         create_phi_for_local_result, create_call_for_reduction_1,
103         create_loads_for_reductions, create_final_loads_for_reduction):
104         New functions.
105         (loop_parallel_p): Identify reductions, add reduction_list parameter.
106         (separate_decls_in_loop_name): Support reduction variables.
107         (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
108         call create_loads_for_reduction for each reduction.
109         (canonicalize_loop_ivs): Identify reductions, add reduction_list
110         parameter.
111         (transform_to_exit_first_loop): Add reduction support, add
112         reduction_list parameter.
113         (gen_parallel_loop): Add reduction_list parameter.  Add call
114         separate_decls_in_loop with
115         the new argument.  Traverse reductions and call
116         initialize_reductions, create_call_for_reduction.
117         (parallelize_loops): Create and delete the reduction list.
118         (add_field_for_name): Change use of data parameter.  Add fields for
119         reductions.
120         * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
121         * tree-vect-analyze.c (vect_analyze_loop_form): export it.
122         * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
123         * tree-inline.c (estimate_num_insns_1): add cases for
124         OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
125         * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
126         * tree-ssa-operands.c (get_addr_dereference_operands):
127         New function.  Subroutine of get_indirect_ref_operands.
128         (get_indirect_ref_operands): Call get_addr_dereference_operands.
129         (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
130
131
132 2007-10-29  Hans-Peter Nilsson  <hp@axis.com>
133
134         * config/cris/cris.c: Include df.h.
135         (cris_address_cost): Add gcc_assert for canonicalization
136         assumptions.  For PLUS with MULT or register, correct
137         test for register in other arm.  Tweak comments.
138
139 2007-10-28  Richard Guenther  <rguenther@suse.de>
140
141         * tree-ssa-operands.c (add_vars_for_offset): Add parameter
142         telling if the var is to be treated as points-to location.
143         (add_vars_for_bitmap): Pass true to add_vars_for_offset.
144         (add_virtual_operand): Only recurse into MPTs if aliases
145         is from a NMT.
146
147 2007-10-28  Richard Guenther  <rguenther@suse.de>
148
149         * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
150         (add_vars_for_bitmap): Do not recurse further.  Only add vars
151         for pointed-to SFTs.
152         (add_virtual_operand): Re-instantiate loop to add operands for
153         aliases.  Recurse into MPTs.
154         (get_indirect_ref_operands): If we fall back to use a pointers
155         SMT, make sure to not prune based on the access offset and size.
156
157 2007-10-28  Andrew Pinski  <pinskia@gmail.com>
158
159         PR tree-opt/33589
160         * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
161         the eh information on the statement.
162
163 2007-10-28  Richard Guenther  <rguenther@suse.de>
164
165         * tree-flow.h (subvar_t): Make it a VEC.
166         (struct subvar): Remove.
167         (struct var_ann_d): Use VEC(tree,gc) to store subvars.
168         * tree-flow-inline.h (get_subvar_at): Adjust iterators over
169         variable subvars.
170         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
171         * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
172         * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
173         (set_initial_properties): Likewise.
174         (setup_pointers_and_addressables): Likewise.
175         (new_type_alias): Likewise.
176         (create_overlap_variables_for): Likewise.
177         * tree-dfa.c (dump_subvars_for): Likewise.
178         * tree-ssa-operands.c (add_vars_for_offset): Likewise.
179         (get_expr_operands): Likewise.
180         (add_to_addressable_set): Likewise.
181         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
182
183 2007-10-28  Uros Bizjak  <ubizjak@gmail.com>
184
185         PR tree-optimization/33920
186         * tree-if-conv.c (tree_if_conversion): Force predicate of single
187         successor bb to true when predecessor bb has NULL predicate.
188         (find_phi_replacement_condition): Assert that tmp_cond is non-null.
189
190 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
191
192         * config/mips/mips.md: Add combiner patterns for DImode extensions
193         of HImode and QImode truncations.  Reformat HImode <- QImode pattern
194         for consistency.
195
196 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
197
198         PR target/33895
199         * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
200
201 2007-10-28  Andreas Krebbel  <krebbel1@de.ibm.com>
202
203         * dce.c (delete_unmarked_insns): Just delete the RETVAL and
204         LIBCALL notes if they are about to be moved to the same insn.
205
206 2007-10-27  Richard Guenther  <rguenther@suse.de>
207
208         PR tree-optimization/33870
209         * tree-ssa-operands.c (add_vars_for_offset): Reduce code
210         duplication.  Remove redundant call to access_can_touch_variable.
211         (add_vars_for_bitmap): New helper for recursing over MPT contents.
212         (add_virtual_operand): Use it.
213
214 2007-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
215
216         PR fortran/31608
217         * pa.h (ASM_PN_FORMAT): Delete define.
218
219 2007-10-26  Janis Johnson  <janis187@us.ibm.com>
220
221         * doc/invoke.texi (Option Summary, optimizations): Remove
222         -fbounds-check.  Add -fassociative-math, -freciprocal-math,
223         -ftree-vrp and -funit-at-a-time.  Change -fno-split-wide-types to
224         -fsplit-wide-types to match later entry.  Break up a long line.
225         (Option Summary, code gen options)  Add -fno-stack-limit.  Add
226         missing @gol to the end of a line.
227         (Optimization Options): Remove -fbounds-check, which is also
228         documented under Code Generation Options.  Remove =n from
229         index entry for -ftree-parallelize-loops.  Change -fno-cprop-registers
230         to -fcprop-registers to match other options, and say when it is
231         enabled rather than disabled.  Remove extra index entry for
232         -fno-cx-limited-range.  Add index entries for -fstack-protector
233         and -fstack-protector-all.
234         (Code Gen Options): Add index entry for -ftls-model.
235
236 2007-10-26  Anatoly Sokolov <aesok@post.ru>
237
238         * config/avr/avr.c (avr_OS_task_function_p): Add new function.
239         (avr_regs_to_save): Handle functions with 'OS_task' attribute.
240         (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
241         expand_epilogue, output_movhi): Don't handle 'main' function.
242         (avr_attribute_table): Add 'OS_task' function attribute.
243         * config/avr/avr.h (machine_function): Remove 'is_main' field, add
244         'is_OS_task' field.
245         * config/avr/avr.md (return_from_main_epilogue): Remove insn.
246         (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
247         'main' function.
248         * config/avr/avr.opt (minit-stack): Remove.
249
250 2007-10-26  Eric Botcazou  <ebotcazou@adacore.com>
251
252         * tree-nested.c (get_trampoline_type): Fix thinko.
253
254 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
255
256         PR c++/33601
257         * tree.c (build_offset_type): Build canonical type based on the
258         TYPE_MAIN_VARIANT of the base type.
259
260 2007-10-26  Daniel Jacobowitz  <dan@codesourcery.com>
261
262         * reorg.c (emit_delay_sequence): Move insn locator from the
263         first insn to the sequence.
264
265 2007-10-26  Samuel Tardieu  <sam@rfc1149.net>
266
267         * ipa-pure-const.c (check_decl): Return immediately when
268         pure_const_state has been set to IPA_NEITHER.
269
270 2007-10-25  Ira Rosen  <irar@il.ibm.com>
271
272         PR tree-optimization/33833
273         * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
274         and convert init to sizetype in inner_base construction.
275
276 2007-10-25  Richard Guenther  <rguenther@suse.de>
277
278         * tree-flow.h (mem_sym_stats): Remove.
279         (dump_mem_sym_stats_for_var): Declare.
280         * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
281         (mem_sym_stats): Move ...
282         * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
283         (mem_sym_score): Rename from ...
284         (pscore): ... this.  Remove.
285         (dump_mem_sym_stats_for_var): New function.  Dump the score, but
286         not the frequencies.
287         (compare_mp_info_entries): Make sort stable by disambiguating
288         on DECL_UID.
289
290 2007-10-25  Ira Rosen  <irar@il.ibm.com>
291
292         PR tree-optimization/33866
293         * tree-vect-transform.c (vectorizable_store): Check operands of all
294         the stmts in the group of strided accesses. Get def stmt type for each
295         store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
296
297 2007-10-25  Uros Bizjak  <ubizjak@gmail.com>
298
299         * config/i386/constraints.md (Y0): Rename register constraint to Yz.
300         (Yt): Rename register constraint to Y2.
301         * config/i386/sse.md: Use renamed register constraints.
302         * config/i386/mmx.md: Ditto.
303         * config/i386/i386.md: Ditto.
304
305 2007-10-25  Rask Ingemann Lambertsen  <rask@sygehus.dk>
306
307         * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
308
309 2007-10-24  Chao-ying Fu  <fu@mips.com>
310
311         * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
312         DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
313
314 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
315             Olga Golovanevsky <olga@il.ibm.com>
316         
317         * ipa-struct-reorg.c (replace_field_acc): Make it clear to
318         the compiler that wr.wrap and wr.domain are initialized in
319         any case.
320
321 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
322
323         * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
324         to print gcov_type values.
325
326 2007-10-24  Eric B. Weddington  <eweddington@cso.atmel.com>
327
328         * config/avr/avr.h: Do not include progmem_section definition when
329         building with IN_TARGET_LIBS.
330
331 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
332
333         PR target/33755
334         * config/mips/mips.c (mips_lo_sum_offset): New structure.
335         (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
336         (mips_lo_sum_offset_lookup, mips_record_lo_sum)
337         (mips_orphaned_high_part_p: New functions.
338         (mips_avoid_hazard): Don't check INSN_P here.
339         (mips_avoid_hazards): Rename to...
340         (mips_reorg_process_insns): ...this.  Cope with
341         !TARGET_EXPLICIT_RELOCS.  Delete orphaned high-part relocations,
342         or turn them into nops.
343         (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
344         dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
345         (mips_set_mips16_mode): Don't set flag_delayed_branch here.
346         (mips_override_options): Set flag_delayed_branch to 0.
347
348 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
349
350         * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
351         MIPS-specific implementation details.
352         (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
353         (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
354         (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
355         for targets with movmemsi.
356         (MOVE_BY_PIECES_P): Define.
357         * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
358         (mips_block_move_loop): Add a bytes_per_iter argument.
359         (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
360         Update call to mips_block_move_loop.
361
362 2007-10-24  Michael Matz  <matz@suse.de>
363
364         PR debug/33868
365         * var-tracking.c (variable_union): Don't break after one loop
366         iteration but only when a difference is found.
367         (dump_variable): Also print DECL_UID.
368
369 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
370
371         * ipa-type-escape.h: Expose function
372         is_array_access_through_pointer_and_index.
373         * ipa-type-escape.c
374         (is_array_access_through_pointer_and_index):
375         Add three new parameters. Add support of
376         POINTER_PLUS_EXPR tree code.
377
378 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
379
380         * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
381         * tree-pass.h: Add pass_ipa_struct_reorg.
382         * common.opt: Add ipa-struct-reorg flag.
383         * Makefile.in: Add ipa-strcut-reorg.o compilation.
384         * passes.c: Add pass pass_ipa_struct_reorg.
385         * params.h:  Add STRUCT_REORG_COLD_STRUCT_RATIO.
386         * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
387
388 2007-10-24  Ira Rosen  <irar@il.ibm.com>
389
390         PR tree-optimization/33804
391         * tree-vect-transform.c (vectorizable_operation): Remove the
392         checks that the vectorization is worthwhile from the transformation
393         phase.
394
395 2007-10-24  Ira Rosen  <irar@il.ibm.com>
396
397         * tree-vect-analyze.c (vect_build_slp_tree): Return false if
398         vectype cannot be determined for the scalar type.
399         (vect_analyze_slp_instance): Likewise.
400         * tree-vect-transform.c (vect_model_reduction_cost): Change the
401         return type to bool. Return false if vectype cannot be determined 
402         for the scalar type.
403         (vect_get_constant_vectors): Return false if vectype cannot be
404         determined for the scalar type.
405         (get_initial_def_for_induction, vect_get_vec_def_for_operand,
406         get_initial_def_for_reduction, vect_create_epilog_for_reduction,
407         vectorizable_reduction): Likewise.      
408
409 2007-10-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
410
411         * config.gcc: For a FreeBSD target, parse the value of ${target}
412         to determine the value of FBSD_MAJOR, instead of adding an
413         explicit check for every possible FreeBSD major version.
414
415 2007-10-23  Uros Bizjak  <ubizjak@gmail.com>
416
417         PR rtl-optimization/33846
418         * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
419
420 2007-10-23  Dorit Nuzman  <dorit@il.ibm.com>
421
422         PR tree-optimization/33860
423         * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
424         interleaved accesses in case the dr is inside the inner-loop during
425         outer-loop vectorization.
426
427 2007-10-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
428
429         * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
430         Document MEM_POINTER.  Replace mentions of "integrated"
431         field with "return_val".  Delete outdated stuff.
432
433 2007-10-23  David Edelsohn  <edelsohn@gnu.org>
434
435         * config/rs6000/rs6000.c (rs6000_override_options): Set
436         rs6000_altivec_abi on AIX.
437         (conditional_register_usage): Set VR20:31 fixed on AIX.
438
439 2007-10-23  Richard Guenther  <rguenther@suse.de>
440
441         * alias.c (get_alias_set): For INDIRECT_REFs, deal with
442         SSA_NAME pointers.
443
444 2007-10-22  Seongbae Park <seongbae.park@gmail.com>
445         David S. Miller  <davem@davemloft.net>
446
447         * df-scan.c (df_get_call_refs): Mark global registers as both a
448         DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
449
450 2007-10-22  Dorit Nuzman  <dorit@il.ibm.com>
451
452         PR tree-optimization/33834
453         PR tree-optimization/33835
454         * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
455         stmts need to be checked for success seperately.
456         * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
457         Remove the check that stmt is not LIVE.
458         (vectorizable_assignment, vectorizable_induction): Likewise.
459         (vectorizable_operation, vectorizable_type_demotion): Likewise.
460         (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
461         Likewise.
462         (vectorizable_live_operation): Check that op is not NULL. 
463
464 2007-10-22  Janis Johnson  <janis187@us.ibm.com>
465
466         * doc/invoke.texi (Optimization Options): In the summary, show
467         that the value for options -falign-jumps, -falign-labels,
468         -falign-loops, -falign-functions, -fsched-stalled-insns, and
469         -fsched-stalled-insns-dep is optional.  In the summary, show that
470         -fsched-stalled-insns takes an optional argument and that
471         -fparallelize-loops takes an argument.  Add opindex for several
472         optimization options, and fix typos in the opindex commands for
473         several others.  In the descriptions for -fsched-stalled-insns
474         and -fsched-stalled-insns-dep, show the options with and without
475         values.
476
477 2007-10-22  Eric B. Weddington  <eweddington@cso.atmel.com>
478
479         * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
480         produced.
481         * config/avr/avr.h (LINK_SPEC): Likewise.
482         (CRT_BINUTILS_SPECS): Likewsie.
483         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
484
485 2007-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
486
487         PR rtl-optimization/33644
488         * cfgcleanup.c: Do not include dce.h.
489         * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
490         * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
491         * dce.c (something_changed): Delete.
492         (libcall_dead_p): New predicate.
493         (delete_unmarked_insns): Use it to delete dead libcalls.
494         Deal with REG_LIBCALL and REG_RETVAL notes.
495         (prescan_libcall_for_dce): New function.
496         (prescan_insns_for_dce): Use it to deal with libcalls.
497         (mark_reg_dependencies): Do nothing special for libcalls.
498         (dce_process_block): Likewise.
499         (fast_dce): Delete unused local variable.
500         (run_fast_dce): Do not return a value.
501         * dce.h (struct df): Delete.
502         (run_fast_dce): Adjust prototype.
503         * optabs.c (libcall_id): Delete.
504         (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
505         (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
506         * reload1.c (reload): Delete REG_LIBCALL_ID case.
507         * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
508         * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
509         notes instead of REG_LIBCALL_ID notes.
510         * reg-notes.def (LIBCALL_ID): Delete.
511         * Makefile.in (see.o): Add dce.h dependency.
512         (cfgcleanup.o): Remove dce.h dependency.
513
514 2007-10-22  Michael Matz  <matz@suse.de>
515
516         PR tree-optimization/33855
517         * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
518         and VECTOR_TYPE.
519
520 2007-10-22  Ira Rosen  <irar@il.ibm.com>
521
522         PR tree-optimization/33854
523         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
524         FLOAT_EXPR to the list of promotion operations. 
525
526 2007-10-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
527
528         PR target/29473
529         PR target/29493
530         * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
531         (print_reg): Print register prefix only with AT&T asm syntax. 
532         Support pc_rtx for RIP register.
533         (print_operand_address): Use print_reg()'s pc_rtx support for RIP
534         relative addressing.  Always print segment register prefix with AT&T
535         asm syntax and never with Intel asm syntax.
536         (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands. 
537         Fix prefix for 16-byte XFmode operands.
538         (output_addr_const_extra): Support Intel asm syntax.
539         (x86_file_start): Don't use register prefix with Intel asm syntax.
540         * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
541         ("return_internal_long"): Fix Intel asm syntax output.
542         ("set_got_rex64"): Support Intel asm syntax.
543         ("set_rip_rex64"): Likewise.
544         ("set_got_offset_rex64"): Likewise.
545         ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
546         syntax.
547         ("*tls_global_dynamic_64"): Likewise.
548         ("*tls_local_dynamic_base_64"): Likewise.
549         ("*load_tp_si")("*load_tp_di"): Likewise.
550         ("*add_tp_si")("*add_tp_di"): Likewise.
551         ("*tls_dynamic_lea_64"): Likewise.
552         ("*sibcall_value_1_rex64_v"): Likewise.
553         ("stack_tls_protect_set_si"): Likewise.
554         ("stack_tls_protect_set_di"): Likewise.
555         ("stack_tls_protect_test_si"): Likewise.
556         ("stack_tls_protect_test_di"): Likewise.
557         * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
558         syntax output.
559         ("*movv2sf_internal_rex64"): Likewise.
560         * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
561         (__get_cpuid_max): Likewise.
562
563 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
564
565         * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
566         the STRICT_P argument type "bool" rather than "int".
567         (mips_legitimate_address_p): Likewise.
568         (fp_register_operand, lo_operand): Delete.
569         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
570         (mips_emit_scc): Rename to...
571         (mips_expand_scc): ...this.
572         (gen_conditional_branch): Rename to...
573         (mips_expand_conditional_branch): ...this.
574         (gen_conditional_move): Rename to...
575         (mips_expand_conditional_move): ...this.
576         (mips_gen_conditional_trap): Rename to...
577         (mips_expand_conditional_trap): ...this and take an rtx code instead
578         of an operands array.
579         (mips_expand_call): Give the SIBCALL_P argument type "bool"
580         rather than "int".
581         (mips_emit_fcc_reload): Rename to...
582         (mips_expand_fcc_reload): ...this.
583         (init_cumulative_args): Rename to...
584         (mips_init_cumulative_args): ...this and remove the libname argument.
585         (function_arg_advance): Rename to...
586         (mips_function_arg_advance): ...this.
587         (function_arg): Rename to...
588         (mips_function_arg): ...this and use "rtx" instead of
589         "struct rtx_def *".
590         (function_arg_boundary): Rename to...
591         (mips_function_arg_boundary): ...this.
592         (mips_expand_unaligned_load): Rename to...
593         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
594         and BITPOS arguments type "HOST_WIDE_INT".
595         (mips_expand_unaligned_store): Rename to...
596         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
597         and BITPOS arguments type "HOST_WIDE_INT".
598         (override_options): Rename to...
599         (mips_override_options): ...this.
600         (print_operand): Rename to...
601         (mips_print_operand): ...this.
602         (print_operand_address): Rename to...
603         (mips_print_operand_address): ...this.
604         (mips_output_ascii): Remove the PREFIX argument.
605         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
606         rather than "int".
607         (mips_can_use_return_insn): Return a "bool" rather than an "int".
608         (mips_function_value): Remove the FUNC argument.  Use "rtx" instead
609         of "struct rtx_def *".
610         (mips_secondary_reload_class): Give the IN_P argument type "bool"
611         rather than "int".
612         (build_mips16_call_stub): Delete.
613         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
614         (mips_use_ins_ext_p): Give the second and third arguments type
615         "HOST_WIDE_INT" rather than "rtx".
616         * config/mips/mips.h: Update after the above changes.  Tweak comments
617         and formatting.
618         (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
619         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
620         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
621         element type from "char" to "bool".
622         (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
623         (mips_cpu_info_table): Delete.
624         * config/mips/mips.md: Update after the above changes.  Tweak some
625         formatting.
626         * config/mips/mips-ps-3d.md: Likewise.
627         * config/mips/mips.c: Tweak comments and formatting.
628         Use NULL-like macros rather than 0 in various places.
629         (mips_section_threshold): Rename to...
630         (mips_small_data_threshold): ...this and give it an unsigned type.
631         (num_source_filenames): Remove explicit initialization.
632         (sdb_label_count): Likewise.
633         (sym_lineno): Delete.
634         (set_noat): Make static.
635         (mips_branch_likely): Likewise, and give it type "bool".
636         (mips_isa_info): Rename to...
637         (mips_isa_option_info): ...this.
638         (mips_flag_delayed_branch): Rename to...
639         (mips_base_delayed_branch): ...this.
640         (mips_split_addresses): Delete.
641         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
642         element type from "char" to "bool".
643         (mips_regno_to_class): Add an explicit array size.
644         (mips16_flipper): Change from type "int" to type "bool".
645         (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
646         (mips_tls_operand_p): Rename to...
647         (mips_tls_symbol_p): ...this.
648         (mips_global_symbol_p): Remove redundant "const".
649         (mips_offset_within_alignment_p): Simplify.
650         (mips_regno_mode_ok_for_base_p): Change the name of the last argument
651         to STRICT_P and give it type bool.
652         (mips_valid_base_register_p): Likewise.
653         (mips_classify_address): Likewise.
654         (mips_legitimate_address_p): Likewise.
655         (mips16_unextended_reference_p): Take the offset as an
656         "unsigned HOST_WIDE_INT" rather than an "rtx".  Simplify.
657         (mips_const_insns): Use IN_RANGE.
658         (mips_force_temporary): Remove an unnecessary copy_rtx.
659         (mips16_gp_pseudo_reg): Simplify.
660         (mips_split_symbol): Remove an unnecessary copy_rtx.
661         (mips_legitimize_tls_address): Only create registers if we need them.
662         (mips_legitimize_address): Use mips_split_plus.
663         (mips_move_integer): Swap DEST and TEMP arguments.  Rename local
664         variable COST to NUM_OPS.
665         (mips_legitimize_move): Use gen_lowpart.
666         (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
667         (m16_check_op): Use IN_RANGE.
668         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
669         (mips_split_doubleword_move): Pass booleans to mips_subword.
670         (mips_output_move): Store the mode in a local variable.
671         Explicitly assert that this function does not deal with
672         MFLO and MFHI.  Use SMALL_OPERAND_UNSIGNED.  Make order of
673         cases more consistent.
674         (mips_relational_operand_ok_p): Rename to...
675         (mips_int_order_operand_ok_p): ...this.
676         (mips_canonicalize_comparison): Rename to...
677         (mips_canonicalize_int_order_test): ...this.
678         (mips_emit_int_relational): Rename to...
679         (mips_emit_int_order_test): ...this.  Store the mode in a local
680         variable.
681         (mips_reverse_fp_cond_p): Rename to...
682         (mips_reversed_fp_cond): ...this.
683         (mips_emit_compare): Make the order of the statements more consistent.
684         (mips_emit_scc): Rename to...
685         (mips_expand_scc): ...this.
686         (gen_conditional_branch): Rename to...
687         (mips_expand_conditional_branch): ...this.
688         (gen_conditional_move): Rename to...
689         (mips_expand_conditional_move): ...this.  Build the condition
690         separately from the main pattern.
691         (mips_gen_conditional_trap): Rename to...
692         (mips_expand_conditional_trap): ...this and take an rtx code instead
693         of an operands array.  Simplify.
694         (init_cumulative_args): Rename to...
695         (mips_init_cumulative_args): ...this.  Use memset rather than a
696         copy from a zeroed static.  Use prototype_p and stdarg_p.
697         (mips_arg_info): Rename to...
698         (mips_get_arg_info): ...this and put the INFO argument first.
699         (function_arg): Rename to...
700         (mips_function_arg): ...this and use "rtx" instead of
701         "struct rtx_def *".  Only split structures into chunks if 
702         TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
703         a chunk-by-chunk basis.  Use SCALAR_FLOAT_TYPE_P instead of a
704         comparison with REAL_TYPE.  Rename local variable REG to REGNO
705         and make it unsigned.
706         (function_arg_advance): Rename to...
707         (mips_function_arg_advance): ...this.
708         (function_arg_boundary): Rename to...
709         (mips_function_arg_boundary): ...this.
710         (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
711         with MODE_INT.
712         (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
713         comparison with REAL_TYPE.
714         (mips_function_value): Remove the FUNC argument.  Rename local
715         variable UNSIGNEDP to UNSIGNED_P.
716         (mips_return_in_memory): Use IN_RANGE.
717         (mips_setup_incoming_varargs): Pass a boolean rather than an int
718         to FUNCTION_ARG_ADVANCE.
719         (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
720         to INDIRECT_P.  Remove a redundant mips_abi check.  Only calculate
721         SIZE and RSIZE if needed.
722         (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
723         rather than "int".
724         (build_mips16_function_stub): Rename to...
725         (mips16_build_function_stub): ...this.
726         (build_mips16_call_stub): Rename to...
727         (mips16_build_call_stub): ...this.  Make static, and return a
728         "bool" rather than an "int".  Rename the ARG_SIZE argument to
729         ARGS_SIZE.  Rename the local variable FPRET to FP_RET_P and give
730         it type "bool".  Use "jr" rather than "j".  Use XNEW.  Simplify.
731         (mips_load_call_address): Give the SIBCALL_P argument type "bool"
732         rather than "int".
733         (mips_expand_call): Likewise.  Assert that MIPS16 calls via stubs
734         are not sibling ones.
735         (mips_emit_fcc_reload): Rename to...
736         (mips_expand_fcc_reload): ...this.
737         (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
738         "HOST_WIDE_INT".
739         (mips_expand_unaligned_load): Rename to...
740         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
741         and BITPOS arguments type "HOST_WIDE_INT".  Remove redundant
742         SUBREG_BYTE check.
743         (mips_expand_unaligned_store): Rename to...
744         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
745         and BITPOS arguments type "HOST_WIDE_INT".
746         (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
747         and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
748         Use IN_RANGE.
749         (mips_init_split_addresses): Replace with...
750         (mips_split_addresses_p): ...this new function.
751         (mips_init_relocs): Check mips_split_addresses_p () rather than
752         mips_split_addresses.  Always initialize mips_split_p with booleans.
753         (print_operand_reloc): Rename to...
754         (mips_print_operand_reloc): ...this.  Use a gcc_assert rather than
755         a fatal_error.
756         (print_operand): Rename to...
757         (mips_print_operand): ...this.
758         (print_operand_address): Rename to...
759         (mips_print_operand_address): ...this.  Use GP_REG_FIRST.
760         (mips_in_small_data_p): Simplify.
761         (mips_output_ascii): Remove the PREFIX argument and "register"
762         keywords.  Use the STRING parameter directly and cast to
763         "unsigned char".
764         (mips16e_collect_argument_save_p): Use IN_RANGE.
765         (mips_function_has_gp_insn): Simplify.
766         (mips_set_return_address): Use BITSET_P.
767         (mips_restore_gp): Use a separate statement to pick the base
768         register.
769         (mips_output_function_prologue): Use a local FRAME variable.
770         (mips_save_reg): Pass booleans to mips_subword.
771         (mips_expand_prologue): Use a local FRAME variable.  Use
772         cprestore_size to detect when .cprestore is needed.
773         (mips_restore_reg): Use GP_REG_FIRST.
774         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
775         rather than "int".  Use local FRAME and REGNO variables.
776         (mips_can_use_return_insn): Return a "bool" rather than an "int".
777         (mips_secondary_reload_class): Give the IN_P argument type "bool"
778         rather than "int".
779         (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
780         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
781         (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
782         (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
783         (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
784         (builtin_description): Rename to...
785         (mips_builtin_description): ...this.
786         (mips_bdesc): Rename to...
787         (mips_ps_bdesc): ...this.
788         (sb1_bdesc): Rename to...
789         (mips_sb1_bdesc): ...this.
790         (dsp_bdesc): Rename to...
791         (mips_dsp_bdesc): ...this.
792         (dsp_32only_bdesc): Rename to...
793         (mips_dsp_32only_bdesc): ...this.
794         (bdesc_map): Rename to...
795         (mips_bdesc_map): ...this.
796         (bdesc_arrays): Rename to...
797         (mips_bdesc_arrays): ...this.
798         (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
799         Tweak error message.
800         (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
801         Rename local variables I and J to OPNO and ARGNO respectively.
802         Assert that the number of arguments is no more than the number of
803         input operands.
804         (mips_expand_builtin_compare): Use an array of arguments rather
805         than an array of operands.  Assert that the number of operands is
806         as expected.
807         (add_constant): Rename to...
808         (mips16_add_constant): ...this.  Use XNEW.
809         (dump_constants_1): Rename to...
810         (mips16_emit_constants_1): ...this.  Use ALL_SCALAR_FIXED_POINT_MODE_P.
811         (dump_constants): Rename to...
812         (mips16_emit_constants): ...this.
813         (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
814         (mips_set_mips16_mode): Don't call mips_init_split_addresses.
815         Assign mips16_p to was_mips16_p.
816         (mips_parse_cpu): Tweak warning message.
817         (override_options): Rename to...
818         (mips_override_options): ...this.  Move the mips_cost initialization
819         out of the "shared with GAS" block.  Quote option names in error
820         messages.
821         (mips_conditional_register_usage): Make local variable REGNO unsigned.
822         (mips_order_regs_for_local_alloc): Remove register keyword.
823
824 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
825
826         * system.h (IN_RANGE): Cast each argument individually.
827
828 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
829
830         * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
831         MIPS16 code unless using o32 or o64.  
832
833 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
834
835         * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
836         for modes smaller than 4 bytes.
837         * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
838         FPR alternatives.
839
840 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
841
842         * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
843         * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
844         (ASM_OUTPUT_ALIGNED_BSS): Delete.
845         * config/mips/mips.c (mips_output_aligned_bss): Delete.
846
847 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
848
849         * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
850         sibling calls to "mips16" functions if the function satisfies
851         const_call_insn_operand.
852
853 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
854
855         * config/mips/mips.c (mips_va_start): Fix types in calls
856         to build_int_cst.
857
858 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
859
860         * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
861         if ISA_HAS_FP4.
862
863 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
864
865         * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
866         * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
867         instead of checking mips_isa.
868
869 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
870
871         * doc/invoke.texi (-mpaired-single): Don't say that the option
872         requires 64-bit code.
873         * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
874         * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
875         (ISA_HAS_NMADD_NMSUB): Add a mode argument.  Return true for
876         V2SF if ISA_MIPS32R2.
877         (MODES_TIEABLE_P): Use mips_modes_tieable_p.
878         * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
879         to ISA_HAS_NMADD_NMSUB.
880         (mips_split_doubleword_move): Handle V2SF.
881         (mips_modes_tieable_p): New function.
882         (override_options): Report a warning rather than an error when
883         -mpaired-single is used on ISAs that don't support it; use
884         ISA_HAS_PAIRED_SINGLE to check that case.
885         * config/mips/mips.md (MOVE64): New mode iterator.  Replace DI
886         and DF move splitters with a single MOVE64 splitter, thereby adding
887         a V2SF splitter too.
888         (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
889         Add a TARGET_FLOAT64 condition to TF.  Add V2SF to the iterator.
890         (HALFMODE): Add V2SF.
891         (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
892         (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
893         (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
894         (movv2sf_hardfloat_32bit): New pattern.
895         (load_low<mode>, load_high<mode>, store_word<mode>): Remove
896         TARGET_DOUBLE_FLOAT conditions.
897
898 2007-10-20  Jakub Jelinek  <jakub@redhat.com>
899
900         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
901         saved CR2 offset to low 32 bits of regs->ccr rather than the whole
902         64-bit register in 64-bit libgcc.
903
904 2007-10-20  Eric B. Weddington  <eweddington@cso.atmel.com>
905
906         * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
907         * config/avr/avr.h (LINK_SPEC): Likewise.
908         (CRT_BINUTILS_SPECS): Likewsie.
909         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
910
911 2007-10-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
912
913         * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
914         and -Wfatal-errors together.
915         
916 2007-10-20  Alan Modra  <amodra@bigpond.net.au>
917
918         PR target/33812
919         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
920         change for vrsave, ie restore after frame pop.
921
922 2007-10-19  David S. Miller  <davem@davemloft.net>
923
924         * config/sparc/niagara2.md: Fix copyright notice.
925
926 2007-10-19  Sebastian Pop  <sebastian.pop@amd.com>
927
928         PR tree-optimization/23820
929         PR tree-optimization/24309
930         PR tree-optimization/33766
931         * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
932         * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
933         * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
934         * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
935         * tree-loop-linear.c (perfect_loop_nest_depth): New.
936         (linear_transform_loops): Use perfect_loop_nest_depth.
937         * lambda-code.c (perfect_nest_p): Outer loops in perfect nests 
938         should have a single condition: their exit.
939
940 2007-10-19  Richard Guenther  <rguenther@suse.de>
941
942         PR middle-end/33816
943         PR middle-end/32921
944         * stor-layout.c (layout_type): Assert that aggregates do not
945         have their alias sets set.
946         * alias.c (get_alias_set): Return alias set zero for incomplete
947         types, return the alias set of the element for incomplete array
948         types, but do not remember these.
949
950 2007-10-19  Richard Guenther  <rguenther@suse.de>
951
952         Revert
953         2007-10-19  Richard Guenther  <rguenther@suse.de>
954
955         PR middle-end/32921
956         * tree.c (build_array_type): Do not re-layout unbound array
957         types.
958
959 2007-10-19  Richard Guenther  <rguenther@suse.de>
960
961         PR middle-end/32921
962         * tree.c (build_array_type): Do not re-layout unbound array
963         types.
964
965 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
966
967         * config/mips/mips.c (mips_canonicalize_comparison):  Check
968         mips_relational_operand_ok_p before trying to rewrite the test.
969         Only calculate PLUS_ONE if needed.
970         (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
971         here.
972
973 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
974
975         * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
976         calculation.
977
978 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
979
980         * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
981         the call uses the incoming value of $2.
982
983 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
984
985         * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
986         rather then gen_rtx_MEM.
987         (mips_setup_incoming_varargs): Use gen_frame_mem rather than
988         gen_rtx_MEM.
989         (mips_set_return_address): Likewise.
990         (mips_restore_gp): Likewise.
991
992 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
993
994         * config/mips/mips.c (gpr_mode): Delete.
995         (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
996         instead of gpr_mode.
997         (mips_for_each_saved_reg): Likewise.
998         (mips_expand_prologue, mips_expand_epilogue): Likewise.
999         (override_options): Don't initialize gpr_mode.
1000         * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
1001
1002 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1003
1004         * config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
1005         case last.
1006         (mips_class_max_nregs): Calculate the smallest consituent register
1007         size and use that to determine an upper bound on the number of
1008         registers.
1009
1010 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1011
1012         * config/mips/mips.c (mips16_copy_fpr_return_value): New function,
1013         split out from...
1014         (mips_expand_epilogue): ...here.
1015         (mips_mdebug_abi_name): New function, split out from...
1016         (mips_file_start): ...here.
1017         (mips_hard_regno_mode_ok_p): New function, split out from...
1018         (override_options): ...here.
1019         (mips_expand_builtin_1): New function, split out from...
1020         (mips_expand_buitin): ...here.  Abort if we don't recognize
1021         the function.
1022
1023 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1024
1025         * config/mips/mips.c (build_mips16_function_stub): Load the
1026         target address into $1 before transfering the arguments.
1027         Don't use ".set noreorder".
1028         (build_mips16_call_stub): Likewise.
1029
1030 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1031
1032         * config/mips/mips.c (mips_output_32bit_xfer): New function.
1033         (mips_output_64bit_xfer): Likewise.
1034         (mips16_fp_args): Rename to...
1035         (mips_output_args_xfer): ...this and replace the FROM_FP_P argument
1036         with a DIRECTION argument.  Use mips_output_32bit_xfer and
1037         mips_output_64bit_xfer.
1038         (build_mips16_function_stub): Update accordingly.
1039         (mips16_fpret_double): Delete.
1040         (build_mips16_call_stub): Update after above changes.
1041         Use mips_output_32bit_xfer.  Use mips_output_64bit_xfer instead
1042         of mips16_fpret_double.  Use GP_REG_RETURN.
1043
1044 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1045
1046         * config/mips/mips.c (mips16_fp_args): Remove the FILE argument and
1047         use asm_out_file instead.
1048         (build_mips16_function_stub): Likewise.
1049         (build_mips16_call_stub, mips_output_function_prologue): Update
1050         accordingly.
1051
1052 2007-10-18  David S. Miller  <davem@davemloft.net>
1053
1054         Add Niagara-2 support.
1055         * doc/invoke.texi: Document -m{cpu,tune}=niagara2.
1056         * config.gcc: Add niagara2 to cpu and tune lists for sparc.
1057         * config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
1058         (include): Add inclusion of niagara2.md
1059         * config/sparc/sparc.c (niagara2_costs): New.
1060         (sparc_override_options): Add niagara2 entry to cpu_default[]
1061         and cpu_table[].  Set align_functions to 32 on Niagara2.  Use
1062         niagara2_costs when PROCESSOR_NIAGARA2.  Handle Niagara2 for
1063         PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
1064         (sparc_initialize_trampoline): Handle niagara2 like niagara.
1065         (sparc64_initialize_trampoline): Likewise.
1066         (sparc_use_sched_lookahead): Likewise.
1067         (sparc_issue_rate): Likewise.
1068         * config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
1069         mcpu=niagara2
1070         * config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
1071         ({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
1072         TARGET_CPU_niagara2.
1073         (PROCESSOR_NIAGARA2): New.
1074         (REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
1075         (BRANCH_COST): Likewise.
1076         * config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
1077         * config/sparc/sol2.h: Likewise.
1078         * config/sparc/niagara2.md: New file.
1079
1080 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1081
1082         * config/mips/mips.c (mips_frame_info): Remove gp_reg_size and
1083         and fp_reg_size.
1084         (mips_compute_frame_info): Remove associated code.
1085         (mips16e_build_save_restore): Check num_fp instead of fp_reg_size.
1086
1087 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1088
1089         * config/mips/mips-protos.h (compute_frame_size): Delete.
1090         * config/mips/mips.h: Update comments.
1091         * config/mips/mips.c (mips_frame_info): Remove initialized.
1092         (compute_frame_size): Rename to...
1093         (mips_compute_frame_info): ...this and make static.  Remove the
1094         SIZE argument and return no value.  Remove the setting of initialized.
1095         Update rest of file accordingly.
1096         (mips_set_return_address): Don't call compute_frame_size.
1097         (mips_can_use_return_insn): Don't check df_regs_ever_live_p (31).
1098         Don't call compute_frame_size.
1099
1100 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1101
1102         * config/mips/mips-protos.h (mips_frame_pointer_required): Declare.
1103         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Use
1104         mips_hard_frame_pointer_required.
1105         (CAN_ELIMINATE): Rely on FRAME_POINTER_REQUIRED to check for
1106         large MIPS16 frames.
1107         * config/mips/mips.c (mips_frame_pointer_required): New function.
1108
1109 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1110
1111         * config/mips/mips.c (mips_frame_info): Add arg_pointer_offset
1112         and hard_frame_pointer_offset.
1113         (mips_debugger_offset): Use hard_frame_pointer_offset.
1114         (mips16e_collect_argument_save_p): Likewise.
1115         (compute_frame_size): Initialize arg_pointer_offset and
1116         hard_frame_pointer_offset.
1117         (mips_initial_elimination_offset): Use them.
1118         (mips_output_function_prologue): Use hard_frame_pointer_offset.
1119         (mips_expand_prologue, mips_expand_epilogue): Likewise.
1120
1121 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1122
1123         * config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
1124         profiling code.
1125         * config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
1126         "unsigned int" rather than "int" and put them with the other
1127         register-related fields.  Put expanded comments above fields
1128         rather than to their right.
1129         (mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
1130         with a NUM_REGS_PTR argument.
1131         (mips16e_save_restore_pattern_p): Update accordingly.
1132         (compute_frame_size): Clarify frame diagram.  Rewrite.
1133
1134 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1135
1136         * config/mips/mips-ftypes.def: New file.
1137         * config/mips/mips.c (MIPS_FTYPE_NAME1, MIPS_FTYPE_NAME2)
1138         (MIPS_FTYPE_NAME3, MIPS_FTYPE_NAME4): New macros.
1139         (mips_function_type): Redefine using mips-ftypes.def.
1140         (dsp_bdesc): Use POINTER rather than PTR in the MIPS_*_FTYPE_* names.
1141         (mips_builtin_vector_type): New function.
1142         (MIPS_ATYPE_VOID, MIPS_ATYPE_INT, MIPS_ATYPE_POINTER, MIPS_ATYPE_SI)
1143         (MIPS_ATYPE_USI, MIPS_ATYPE_DI, MIPS_ATYPE_SF, MIPS_ATYPE_DF)
1144         (MIPS_ATYPE_V2SF, MIPS_ATYPE_V2HI, MIPS_ATYPE_V4QI, MIPS_FTYPE_ATYPES1)
1145         (MIPS_FTYPE_ATYPES2, MIPS_FTYPE_ATYPES3, MIPS_FTYPE_ATYPES4): New
1146         macros.
1147         (mips_build_function_type): New function.
1148         (mips_init_builtins): Use it to create types lazily.
1149
1150 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1151
1152         * config/mips/mips.h (set_volatile): Delete.
1153         * config/mips/mips.c (set_volatile): Delete.
1154         (mips_print_operand_punctuation): New function, split out from
1155         print_operand.  Remove '%{', '%}', '%~', '%&' and '%!'.
1156         Use the same character ordering in the code and the comments.
1157         Use a recursive call to handle '*'.  Abort on unknown characters.
1158         (mips_init_print_operand_punct): New function, split out from
1159         override_options.
1160         (mips_print_int_branch_condition): New function, split out from
1161         print_operand.  Use GET_RTX_NAME.  Use output_operand_lossage
1162         to report unexpected codes.
1163         (mips_print_float_branch_condition): New function, split out from
1164         print_operand.  Use output_operand_lossage to report unexpected codes.
1165         (print_operand): Rework to use a case statement.  Use the
1166         same letter ordering in the code and the comments.  Use
1167         output_operand_lossage to report unexpected codes and
1168         reverse_condition to handle inverted branch conditions.
1169         (override_options): Use mips_init_print_operand_punct.
1170
1171 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1172
1173         * config/mips/mips.h: Move variable declarations to end of file and
1174         enclose them all in #ifndef USED_FOR_TARGET.
1175         * config/mips/mips.c: Reorder functions into more logical groups,
1176         and so that callees appear before callers.  Put the targetm
1177         initializer at the end of the file.  Remove forward static
1178         declarations where possible.
1179         (mips_init_builtins): Add "static" to definition.
1180         (mips_expand_builtin, mips_mode_rep_extended): Likewise.
1181
1182 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1183
1184         * config/mips/mips.c (TARGET_MIN_ANCHOR_OFFSET): Delete.
1185         (TARGET_MAX_ANCHOR_OFFSET): Delete.
1186         (mips_cannot_force_const_mem): Don't check TARGET_HAVE_TLS.
1187         (mips_set_mips16_mode): Initialize min_anchor_offset and
1188         max_anchor_offset directly to constants.
1189
1190 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1191
1192         * config/mips/mips.c: Delete trailing whitespace.
1193
1194 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1195
1196         * config/mips/mips.c (mips_expand_call): Use FAKE_CALL_REGNO.
1197         (mips_avoid_hazard): Allow multiple sets for HAZARD_DELAY,
1198         and pick the first.
1199         * config/mips/mips.md (load_call<mode>): Don't make the unspec
1200         depend on FAKE_CALL_REGNO.  Set FAKE_CALL_REGNO.
1201
1202 2007-10-18  David Daney  <ddaney@avtrex.com>
1203
1204         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use new
1205         reg_offset variable to calculate register locations.
1206
1207 2007-10-18  Richard Guenther  <rguenther@suse.de>
1208
1209         * tree-ssa.c (uid_ssaname_map_eq): New function.
1210         (uid_ssaname_map_has): Likewise.
1211         (init_tree_ssa): Allocate default_defs as uid_ssaname map.
1212         * tree-flow.h (struct gimple_df): Make default_defs a
1213         uid_ssaname map.
1214         * tree-dfa.c (gimple_default_def): Deal with it.
1215         (set_default_def): Likewise.
1216
1217 2007-10-18  Richard Guenther  <rguenther@suse.de>
1218
1219         * tree-flow.h (struct gimple_df): Make referenced_vars
1220         a uid_decl_map.
1221         (uid_decl_map_eq): Declare.
1222         (uid_decl_map_hash): Likewise.
1223         * tree-ssa.c (uid_decl_map_eq): New function.
1224         (uid_decl_map_hash): Likewise.
1225         (init_tree_ssa): Make referenced_vars a uid_decl_map.
1226         * tree-flow-inline.h (first_referenced_var): Deal with
1227         the referenced_vars representation change.
1228         (next_referenced_var): Likewise.
1229         * tree-dfa.c (referenced_var_lookup): Likewise.
1230         (referenced_var_check_and_insert): Likewise.
1231         (remove_referenced_var): Likewise.
1232
1233 2007-10-18  Daniel Jacobowitz  <dan@codesourcery.com>
1234
1235         * config/mips/mips.c (mips_dwarf_register_span): New.
1236         (TARGET_DWARF_REGISTER_SPAN): Define.
1237
1238 2007-10-18  Chen Liqin  <liqin@sunnorth.com.cn>
1239
1240         * config.gcc : update score-*-elf(extra_objs).
1241         * config/score/mac.md : Remove.
1242         * config/score/misc.md : Remove.
1243         * config/score/score7.md : Remove.
1244         * config/score/score-mdaux.h : Remove.
1245         * config/score/score-mdaux.c : Remove.
1246         * config/score/score-version.h : Remove.
1247         * config/score/score-generic.md : New.
1248         * config/score/score3.h : New.
1249         * config/score/score3.c : New.
1250         * config/score/score7.h : New.
1251         * config/score/score7.c : New.
1252         * config/score/mul-div.S : add flush_cache score3 support.
1253         * config/score/elf.h : Fix some typos.
1254         * config/score/score.md : merge score3 and score7 pattern.
1255         * config/score/score.c : use to seperate which target it used.
1256         * config/score/score.h : use to seperate the target macro.
1257         * config/score/score.opt : remove -mmac option , add -mscore3,
1258         -mscore3d and -march OPTION support.
1259  
1260 2007-10-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1261
1262         * cfgexpand.c (expand_stack_vars): Add checking to make sure
1263         that the offset of a variable is not greater than the size
1264         of the paritition.
1265
1266 2007-10-17  Anatoly Sokolov <aesok@post.ru>
1267
1268         * config/avr/avr.c (avr_mcu_types): Add support for atmega48p, 
1269         atmega88p, atmega168p and atmega328p devices.
1270         * config/avr/avr.h (LINK_SPEC): (Ditto.).
1271         (CRT_BINUTILS_SPECS): (Ditto.).
1272         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1273
1274 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1275
1276         * sched-ebb.c: Surround code with '#ifdef INSN_SCHEDULING'.
1277         * ddg.c: Ditto.
1278         * sched-deps.c: Ditto.  Remove nested #ifdef's INSN_SCHEDULING.
1279         * sched-int.h: Surround declarations with '#ifdef INSN_SCHEDULING'.
1280         (print_insn): Move declaration to ...
1281         * rtl.h (print_insn): ... here.
1282
1283 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1284
1285         * config/m68k/m68k.h (m68k_sched_cpu, m68k_sched_attr_opx_type,
1286         m68k_sched_attr_opy_type, m68k_sched_attr_size, m68k_sched_attr_op_mem,
1287         m68k_sched_branch_type): Move declarations to ...
1288         * config/m68/m68k-protos.h: ... here.
1289
1290 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1291
1292         * genattrtab.c (main): Rearrange output of insn-attrtab.c headers.
1293
1294 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
1295
1296         * config/avr/avr.c (avr_mcu_types): Add attiny48.
1297         * config/avr/avr.h (LINK_SPEC): Likewise.
1298         (CRT_BINUTILS_SPECS): Likewsie.
1299         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1300
1301 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
1302
1303         * config/avr/avr.c (avr_mcu_types): Add attiny43u.
1304         * config/avr/avr.h (CRT_BINUTILS_SPECS): Likewsie.
1305         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1306
1307 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
1308
1309         PR middle-end/33794
1310         * reg-stack.c (move_for_stack_reg): Swap input argument of
1311         UNSPEC_TAN insn to the top of the stack.
1312
1313 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
1314
1315         PR target/32961
1316         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLLWI128,
1317         IX86_BUILTIN_PSLLDI128, BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128,
1318         IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
1319         IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
1320         immediate shift value.
1321         * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
1322         _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
1323         _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
1324         Remove macros for !__OPTIMIZE__ case.
1325
1326 2007-10-17  Daniel Berlin  <dberlin@dberlin.org>
1327
1328         * tree-ssa-structalias.c (rewrite_constraints): Don't test for
1329         directness anymore.
1330         (perform_var_substitution): Only DFS from real nodes. Don't test
1331         for directness.
1332         (unite_pointer_equivalences): Fix broken test.
1333
1334 2007-10-17  Alan Modra  <amodra@bigpond.net.au>
1335
1336         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Correct
1337         altivec sp_offset.  Rearrange sp_offset assignments to
1338         correspond to stack adjustments.  Use frame_reg_rtx for
1339         SPE register restores.  Correct SPE stack adjustment.
1340
1341 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1342
1343         * builtins.c (gimplify_va_arg_expr): Use inform for help message.
1344         * toplev.c (check_global_declaration_1): Use appropriate warning
1345         option instead of unnamed warning.
1346         * stor-layout.c (layout_decl): Likewise.
1347         * c-typeck.c (build_conditional_expr): Likewise.
1348         (build_compound_expr): Fix wrong comment.
1349         (build_binary_op): Use appropriate warning option instead of
1350         unnamed warning.
1351         * cfgexpand.c (tree_expand_cfg): Likewise.
1352         * tree-optimize.c (tree_rest_of_compilation): Likewise.
1353         * tree-cfg.c (remove_useless_stmts_warn_notreached): Likewise.
1354         (execute_warn_function_return): Likewise.
1355         * stmt.c (warn_if_unused_value): Likewise.
1356
1357 2007-10-16  Eric B. Weddington  <eweddington@cso.atmel.com>
1358
1359         * config/avr/avr.c (avr_mcu_types): Add at90pwm216, at90pwm316.
1360         * config/avr/avr.h (LINK_SPEC): Likewise and remove regex for
1361         similar devices.
1362         (CRT_BINUTILS_SPECS): Likewsie.
1363         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1364
1365 2007-10-16  Amruth Laxman  <amruth.laxman@nsn.com>
1366
1367         PR target/33594
1368         * config/sparc/sparc.h (LOCAL_ALIGNMENT): Define.
1369
1370 2007-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
1371
1372         * dce.c (init_dce): Only initialize the obstacks for the fast pass.
1373         (fini_dce): Only release them for the fast pass.
1374         (end_ud_dce): Delete.
1375         (rest_of_handle_ud_dce): Do not modify df_in_progress.
1376         Call fini_dce instead of end_ud_dce.
1377         (rest_of_handle_fast_dce): Do not modify df_in_progress.
1378         (run_fast_df_dce): Reset df_in_progress to false on exit.
1379
1380 2007-10-16  Paolo Bonzini  <bonzini@gnu.org>
1381             Maxim Kuvyrkov  <maxim@codesourcery.com>
1382
1383         * target.h (unspec_may_trap_p): New target hook.
1384         * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro.
1385         * targhooks.c (default_unspec_may_trap_p): Default implementation of
1386         the hook.
1387         * targhooks.h (default_unspec_may_trap_p): Declare it.
1388         * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook.
1389         * rtlanal.c (may_trap_p_1): Use new hook.  Make global.
1390         * rtl.h (may_trap_p_1): Declare.
1391         
1392         * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to
1393         override default hook implementation.
1394         (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the
1395         hook.
1396
1397 2007-10-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1398
1399         * doc/invoke.texi (Wextra): Move it just after Wall, list the
1400         options enabled by Wextra and mention Wuninitialized.
1401         
1402 2007-10-15  Nigel Stephens  <nigel@mips.com>
1403
1404         * config/mips/mips.h (LOCAL_ALIGNMENT): Define.
1405
1406 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
1407
1408         PR tree-optimization/33136
1409         * opts.c (decode_options): Don't enable flag_ipa_type_escape.
1410
1411 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
1412
1413         PR tree-optimization/33735
1414         PR tree-optimization/33572
1415         * tree-inline.c (update_ssa_across_abnormal_edges): Revert
1416         2007-10-09's change.
1417         * except.c (duplicate_eh_regions): Don't look for prev_try
1418         beyond ERT_ALLOWED_EXCEPTIONS with an empty list.
1419
1420 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
1421
1422         PR middle-end/33706
1423         * tree-inline.c (copy_bb): Use bsi_replace to replace a
1424         __builtin_va_arg_pack-containing call stmt.
1425
1426 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
1427
1428         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
1429         program flag.
1430
1431 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
1432
1433         PR tree-optimization/33619
1434         * tree-ssa-ter.c (is_replaceable_p): Return false for all
1435         calls.
1436
1437 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
1438
1439         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
1440
1441 2007-10-15  Richard Guenther  <rguenther@suse.de>
1442
1443         * fold-const.c (extract_array_ref): Remove.
1444         (fold_comparison): Handle POINTER_PLUS_EXPR with the
1445         generic address expression comparison folding.  Remove
1446         the folding that used extract_array_ref.
1447
1448 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
1449
1450         PR target/33133
1451         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
1452         speculation type of insn can be changed before trying to do that.
1453
1454 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
1455
1456         * dse.c (struct insn_info): Add 'frame_read' field.
1457         (scan_insn): For the call to a const function, set frame_read if
1458         reload has been run.
1459         If the insn reads the frame, kill the frame related stores.
1460         (scan_reads_nospill): Likewise.
1461
1462 2007-10-14  Jason Merrill  <jason@redhat.com>
1463
1464         * tree-eh.c (optimize_double_finally): Don't assume that the
1465         cleanup we're duplicating is only one statement.
1466
1467 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
1468
1469         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
1470         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
1471         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
1472         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
1473         tree-vect-transform.c: Fix comment typos.
1474         * doc/extend.texi: Fix a typo.
1475
1476         * c-common.h: Remove the prototype for c_expand_body.
1477         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
1478         * tree.h: Remove the prototype for fold_build_call_expr.
1479
1480         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
1481         Remove.
1482         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
1483
1484 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
1485
1486         * config/rs6000/aix53.h: New file.
1487         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
1488         (TARGET_ALTIVEC_ABI): Same.
1489         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
1490         (TARGET_ALTIVEC_ABI): Delete.
1491         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
1492         stanza defaulting to aix5.3.
1493
1494 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
1495
1496         * config/i386/i386.md (SI_REG, DI_REG): New constants.
1497         (strmov): Use defined constants.
1498         (cmpstrnsi): Likewise.
1499         * config/i386/i386.c (decide_alg): Use defined constants.
1500         (ix86_expand_strlen): Likewise.
1501
1502 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
1503
1504         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
1505         * var-tracking.c (micro_operation_def): Update comment on u.loc.
1506         (mode_for_reg_attrs, var_lowpart): New functions.
1507         (add_uses): Consider recording a lowpart of LOC for MO_USE.
1508         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
1509         or copy is known, set LOC to the SET that performs the set, instead
1510         of the destination.
1511         (find_src_status, find_src_set_src): Remove LOC parameter.
1512         Replace INSN with the source value.
1513         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
1514         handling MO_SET and MO_COPY.  Update the calls to find_src_status
1515         and find_src_set_src.
1516
1517 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
1518
1519         PR 11001
1520         * config/i386/i386.md (strmov): Check for esi and edi usage.
1521         * config/i386/i386.c (decide_alg): Check whether we can use a
1522         rep prefix and adjust algorithm choice accordingly.
1523         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
1524
1525 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1526
1527         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
1528
1529 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
1530
1531         * global.c (build_insn_chain): Formatting fixes.
1532
1533 2007-10-12  Richard Guenther <rguenther@suse.de>
1534
1535         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
1536         combining both operands require either both have single uses
1537         or combining to a constant.
1538
1539 2007-10-12  Richard Guenther  <rguenther@suse.de>
1540
1541         PR middle-end/26198
1542         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
1543         a rhs with side-effects or which is a load.
1544         (forward_propagate_into_cond): Also try combining both operands.
1545
1546 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
1547
1548         PR tree-optimization/33742
1549         * tree-vect-transform.c (vectorizable_operation): Return false
1550         if get_vectype_for_scalar_type for scalar_dest can't be determined.
1551         (vectorizable_call): Same for rhs_type and lhs_type.
1552
1553 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
1554
1555         PR tree-optimization/33645
1556         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
1557         pass it to walk_tree.
1558         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
1559         When calling set_is_used on a VAR_DECL, if data is not NULL and
1560         its DECL_UID is in the bitmap, call mark_all_vars_used on its
1561         DECL_INITIAL after clearing the bit in bitmap.
1562         (remove_unused_locals): Adjust mark_all_vars_used callers.
1563         Instead of removing unused global vars from unexpanded_var_list
1564         immediately record them in bitmap, call mark_all_vars_used on
1565         all used global vars from unexpanded_var_list and only purge
1566         global vars that weren't found used even during that step.
1567  
1568 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1569
1570         * gthr-posix.h (__gthread_active_init): Create detached instead of
1571         joinable thread when testing whether threads are active on hppa-hpux.
1572         * gthr-posix95.h (__gthread_active_init): Likewise.
1573
1574 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1575
1576         PR middle-end/33676
1577         * global.c (build_insn_chain): Include insn that occur between
1578         basic blocks.
1579         
1580 2007-10-11  Tom Tromey  <tromey@redhat.com>
1581
1582         * gengtype-yacc.y: Delete.
1583
1584 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
1585
1586         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
1587         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
1588         function_value_32, function_value_64, function_value_ms_64,
1589         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
1590         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
1591         Use new constants.
1592
1593 2007-10-11  Richard Guenther  <rguenther@suse.de>
1594
1595         * gcse.c (hash_scan_set): If the next nonnote insn is in
1596         a different basic block insert the set.
1597
1598 2007-10-11  Richard Guenther  <rguenther@suse.de>
1599
1600         PR middle-end/33724
1601         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
1602         (verify_gimple_expr): Use it to verify pointer-to types for
1603         ADDR_EXPRs.
1604
1605 2007-10-11  Richard Guenther  <rguenther@suse.de>
1606
1607         PR c/33726
1608         * c-typeck.c (build_array_ref): Do not strip qualifiers from
1609         the array element type.
1610
1611 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
1612
1613         PR rtl-optimization/33638
1614         * dse.c (struct insn_info): Remove 'stack_read' field,
1615         add 'stack_pointer_based' field.
1616         (record_store): For a store with non-constant base, record
1617         whether it is stack pointer based.
1618         (scan_insn): For the call to a const function, remove stack
1619         pointer based stores from the list of local active stores.
1620         (scan_reads_nospill): Delete code dealing with const functions.
1621
1622 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
1623
1624         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
1625         to HOST_WIDE_INT.
1626         (conflict_p, set_conflict, set_conflicts): Likewise.
1627         * global.c (global_alloc): Likewise.
1628         * ra.h: Update prototypes.
1629
1630 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
1631
1632         * opth-gen.awk: Fixed generation of comment stating the origin
1633           of options.h
1634
1635 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
1636
1637         Revert:
1638         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
1639         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
1640         and '%}', respectively.
1641
1642         Revert:
1643         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
1644         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
1645         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
1646         and '}'.
1647         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
1648         meant to be output.
1649
1650         Revert:
1651         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
1652         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
1653         syntax for ASSEMBLER_DIALECT.
1654         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
1655
1656 2007-10-10  Revital Eres  <eres@il.ibm.com>
1657
1658         * modulo-sched.c (check_nodes_order): Dump the final order of
1659         the nodes.
1660         (get_sched_window): Add dump info.
1661         (calculate_order_params): Dump order params of the nodes.
1662
1663 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
1664
1665         PR middle-end/33669
1666         * ra-conflict.c (record_one_conflict_between_regnos, 
1667         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
1668         (global_conflicts): Enhanced incorrect check.
1669         
1670 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
1671
1672         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
1673         if flag_exceptions is not set.
1674         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
1675         assemble_name rather than incorrectly emulating it.
1676
1677         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
1678         friends are removed from G++.
1679
1680 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1681
1682         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
1683         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
1684         enabling them is redundant. Don't check two times for
1685         c_dialect_cxx.
1686         
1687 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
1688
1689         * ra-conflict.c (record_one_conflict_between_regnos): Revert
1690         the last change.
1691         (set_conflicts_for_earlyclobber): Likewise.
1692         (global_conflicts): Likewise.
1693
1694 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
1695
1696         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
1697         and '%}', respectively.
1698
1699 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
1700
1701         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
1702         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
1703         and '}'.
1704         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
1705         meant to be output.
1706
1707 2007-10-09  Richard Guenther  <rguenther@suse.de>
1708
1709         PR middle-end/33692
1710         * gimplify.c (canonicalize_component_ref): Honor qualifiers
1711         of referenced structure and component.
1712
1713 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
1714
1715         PR middle-end/33669
1716         * ra-conflict.c (record_one_conflict_between_regnos,
1717         set_conflicts_for_earlyclobber, global_conflicts): Improved
1718         logging.
1719         (global_conflicts): Removed incorrect check.
1720
1721 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
1722
1723         PR tree-optimization/33615
1724         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
1725         if the statement might throw.  Fix formatting.
1726
1727 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
1728
1729         PR tree-optimization/33615
1730         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
1731         if the rhs might throw.
1732
1733 2007-10-09  Jan Hubicka  <jh@suse.cz>
1734
1735         * invoke.texi (align-threshold, align-loop-iterations): Document.
1736         * final.c: Include cfgloop.h, params.h
1737         (compute_alignments): Dump decisions and compare them with loop
1738         structure; honor given parameters.
1739         (pass_compute_alignments): New dump file.
1740         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
1741         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
1742
1743 2007-10-09  James E. Wilson  <wilson@specifix.com>
1744
1745         PR tree-optimization/33655
1746         PR middle-end/22156
1747         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
1748         convert it to bitsizetype before size_binop call.
1749
1750 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
1751
1752         PR tree-optimization/33572
1753         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
1754         the absence of a corresponding edge from the exit block.
1755
1756 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
1757
1758         PR middle-end/22156
1759         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
1760         bit-field layout.
1761         (sra_build_assignment): Likewise.  Set up mask depending on
1762         precision, not type.
1763         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
1764         computing bit masks.
1765         (sra_build_elt_assignment): Don't view-convert from signed to
1766         unsigned.
1767         (sra_explode_bitfield_assignment): Use bit-field type if
1768         possible.  Use BYTES_BIG_ENDIAN.
1769
1770 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
1771
1772         PR middle-end/22156
1773         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
1774         the original stmt can throw.
1775         (sra_build_bf_assignment): Fix type mismatch when applying negated
1776         mask.
1777
1778 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
1779
1780         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
1781         '#pragma mark' to be executed at preprocessing time.
1782
1783 2007-10-08  Ollie Wild  <aaw@google.com>
1784
1785         * varasm.c (compare_constant): Removed call to
1786         lang_hooks.expand_constant.
1787         (copy_constants): Removed call to lang_hooks.expand_constant.
1788         (compute_reloc_for_constant): Removed call to
1789         lang_hooks.expand_constant.
1790         (output_addressed_constants): Removed call to
1791         lang_hooks.expand_constant.
1792         (constructor_static_from_elts_p): Removed call to
1793         lang_hooks.expand_constant.
1794         (output_constant): Removed calls to lang_hooks.expand_constant.
1795         * langhooks.h (struct lang_hooks): Removed field expand_constant.
1796         * langhooks-def.h (lhd_return_tree): Removed.
1797         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1798         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
1799         * langhooks.c (lhd_return_tree): Removed.
1800
1801 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
1802
1803         * combine.c (setup_incoming_promotions): Ensure that
1804         arguments that have not undergone mode promotions do not
1805         incorrectly get marked as being sign- or zero-extended.
1806
1807 2007-10-08  Richard Guenther  <rguenther@suse.de>
1808
1809         PR middle-end/33693
1810         PR middle-end/33695
1811         PR middle-end/33697
1812         * fold-const.c (fold_binary): Use correct types in folding
1813         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
1814         and building of RROTATE_EXPR.
1815
1816 2007-10-08  Richard Guenther  <rguenther@suse.de>
1817
1818         PR middle-end/33691
1819         PR middle-end/33694
1820         PR middle-end/33696
1821         * fold-const.c (fold_binary): Use the correct types when
1822         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
1823         (fold_binary): Use the correct types when folding
1824         (-A) - B to (-B) - A.
1825         (fold_unary): Use the correct types when folding ~(X).
1826
1827 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1828
1829         * doc/invoke.texi (Wall): fix formatting issues.
1830         
1831 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
1832
1833         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
1834         truncated shift counts.
1835
1836 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
1837
1838         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
1839         syntax for ASSEMBLER_DIALECT.
1840         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
1841
1842 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
1843             Nathan Froyd  <froydnj@codesourcery.com>
1844
1845         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
1846         when determining whether to record INCOMING_RETURN_ADDR_RTX.
1847
1848 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
1849
1850         Revert:
1851         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
1852
1853         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
1854         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
1855         the function, temporarily point the debug interface to the null one.
1856
1857 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
1858
1859         PR tree-optimization/33655
1860         PR middle-end/22156
1861         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
1862         elements.
1863
1864 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
1865
1866         PR tree-optimization/33572
1867         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
1868         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
1869         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
1870         return PHI node.
1871         (copy_edges_for_bb): Handle nonlocal label edges.
1872         (make_nonlocal_label_edges): Deleted.
1873         (optimize_inline_calls): Don't call it.
1874
1875 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
1876
1877         * gthr-single.h: Revert last change.
1878
1879 2007-10-05  Michael Matz  <matz@suse.de>
1880
1881         PR middle-end/33667
1882         * lower-subreg.c (decompose_multiword_subregs): Use
1883         validate_unshare_change().
1884
1885 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
1886
1887         * ra-conflict.c: Include "sparseset.h".
1888         (conflicts): Change to HOST_WIDEST_FAST_INT.
1889         (allocnos_live): Redefine variable as a sparseset.
1890         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE):
1891         Delete macros.
1892         (allocno_row_words): Removed global variable.
1893         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
1894         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
1895         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
1896         (record_one_conflict_between_regnos): Cache allocno values and reuse.
1897         Use set_conflict_p.
1898         (record_one_conflict): Update uses of allocnos_live to use
1899         the sparseset routines.  Use set_conflicts_p.
1900         (mark_reg_store): Likewise.
1901         (set_reg_in_live): Likewise.
1902         (global_conflicts): Update uses of allocnos_live.
1903         Use the new adjacency list to visit an allocno's neighbors
1904         rather than iterating over all possible allocnos.
1905         Call set_conflicts_p to setup conflicts rather than adding
1906         them manually.
1907         * global.c: Comments updated.  
1908         (CONFLICTP): Delete define.
1909         (regno_compare): New function.  Add prototype.
1910         (global_alloc): Sort the allocno to regno mapping according to
1911         which basic blocks the regnos are referenced in.  Modify the
1912         conflict bit matrix to a compressed triangular bitmatrix.
1913         Only allocate the conflict bit matrix and adjacency lists if
1914         we are actually going to allocate something.
1915         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
1916         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
1917         allocno's neighbors rather than iterating over all possible allocnos.
1918         (mirror_conflicts): Removed function.
1919         (dump_conflicts): Iterate over regnos rather than allocnos so
1920         that all dump output will be sorted by regno number.
1921         Use the FOR_EACH_CONFLICT macro.
1922         * ra.h: Comments updated.
1923         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
1924         (partial_bitnum, max_bitnum, adjacency, adjacency_pool):
1925         Add prototypes.
1926         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
1927         (adjacency_list_d, adjacency_iterator_d): New types.
1928         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
1929         adjacency_iter_next, regno_basic_block): New static inline functions.
1930         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
1931         (conflict_p): Add function prototype.
1932         * sparseset.h, sparseset.c: New files.
1933         * Makefile.in (OBJS-common): Add sparseset.o.
1934         (sparseset.o): New rule.
1935
1936 2007-10-05  Richard Guenther  <rguenther@suse.de>
1937
1938         PR middle-end/33666
1939         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
1940         to (long long)ptr.
1941
1942 2007-10-05  Michael Matz  <matz@suse.de>
1943
1944         PR inline-asm/33600
1945         * function.c (match_asm_constraints_1): Check for input
1946         being used in the outputs.
1947
1948 2007-10-05  Richard Guenther  <rguenther@suse.de>
1949
1950         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
1951
1952 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
1953
1954         PR target/33635
1955         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
1956         subset checks.  Make the cost of FPR -> FPR moves depend on
1957         mips_mode_ok_for_mov_fmt_p.
1958
1959 2007-10-04  Doug Kwan  <dougkwan@google.com>
1960
1961         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
1962         __gthread_cond_wait_recursive): Add to extend interface for POSIX
1963         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
1964         support of conditional variables.
1965         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
1966         __gthread_cond_wait_recursive): Add to extend interface for POSIX
1967         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
1968         support of conditional variables.
1969         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
1970         __gthread_cond_wait_recursive): Add to extend interface for POSIX
1971         conditional variables.
1972         * gthr.h: Update comments to document new interface.
1973
1974 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
1975
1976         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
1977         DECL_IGNORED_P.
1978
1979 2007-10-04  Anatoly Sokolov <aesok@post.ru>
1980
1981         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
1982
1983 2007-10-04  Richard Guenther  <rguenther@suse.de>
1984
1985         PR middle-end/33641
1986         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
1987         does not need to be of INTEGER_TYPE.
1988         (verify_gimple_2): New function split out from ...
1989         (verify_gimple_1): ... here.  ICE if there was an error during
1990         verification.
1991
1992 2007-10-04  Michael Matz  <matz@suse.de>
1993
1994         PR rtl-optimization/33653
1995         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
1996         * dse.c (scan_insn): Same.
1997
1998 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
1999
2000         * config.gcc: Remove USE_GAS for m68k targets.
2001
2002 2007-10-04  Richard Guenther  <rguenther@suse.de>
2003
2004         PR tree-optimization/33627
2005         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
2006         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
2007         split out from ...
2008         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
2009         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
2010
2011 2007-10-04  Anatoly Sokolov <aesok@post.ru>
2012
2013         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
2014         commands_in_epilogues): Remove variables.
2015         (avr_file_start): Remove unneded initializations of commands_in_file,
2016         commands_in_prologues and commands_in_epilogues variables.
2017         (avr_file_end): Remove dead code.
2018
2019 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
2020
2021         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
2022         MOTOROLA is to true.
2023
2024 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
2025
2026         PR target/33635
2027         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
2028         (mips_split_doubleword_move): ...this.
2029         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
2030         use natural endianness for multi-format FPR values.
2031         (mips_split_64bit_move): Rename to...
2032         (mips_split_doubleword_move): ...this and extend to 64-bit words.
2033         Use move_doubleword_fpr* patterns for moves involving FPRs.
2034         (mips_save_reg): Update the call to mips_split_64bit_move.
2035         (mips_secondary_reload_class): Return NO_REGS for any reload of a
2036         nonzero constant into an FPR if the constant can be forced to memory.
2037         * config/mips/mips.md: Update the splitter calls to
2038         mips_split_64bit_move.
2039         (UNSPEC_LOAD_DF_LOW): Rename to...
2040         (UNSPEC_LOAD_LOW): ...this.
2041         (UNSPEC_LOAD_DF_HIGH): Rename to...
2042         (UNSPEC_LOAD_HIGH): ...this.
2043         (UNSPEC_STORE_DF_HIGH): Rename to...
2044         (UNSPEC_STORE_WORD): ...this.
2045         (SPLITF): New mode iterator.
2046         (HALFMODE): New mode attribute.
2047         (movtf): New expander.
2048         (*movtf_internal): New define_insn_and_split.
2049         (move_doubleword_fpr<mode>): New expander.
2050         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
2051         with...
2052         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
2053         (mfhc1<mode>): ...these more general patterns.
2054
2055 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
2056
2057         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
2058
2059 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
2060
2061         * gcse.c (hash_scan_set): Insert set in insn before note at
2062         the end of basic block.
2063
2064 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
2065
2066         PR tree-optimization/33576
2067         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
2068         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
2069         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
2070         (remove_iv): Declared.
2071         * lambda-code.c (remove_iv): Not static.
2072         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
2073         Don't remove ivs there, save ivs in the buffer.
2074
2075 2007-10-03  Jason Merrill  <jason@redhat.com>
2076
2077         PR c++/15764
2078         * tree-eh.c (same_handler_p): New fn.
2079         (optimize_double_finally): New fn.
2080         (refactor_eh_r): New fn.
2081         (refactor_eh): New fn.
2082         (pass_refactor_eh): New pass.
2083         * tree-pass.h: Declare it.
2084         * passes.c (init_optimization_passes): Add it.
2085
2086 2007-10-03  Doug Kwan  <dougkwan@google.com>
2087         Richard Guenther  <rguenther@suse.de>
2088
2089         PR debug/31899
2090         * dwarf2out.c (reference_to_unused): Disable sanity checking,
2091         be conservative instead.
2092
2093 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2094
2095         PR fortran/26682
2096         * doc/invoke.texi (-fwhole-program): Document that Fortran
2097         doesn't support this option.
2098
2099 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
2100
2101         PR middle-end/33617
2102         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
2103         expand_expr.
2104
2105 2007-10-02  David Daney  <ddaney@avtrex.com>
2106
2107         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
2108         against constant zero.
2109         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
2110         operand.
2111
2112 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
2113
2114         * ra-conflict.c: New file.
2115         * ra.h: New file.
2116         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
2117         usage to DF_LIVE usage.
2118         (reload): Remove reference to df_get_live_top.
2119         * rtlanal.c (subreg_nregs_with_regno): New function.  
2120         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
2121         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
2122         (df_has_eh_preds): Removed.
2123         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
2124         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
2125         bb_has_eh_pred.
2126         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
2127         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
2128         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
2129         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
2130         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
2131         (global_alloc): Turn off rescanning insns after call to
2132         global_conflicts and added call to set_preferences.
2133         (global_conflicts): Moved to ra-alloc.c.
2134         (set_preferences_1, set_preferences): New function.
2135         (mirror_conflicts): Changed types for various variables.
2136         (mark_elimination): Change DF_RA_LIVE
2137         usage to DF_LIVE usage.
2138         (build_insn_chain): Rewritten from scratch and made local.
2139         (print_insn_chain, print_insn_chains): New functions.
2140         (dump_conflicts): Do not print conflicts for fixed_regs.
2141         (rest_of_handle_global_alloc): Turn off insn rescanning.
2142         * hard-reg-set.h: Fixed comment.
2143         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
2144         usage to DF_LIVE usage and delete refs to TOP sets.
2145         (block_alloc): Mark regs as live if they are in the artificial
2146         defs at top of block.
2147         (find_stack_regs): New function.
2148         (rest_of_handle_local_alloc): Changed urec problem to live
2149         problem and do not turn off df rescanning.
2150         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
2151         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
2152         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
2153         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
2154         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
2155         fields in df_ref_flags.  The rest have been renumbered.  
2156         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
2157         at -O1.
2158         * rtl.h (subreg_nregs_with_regno): New function.
2159         * df-problems.c: (df_get_live_out, df_get_live_in,
2160         df_get_live_top): Removed reference to DF_RA_LIVE.
2161         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
2162         df_live_alloc, df_live_reset, df_live_local_finalize,
2163         df_live_free): Make top set only if different from in set.
2164         (df_lr_top_dump, df_live_top_dump): Only print top set if
2165         different from in set.
2166         (df_lr_bb_local_compute): Removed unnecessary check.
2167         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
2168         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
2169         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
2170         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
2171         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
2172         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
2173         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
2174         df_urec_add_problem): Removed.
2175         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
2176         bb_has_eh_pred. 
2177         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
2178         * basic_block.h (bb_has_abnormal_pred): New function.
2179         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
2180         usage to DF_LIVE usage.
2181         
2182 2007-10-02  Revital Eres  <eres@il.ibm.com>
2183
2184         * config/rs6000/predicates.md (easy_vector_constant): Return false
2185         for 750CL paired vectors.
2186         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
2187         vector constant.
2188         (vec_initv2sf): Add new description.
2189         (vconcatsf): Likewise.
2190         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
2191         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
2192
2193 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
2194
2195         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
2196         sinking the last stmt in a BB.
2197
2198 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
2199
2200         PR middle-end/22156
2201         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
2202         (sra_hash_tree): Handle BIT_FIELD_REFs.
2203         (sra_elt_hash): Don't hash bitfld blocks.
2204         (sra_elt_eq): Skip them in parent compares as well.  Handle
2205         BIT_FIELD_REFs.
2206         (build_element_name_1): Handle BIT_FIELD_REFs.
2207         (instantiate_element): Propagate nowarn from parents.  Create
2208         BIT_FIELD_REF for variables that are widened by scalarization.
2209         Gimple-zero-initialize all bit-field variables that are not
2210         part of parameters that are going to be scalarized on entry.
2211         (instantiate_missing_elements_1): Return the sra_elt.
2212         (canon_type_for_field): New.
2213         (try_instantiate_multiple_fields): New.  Infer widest possible
2214         access mode from decl or member type, but clip it at word
2215         size, and only widen it if a field crosses an alignment
2216         boundary.
2217         (instantiate_missing_elements): Use them.
2218         (generate_one_element_ref): Handle BIT_FIELD_REFs.
2219         (scalar_bitfield_p): New.
2220         (sra_build_assignment): Optimize assignments from scalarizable
2221         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
2222         counts.
2223         (REPLDUP): New.
2224         (sra_build_bf_assignment): New.  Optimize assignments to
2225         scalarizable BIT_FIELD_REFs.
2226         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
2227         assignments to full variables.
2228         (generate_copy_inout): Use the new macros and functions.
2229         (generate_element_copy): Likewise.  Handle bitfld differences.
2230         (generate_element_zero): Don't recurse for blocks.  Use
2231         sra_build_elt_assignment.
2232         (generate_one_element_init): Take elt instead of var.  Use
2233         sra_build_elt_assignment.
2234         (generate_element_init_1): Adjust.
2235         (bitfield_overlap_info): New struct.
2236         (bitfield_overlaps_p): New.
2237         (sra_explode_bitfield_assignment): New.  Adjust widened
2238         variables to account for endianness.
2239         (sra_sync_for_bitfield_assignment): New.
2240         (scalarize_use): Re-expand assignment to/from scalarized
2241         BIT_FIELD_REFs.  Explode or sync needed members for
2242         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
2243         (scalarize_copy): Use REPLDUP.
2244         (scalarize_ldst): Move assert before dereference.  Adjust EH
2245         handling.
2246         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2247
2248 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
2249
2250         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
2251         Rename CR_* constants to CMP_*.  Fix spacing.
2252
2253 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2254
2255         PR other/33585
2256         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
2257         to be processed with the special script doc/install.texi2html.
2258         
2259 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2260
2261         * doc/invoke.texi (Wall): List the options enabled by Wall.
2262         (Wstrict-aliasing): Add missing @option.
2263         
2264 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
2265
2266         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
2267         rather than gen_lowpart to change a register from DImode to DFmode.
2268         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
2269         both FROM and TO are integer modes that are no bigger than 4 bytes.
2270         (mips_mode_ok_for_mov_fmt_p): New function.
2271         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
2272         (mips_secondary_reload_class): Tweak formatting and comments.
2273         Use reg_class_subset_p instead of direct comparisons with
2274         classes.  Only allow direct FPR<->FPR moves for modes that
2275         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
2276         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
2277         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
2278         (*movdi_64bit): Likewise.
2279         (*movsi_internal): Likewise.
2280         (*movhi_internal): Likewise.
2281         (*movqi_internal): Likewise.
2282
2283 2007-09-30  Diego Novillo  <dnovillo@google.com>
2284
2285         PR 33593
2286         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
2287         throw an exception.
2288
2289 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
2290
2291         PR tree-optimization/33597
2292         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
2293         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
2294
2295 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
2296
2297         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
2298         instead of variants of (!reload_in_progress && !reload_completed).
2299         (x86_expand_vector_move): Ditto.
2300
2301 2007-09-28  Ollie Wild  <aaw@google.com>
2302
2303         Revert
2304         2007-09-27  Ollie Wild  <aaw@google.com>
2305
2306         * varasm.c (compare_constant): Removed call to
2307         lang_hooks.expand_constant.
2308         (copy_constants): Removed call to lang_hooks.expand_constant.
2309         (compute_reloc_for_constant): Removed call to
2310         lang_hooks.expand_constant.
2311         (output_addressed_constants): Removed call to
2312         lang_hooks.expand_constant.
2313         (constructor_static_from_elts_p): Removed call to
2314         lang_hooks.expand_constant.
2315         (output_constant): Removed calls to lang_hooks.expand_constant.
2316         * langhooks.h (struct lang_hooks): Removed field expand_constant.
2317         * langhooks-def.h (lhd_return_tree): Removed.
2318         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2319         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
2320         * langhooks.c (lhd_return_tree): Removed.
2321
2322 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2323
2324         PR target/33347
2325         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
2326         argument to gen_selb.
2327
2328 2007-09-28  Chao-ying Fu  <fu@mips.com>
2329
2330         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
2331         * doc/libgcc.texi (Fixed-point fractional library routines):
2332         Fix typos for neg and cmp functions.
2333
2334 2007-09-28  Michael Matz  <matz@suse.de>
2335
2336         PR rtl-optimization/33552
2337         * function.c (match_asm_constraints_1): Check for overlap in
2338         inputs and replace all occurences.
2339
2340 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
2341
2342         * config/mips/mips.c (override_options): Fix comment typo.
2343
2344 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
2345
2346         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
2347         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
2348         * config/bfin/t-bfin-linux (crti.o): Don't build.
2349         (crtn.o): Likewise.
2350         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
2351         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
2352         (crtn.o): Likewise.
2353         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
2354
2355 2007-09-27  Ollie Wild  <aaw@google.com>
2356
2357         * varasm.c (compare_constant): Removed call to
2358         lang_hooks.expand_constant.
2359         (copy_constants): Removed call to lang_hooks.expand_constant.
2360         (compute_reloc_for_constant): Removed call to
2361         lang_hooks.expand_constant.
2362         (output_addressed_constants): Removed call to
2363         lang_hooks.expand_constant.
2364         (constructor_static_from_elts_p): Removed call to
2365         lang_hooks.expand_constant.
2366         (output_constant): Removed calls to lang_hooks.expand_constant.
2367         * langhooks.h (struct lang_hooks): Removed field expand_constant.
2368         * langhooks-def.h (lhd_return_tree): Removed.
2369         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2370         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
2371         * langhooks.c (lhd_return_tree): Removed.
2372
2373 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2374
2375         PR middle-end/33436
2376         * expr.c (emit_group_load_1): Split constant double when destination
2377         length is half source length.
2378
2379 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
2380
2381         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
2382         (mips_cpu_info): Add tune_flags.
2383         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
2384         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
2385         Remove end marker.
2386         (override_options): Remove deprecation code.  Use branch-likely
2387         instructions for optimize_size or if the tuning flags do not
2388         suggest otherwise.  Tweak warning.
2389         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
2390
2391 2007-09-27  Matthias Klose  <doko@ubuntu.com>
2392
2393         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
2394         multilib osdirname if it exists.
2395         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
2396
2397 2007-09-27  Ian Lance Taylor  <iant@google.com>
2398
2399         PR tree-optimization/33565
2400         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
2401         assignments of comparisons.
2402         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
2403         parameter.  Change caller.  Defer overflow warnings around call to
2404         fold_binary.
2405         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
2406         TREE_NO_WARNING is set on the statement.
2407         * tree-ssa-forwprop.c
2408         (tree_ssa_forward_propagate_single_use_vars): Don't test
2409         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
2410         * tree-cfg.c (fold_cond_expr_cond): Likewise.
2411
2412 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
2413
2414         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
2415         reduce offset by units of 0x10000 for SPE vector modes or modes
2416         used with E500 double instructions.
2417
2418 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
2419
2420         * simplify-rtx.c (comparison_result): New.
2421         (simplify_const_relational_operation): Use it instead of the five
2422         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
2423         Improve bounds-checking optimizations; remove subsumed POPCOUNT
2424         optimizations.  Extract nonzero_address_p optimizations into a
2425         separate "if" together with optimizations where op1 is const0_rtx.
2426         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
2427         floating-point arguments too when appropriate.  Hoist test for ABS
2428         outside the final switch statement.
2429         * cse.c (fold_rtx): Don't look for an IOR equivalent of
2430         folded_arg0 if we found a constant equivalent.  Remove
2431         transformations done in simplify-rtx.c for "op0 RELOP op0".
2432
2433 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
2434
2435         * builtins.c (expand_builtin, expand_builtin_object_size,
2436         expand_builtin_memory_chk, maybe_emit_chk_warning,
2437         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
2438         for diagnostics.
2439         * expr.c (expand_expr_real_1): Likewise.
2440         * langhooks-def.h (struct diagnostic_info): Add forward decl.
2441         (lhd_print_error_function): Add third argument.
2442         * langhooks.h (struct diagnostic_info): Add forward decl.
2443         (struct lang_hooks): Add third argument to print_error_function.
2444         * diagnostic.h (diagnostic_info): Add abstract_origin field.
2445         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
2446         second argument.
2447         (diagnostic_report_current_function): Likewise.
2448         * toplev.c (announce_function): Pass NULL as second argument to
2449         diagnostic_set_last_function.
2450         * diagnostic.c (diagnostic_report_current_function): Add second
2451         argument, pass it as third argument to lang_hooks.print_error_function.
2452         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
2453         to diagnostic_report_current_function.
2454         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
2455         and message.abstract_origin.
2456         (verbatim): Initialize abstract_origin.
2457         * pretty-print.h (text_info): Add abstract_origin field.
2458         * pretty-print.c (pp_base_format): Handle %K.
2459         * langhooks.c (lhd_print_error_function): Add third argument.  If
2460         diagnostic->abstract_origin, print virtual backtrace.
2461         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
2462         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
2463         (init_dynamic_diag_info): Likewise.
2464
2465 2007-09-26  David Daney  <ddaney@avtrex.com>
2466
2467         PR target/33479
2468         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
2469         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
2470         sync_old_nand<mode>, sync_new_nand<mode>,
2471         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
2472         Update length attributes.
2473         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
2474         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
2475         length attributes.
2476         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
2477         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
2478         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
2479         post-loop sync.
2480
2481 2007-09-26  Richard Guenther  <rguenther@suse.de>
2482
2483         PR tree-optimization/33563
2484         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
2485         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
2486         aggregate stores.
2487         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
2488         get_use_of_stmt_lhs.
2489
2490 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
2491
2492         PR c/25309
2493         * c-common.c (complete_array_type): Diagnose too-large arrays and
2494         set type to error_mark_node.
2495
2496 2007-09-26  Richard Guenther  <rguenther@suse.de>
2497
2498         PR tree-optimization/30375
2499         PR tree-optimization/33560
2500         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
2501         with calls.
2502
2503         Revert
2504         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
2505
2506         * tree-ssa-dse.c (aggregate_vardecl_d): New.
2507         (dse_global_data): Add aggregate_vardecl field.
2508         (dse_possible_dead_store_p): New.
2509         Add prev_defvar variable.
2510         Allow immediate uses and previous immediate uses to differ
2511         if they are setting different parts of the whole.
2512         (get_aggregate_vardecl): New.
2513         (dse_record_partial_aggregate_store): New.
2514         (dse_whole_aggregate_clobbered_p): New.
2515         (dse_partial_kill_p): New.
2516         Call dse_maybe_record_aggregate_store().
2517         When checking whether a STMT and its USE_STMT refer to the
2518         same memory address, check also for partial kills that clobber
2519         the whole.
2520         Move some variable definitions to the block where they are used.
2521         (aggregate_vardecl_hash): New.
2522         (aggregate_vardecl_eq): New.
2523         (aggregate_vardecl_free): New.
2524         (aggregate_whole_store_p): New.
2525         (tree_ssa_dse): Initialize and free aggregate_vardecl.
2526         Mark which aggregate stores we care about.
2527
2528 2007-09-25  DJ Delorie  <dj@redhat.com>
2529
2530         PR target/33551
2531         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
2532         XINT.
2533
2534 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
2535
2536         PR target/33524
2537         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
2538         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
2539         for vector int32 -> int64 conversions.  Don't write beyond the end
2540         of the allocated vector for int32 -> int64 conversions.
2541
2542 2007-09-25  Revital Eres  <eres@il.ibm.com>
2543
2544         * config/rs6000/paired.h (paired_sel): New.
2545         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
2546         (rs6000_expand_ternop_builtin): Pass zero const_double operand
2547         when expanding selv2sf.
2548         * config/rs6000/rs6000.h (rs6000_builtins): Add
2549         PAIRED_BUILTIN_SELV2SF4.
2550
2551 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
2552
2553         PR c/32295
2554         * c-typeck.c (default_conversion): Call require_complete_type
2555         before perform_integral_promotions.
2556         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
2557         (build_c_cast): Call require_complete_type except for casts to
2558         void types.
2559         (convert_for_assignment): Call require_complete_type.
2560
2561 2007-09-25  Revital Eres  <eres@il.ibm.com>
2562
2563         * config/spu/spu.md: Fix doloop pattern.
2564
2565 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
2566
2567         * config/bfin/bfin.c (expand_prologue_reg_save,
2568         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs
2569         and ASTAT moved here...
2570         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
2571         ... from here.  New argument ALL; callers changed.
2572         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
2573         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
2574         have the "saveall" attribute.
2575
2576 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
2577
2578         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
2579         bogus target macro.
2580         (INCOMING_REGNO, OUTGOING_REGNO): Define.
2581         * config/mmix/mmix.c (mmix_opposite_regno): New function.
2582         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
2583
2584         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
2585         with REG_P tests before REGNO access.
2586
2587 2007-09-24  DJ Delorie  <dj@redhat.com>
2588
2589         PR target/31482
2590         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
2591         constraint.
2592         (movqicc_<code>_<mode>): Likewise.
2593         (movhicc_<code>_<mode>): Likewise.
2594
2595 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2596
2597         PR target/33184
2598         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
2599         register for reload.
2600
2601 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
2602
2603         PR c++/14688
2604         * config/i386/i386.c (ix86_comp_type_attributes): Check
2605         METHOD_TYPE too.
2606
2607 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
2608
2609         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
2610         "move.l %a4,%a4" to produce nops.
2611         * config/m68k/m68k.c (override_options): Reset align options,
2612         if neccessary align macro isn't avaible.
2613
2614 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
2615
2616         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
2617
2618 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
2619
2620         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
2621         the basic block.
2622         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
2623         reload is completed.
2624         (peephole pattern): Convert most of them to RTL peephole pattern.
2625
2626 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
2627
2628         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
2629         (moved from fp compare patterns).
2630         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
2631         Cleanup predicates to relieve reload.
2632         (conditional_trap): Reject conditional trap with fp condition.
2633         * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
2634         certain constants early.
2635
2636 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
2637
2638         * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
2639
2640 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2641
2642         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
2643         Allow --with-tune=cell and --with-cpu=cell.
2644
2645 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
2646
2647         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
2648         * config/rs6000/rs6000.opt (swdiv): Change option to ...
2649         (recip): this.
2650         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
2651         function.
2652         (TARGET_BUILTIN_RECIPROCAL): Use it.
2653         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
2654         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
2655         (rs6000_emit_swrsqrtsf): New.
2656         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
2657         rsqrtf. 
2658         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
2659         (divsf3): Remove swdiv support.
2660         (recipsf3): New.
2661         (rsqrtsf2): New.
2662         (rsqrt_internal1): New.
2663         (divdf3): Remove swdiv support.
2664         (reciptdf3): New.
2665
2666 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
2667
2668         PR c++/33506
2669         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
2670         field.
2671         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
2672         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
2673         * tree.c (type_hash_eq): For FUNCTION_TYPE use
2674         lang_hooks.type.type_hash_eq in addition to generic tests.
2675
2676 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
2677         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
2678
2679         * tree-inline.h (eni_weights): Add field target_builtin_cost to
2680         reflect the cost per call to a target specific builtin.
2681         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
2682         call to a target specific builtin, then use target_builtin_call_cost.
2683         (init_inline_once): Initialize target_builtin_call_cost field.
2684
2685 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
2686
2687         PR middle-end/33472
2688         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
2689         complex types.
2690
2691 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
2692
2693         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
2694         * configure: Regenerated.
2695
2696 2007-09-23  Ollie Wild  <aaw@google.com>
2697
2698         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
2699         operand.
2700         (get_pointer_modulus_and_residue): New function.
2701
2702 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2703
2704         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
2705         combine an SC return value into a single register.
2706
2707 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2708
2709         * opth-gen.awk (target_flags_explicit): Declare.
2710         * toplev.h (target_flags_explicit): Delete declaration.
2711         * toplev.c (target_flags): Likewise.
2712         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
2713         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
2714         Never return true for TARGET_MIPS16.
2715         * config/mips/mips.c (mips_llsc): Delete.
2716         (mips_handle_option): Remove -mllsc handling.
2717         (mips_strip_unspec_address): Tweak comment.
2718         * config/mips/mips.opt (mllsc): Use a target mask.
2719
2720 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2721
2722         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
2723         word_mode as well as Pmode.
2724
2725 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2726
2727         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
2728         parameters from word_mode to the subword type if such a truncation
2729         is not a no-op.
2730
2731 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
2732
2733         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
2734         * configure: Regenerated.
2735
2736 2007-09-23  Jan Hubicka  <jh@suse.cz>
2737
2738         * params.def (INLINE_CALL_COST): Set to 12.
2739         * invoke.texi (inline-call-cost): Update default value.
2740
2741 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
2742
2743         * config/alpha/alpha.md (movti): Use operand_subword for the split.
2744
2745 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
2746             Revital Eres  <eres@il.ibm.com>
2747
2748         * modulo-sched.c (doloop_register_get): Rewrite the loop which
2749         checks whether the count_reg is found outside the control part.
2750
2751 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
2752
2753         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
2754         instead of checking CALL_EXPR_FN directly to test for builtins.
2755         If error or warning attributes are present, print
2756         error resp. warning.
2757         * c-common.c (handle_error_attribute): New function.
2758         (c_common_attribute_table): Add error and warning
2759         attributes.
2760         * doc/extend.texi: Document error and warning attributes.
2761
2762         * tree.h (block_nonartificial_location): New prototype.
2763         * tree.c (block_nonartificial_location): New function.
2764         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
2765         if artificial attribute is present on abstract inline decl.
2766         * c-common.c (handle_artificial_attribute): New function.
2767         (c_common_attribute_table): Add artificial attribute.
2768         * final.c (override_filename, override_linenum): New variables.
2769         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
2770         and override_linenum if inside of a block inlined from
2771         __attribute__((__artificial__)) function.
2772         (notice_source_line): Honor override_filename and override_linenum.
2773         * doc/extend.texi: Document __attribute__((__artificial__)).
2774         * config/i386/emmintrin.h: Add __artificial__ attribute to
2775         all __always_inline__ functions.
2776         * config/i386/mmintrin.h: Likewise.
2777         * config/i386/tmmintrin.h: Likewise.
2778         * config/i386/mm3dnow.h: Likewise.
2779         * config/i386/pmmintrin.h: Likewise.
2780         * config/i386/ammintrin.h: Likewise.
2781         * config/i386/xmmintrin.h: Likewise.
2782         * config/i386/smmintrin.h: Likewise.
2783         * config/i386/bmmintrin.h: Likewise.
2784         * config/i386/mmintrin-common.h: Likewise.
2785
2786         PR middle-end/28755
2787         * expr.c (expand_constructor): New function.
2788         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
2789         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
2790         CONSTRUCTOR.
2791
2792 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2793
2794         * config/mips/mips.c (dump_constants_1): Generalize to include
2795         fractional and accumulator modes.
2796
2797 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2798
2799         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
2800         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
2801         flags for MIPS16.
2802         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
2803         TARGET_HARD_FLOAT when testing whether -mpaired-single is
2804         supported.
2805         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
2806         TARGET_DSP.
2807         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
2808         TARGET_DSPR2.
2809         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
2810         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
2811         TARGET_HARD_FLOAT.
2812         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
2813         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
2814         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
2815         throughout.
2816         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
2817         TARGET_HAS_DSPR2.
2818         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
2819         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
2820         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
2821
2822 2007-09-22  Jason Merrill  <jason@redhat.com>
2823
2824         PR c++/19407
2825         * attribs.c (lookup_attribute_spec): Split out...
2826         (decl_attributes): From here.
2827         * tree.h: Declare it.
2828
2829 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2830
2831         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
2832
2833 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
2834
2835         * tree-inline.c (remap_type_1): Correctly chain variants.
2836
2837 2007-09-22  Richard Guenther  <rguenther@suse.de>
2838
2839         PR tree-optimization/33146
2840         * fold-const.c (fold_binary): Use the original tree
2841         for negating.
2842         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
2843         also changes "sign".
2844
2845 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
2846
2847         PR target/32325
2848         * except.c (finish_eh_generation): Call commit_edge_insertions if
2849         there are insns queued on the entry edge.
2850         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
2851         the entry edge.
2852
2853 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2854
2855         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
2856
2857 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
2858
2859         * gcc/config/i386/i386.c: Delete trailing whitespace.
2860         * gcc/config/i386/i386.h: Ditto.
2861         * gcc/config/i386/bmmintrin.h: Ditto.
2862         * gcc/config/i386/sync.md: Ditto.
2863         * gcc/config/i386/ppro.md: Ditto.
2864         * gcc/config/i386/mmx.md: Ditto.
2865         * gcc/config/i386/constraints.md: Ditto.
2866         * gcc/config/i386/sse.md: Ditto.
2867         * gcc/config/i386/athlon.md: Ditto.
2868         * gcc/config/i386/i386.md: Ditto.
2869
2870 2007-09-21  Richard Guenther  <rguenther@suse.de>
2871
2872         PR tree-optimization/33508
2873         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
2874         quadratic loop by keeping a bitmap of variables we have
2875         to clobber all subvariables for.
2876         (set_initial_properties): Likewise.
2877
2878 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2879
2880         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
2881
2882 2007-09-20  Nigel Stephens  <nigel@mips.com>
2883             Chao-ying Fu  <fu@mips.com>
2884
2885         * c-decl.c (finish_declspecs): When _Sat is used without
2886         _Fract or _Accum, set the default type to cts_fract.
2887         This avoids a warning of "type defaults to int".
2888
2889 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
2890
2891         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
2892         bit-fields wider than one bit.
2893
2894 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
2895
2896         PR debug/33316
2897         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
2898         DECL_NAME.
2899         * dbxout.c (dbxout_type): Likewise.
2900
2901         PR c/33238
2902         PR c/27301
2903         * gimplify.c (gimplify_vla_decl): New function.
2904         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
2905         Call it.
2906         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
2907
2908 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
2909
2910         * doc/invoke.texi (-minterlink-mips16): Document.
2911         * config/mips/mips.opt (minterlink-mips16): New option.
2912         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
2913         -minterlink-mips16
2914
2915 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
2916
2917         * doc/extend.texi (Attribute Syntax): Remove old speculative
2918         future direction.
2919
2920 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
2921
2922         * combine.c: Include cgraph.h.
2923         (setup_incoming_promotions): Rework to allow more aggressive
2924         elimination of sign extensions when all call sites of the
2925         current function are known to lie within the current unit.
2926
2927 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
2928
2929         * dse.c (find_shift_sequence): No-op rework of control flow.
2930
2931 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2932
2933         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
2934         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
2935
2936 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2937
2938         * cfgexpand.c (dump_stack_var_partition): Use the correct
2939         index for the offset.
2940
2941 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
2942
2943         * config/mips/sde.h: Switch to GPLv3.
2944
2945 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
2946
2947         * tree-sra.c (decide_block_copy): Decide if there are groups.
2948
2949 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
2950
2951         * config/m68k/m68k.c (output_move_himode): Remove jump table
2952         recognition.
2953         config/m68k/m68k.md (lea): Likewise.
2954         * config/m68k/m68k.c (print_operand_address): Use simple pc
2955         relative addressing.
2956
2957 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
2958
2959         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
2960         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
2961         default definition.
2962         (asm_insn_count): Pass template as second argument to it.
2963         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2964         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2965         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2966         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2967         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2968         (sh_insn_length_adjustment): Pass template as second argument to it.
2969         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
2970
2971         * config/bfin/bfin.md (define_asm_attributes): New.
2972
2973 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
2974
2975         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
2976         to tm_file.
2977         * config/bfin/print-sysroot-suffix.sh: New.
2978         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
2979         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
2980         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2981         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
2982         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
2983         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2984         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
2985         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
2986         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2987         (linux-sysroot-suffix.h): New target.
2988         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
2989         (mspecld-anomaly): Likewise.
2990         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
2991         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
2992         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
2993         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
2994         (bfin_si_revision): Declare.
2995         (bfin_workarounds): Declare.
2996         (WA_SPECULATIVE_LOADS): Define.
2997         (ENABLE_WA_SPECULATIVE_LOADS): Define.
2998         (WA_SPECULATIVE_SYNCS): Define.
2999         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
3000         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
3001         (LIB_SPEC): Add %s to the linker scripts.
3002         Use proper linker script for bf522, bf525, bf527,
3003         bf538, bf539, bf542, bf544, bf548, and bf549.
3004         * config/bfin/bfin.c (bfin_si_revision): Define.
3005         (bfin_workarounds): Define.
3006         (struct bfin_cpu): New.
3007         (bfin_cpus): New.
3008         (bfin_handle_option): Handle silicon revision part of -mcpu option.
3009         (override_options): Set bfin_workarounds.
3010         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
3011         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
3012         ENABLE_WA_SPECULATIVE_LOADS.
3013         (bfin_reorg): Likewise.
3014         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
3015         macros for bf522, bf525, bf527, bf538, bf539,
3016         bf542, bf544, bf548, and bf549.
3017         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
3018         Don't define __ID_SHARED_LIB__ when -msep-data.
3019         (TARGET_DEFAULT): Define as 0.
3020         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
3021         * doc/invoke.texi (Blackfin Options): Document silicon
3022         revision part of -mcpu option and it now accepts bf522, bf525,
3023         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
3024
3025 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3026
3027         * alias.c (memory_modified_1): Deconstify.
3028         (memory_modified_in_insn_p): Don't use const_note_stores.
3029         * rtl.h (const_note_stores): Delete.
3030         * rtlanal.c (const_note_stores): Likewise.
3031
3032 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3033
3034         * dse.c (find_shift_sequence): Temporarily revert to forbidding
3035         word shifts.
3036
3037 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3038
3039         PR target/33388
3040         PR target/33397
3041         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
3042         (addsi_small_int): Likewise.
3043         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
3044         (one_cmplsi2): Likewise.
3045         (negsi2): Delete.
3046         (enter_func): Expand insn using hard_frame_pointer_rtx and
3047         stack_pointer_rtx.
3048         (*enter_func): New.
3049         * config/fr30/fr30.c (fr30_expand_prologue): Check for
3050         hard_frame_pointer_rtx instead of using REGNO() check.
3051         Properly sign extend GEN_INT() argument.
3052
3053 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
3054
3055         * config/m68k/m68k.c (override_options): Remove USE_GAS,
3056         use %. syntax.
3057         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
3058         alternatives with just jcc.
3059         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
3060         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
3061         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
3062         dbge_hi, dbge_si): Likewise.
3063
3064 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
3065
3066         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
3067         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
3068         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
3069         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
3070         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
3071
3072 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
3073
3074         * config/m68k/m68k-devices.def (51qe): New device.
3075         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
3076         to all uses of FL_FOR_isa_c for compatibility.
3077         (all_microarchs): Add cfv1 microarchitecture.
3078         (m68k_handle_option): Handle m51qe option.
3079         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
3080         (TUNE_CFV1): New macro.
3081         (enum uarch_type): Add ucfv1.
3082         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
3083         
3084 2007-09-18  Richard Guenther  <rguenther@suse.de>
3085
3086         PR tree-optimization/31863
3087         * tree-ssa-structalias.c (create_variable_info_for): Always
3088         free the fieldstack.
3089
3090 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
3091
3092         * opts.c (decode_options): Enable vectorization under -O3.
3093
3094 2007-09-18  Richard Guenther  <rguenther@suse.de>
3095
3096         PR tree-optimization/33340
3097         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
3098         SSA_NAMEs that occur in abnormal PHI nodes.
3099
3100 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3101
3102         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
3103         Don't use const_get_call_expr_in.
3104         * tree-gimple.c (const_get_call_expr_in): Delete.
3105         * tree-gimple.h (const_get_call_expr_in): Likewise.
3106
3107 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3108
3109         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
3110         not yet have a basic block.
3111         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
3112
3113 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3114
3115         * config/mips/mips.c (mips_file_start): Add ".previous" directives
3116         to both ".section"s.
3117
3118 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
3119
3120         * config/mips/mips.c (mips_output_mi_thunk): Use
3121         mips_function_ok_for_sibcall and const_call_insn_operand
3122         to determine if a direct sibcall is allowed.  Use
3123         mips_classify_symbol to determine a global pointer is needed.
3124
3125 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
3126
3127         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
3128
3129 2007-09-17  Chao-ying Fu  <fu@mips.com>
3130             Nigel Stephens  <nigel@mips.com>
3131
3132         * config/fixed-bit.h: New file.
3133         * config/fixed-bit.c: New file.
3134         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
3135
3136 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
3137
3138         * c-format.h (format_kind_info): Add alloc_char field.
3139         * c-format.c (scanf_flag_specs): Add 'm'.
3140         (scanf_flag_pairs): Add 'a', 'm' pair.
3141         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
3142         (format_types_orig): Add alloc_char fields.
3143         (check_format_info_main): Rename aflag to alloc_flag.
3144         Handle fki->alloc_char. modifier after width and before length
3145         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
3146         length modifiers as well.
3147         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
3148
3149         PR middle-end/33423
3150         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
3151         returned by build_call_expr.
3152
3153 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
3154
3155         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
3156         NULL for variable-sized records too.
3157         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
3158
3159 2007-09-17  Tom Tromey  <tromey@redhat.com>
3160
3161         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
3162         (c_builtin_function): Likewise.
3163         (grokdeclarator): Likewise.
3164
3165 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
3166
3167         PR rtl-optimization/26449
3168         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
3169         (seq_insns_valid_p): Removed.
3170
3171 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
3172
3173         * tree-nomudflap.c (gate_mudflap): New static function.
3174         (pass_mudflap_1): Use it as gate function.
3175         (pass_mudflap_2): Likewise.
3176
3177 2007-09-17  Jan Hubicka  <jh@suse.cz>
3178
3179         PR middle-end/33348
3180         PR target/33406
3181         * loop-invariant.c (move_invariant_reg): Unshare sequence.
3182
3183 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
3184
3185         PR tree-optimization/33319
3186         * tree-vect-analyze.c (vect_same_range_drs): New.
3187         (vect_vfa_range_equal): New.
3188         (vect_is_duplicate_ddr): Removed.
3189         (vect_mark_for_runtime_alias_test): Do not perform marking when
3190         optimizing for size or max_param for alias checking is zero.
3191         Move the function before vect_analyze_data_ref_dependence.
3192         (vect_analyze_data_ref_dependence): Add call to
3193         vect_mark_for_runtime_alias_test in two cases when dependence
3194         is not clear.
3195         (vect_analyze_data_ref_dependences): Do not call to
3196         vect_mark_for_runtime_alias_test.
3197         (vect_prune_runtime_alias_test_list): New.
3198         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
3199         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
3200         Update vec_outside_cost.
3201         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
3202         (vect_create_cond_for_alias_checks): Build the base address of data
3203         reference from DR_GROUP_FIRST_DR.
3204         (vect_loop_versioning): New.
3205         (vect_transform_loop): Add a call to vect_loop_versioning.
3206         Remove factored out code.
3207
3208 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3209
3210         PR middle-end/33273
3211         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
3212         to BLKmode.
3213
3214 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
3215
3216         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
3217         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
3218         Fix the call to insn_rtx_cost.  Skip access sizes that require a
3219         real truncation of the store register.  Use convert_move instead
3220         of gen_lowpart when narrowing the result.
3221         (replace_read): Use convert_move instead of gen_lowpart when
3222         narrowing the store rhs.
3223
3224 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
3225
3226         * config/mips/mips.md (SHORT): Fix long line.
3227         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
3228         to QImode and HImode.
3229
3230 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
3231
3232         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
3233
3234 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
3235
3236         * tree-parloops.c: New file.
3237         * tree-ssa-operands.h (free_stmt_operands): Declare.
3238         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
3239         block.
3240         * tree-pass.h (pass_parallelize_loops): Declare.
3241         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
3242         virtual operands.
3243         (build_omp_regions_1): Allow analysing just a single OMP region and
3244         its subregions.
3245         ( build_omp_regions_root, omp_expand_local): New functions.
3246         (build_omp_regions): Add argument to build_omp_regions_1 call.
3247         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
3248         autoparallelization is run.
3249         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
3250         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
3251         pass_parallelize_loops): New.
3252         * common.opt (ftree-parallelize-loops): New.
3253         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
3254         parallelize_loops): Declare.
3255         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
3256         * Makefile.in (tree-parloops.o): Added.
3257         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
3258         New functions.
3259         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
3260         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
3261         one extra edge as well.
3262         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
3263         Use VEC_free to free doms vector.
3264         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
3265         operands.  Recompute operand caches in the new function.
3266         (move_sese_region_to_fn): Update loop info.
3267         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
3268         * tree-ssa-operands.c (free_stmt_operands): New function.
3269
3270         * doc/passes.texi: Document autoparallelization.
3271         * doc/invoke.texi (-ftree-parallelize-loops): New option.
3272
3273 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3274
3275         PR target/33062
3276         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
3277         TYPE_PRECISION.
3278
3279 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
3280
3281         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
3282         the VEC is not NULL.
3283         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
3284         get_vectype_for_scalar_type succeeded.
3285         (vectorizable_conversion): Likewise.
3286
3287 2007-09-14  Jan Hubicka  <jh@suse.cz>
3288
3289         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
3290         TARGET_64BIT.
3291
3292 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
3293
3294         PR target/33438
3295         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
3296         register when operands[2] equals operands[1].
3297         (remainderxf3): Ditto.
3298
3299 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
3300             Nigel Stephens  <nigel@mips.com>
3301
3302         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
3303         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
3304         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
3305         declaration.
3306         (_Unwind_ForcedUnwind): Likewise.
3307         (_Unwind_Resume): Likewise.
3308         (_Unwind_Resume_or_Rethrow): Likewise.
3309         (_Unwind_Backtrace): Likewise.
3310         (_Unwind_SjLj_RaiseException): Likewise.
3311         (_Unwind_SjLj_ForcedUnwind): Likewise.
3312         (_Unwind_SjLj_Resume): Likewise.
3313         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
3314         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
3315         to definition.
3316         (_Unwind_ForcedUnwind): Likewise.
3317         (_Unwind_Resume): Likewise.
3318         (_Unwind_Resume_or_Rethrow): Likewise.
3319         (_Unwind_Backtrace): Likewise.
3320         * unwind-compat.c (_Unwind_Backtrace): Likewise.
3321         (_Unwind_ForcedUnwind): Likewise.
3322         (_Unwind_RaiseException): Likewise.
3323         (_Unwind_Resume): Likewise.
3324         (_Unwind_Resume_or_Rethrow): Likewise.
3325
3326         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
3327         nomips16 mode when IN_LIBGCC2 with hard float.
3328
3329 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
3330
3331         * config/mips/sdemtk.opt: Update to GPLv3.
3332         * config/mips/sdemtk.h: Likewise.
3333
3334 2007-09-14  Nigel Stephens  <nigel@mips.com>
3335
3336         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
3337         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
3338         for mipsisa32-*-linux*.
3339
3340 2007-09-14  Nigel Stephens  <nigel@mips.com>
3341             David Ung  <davidu@mips.com>
3342             Thiemo Seufer  <ths@mips.com>
3343             Richard Sandiford  <richard@codesourcery.com>
3344
3345         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
3346         * configure.ac: Add a mipssde threading type.
3347         * configure: Regenerate.
3348         * config/mips/sdemtk.h: New file.
3349         * config/mips/t-sdemtk: Likewise.
3350         * config/mips/sdemtk.opt: Likewise.
3351         * gthr-mipssde.h: Likewise.
3352         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
3353         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
3354         (MIPS_ICACHE_SYNC): New macro, split from ...
3355         * config/mips/mips.md (clear_cache): ...here.
3356         * config/mips/mips.c (mips_save_reg_p): Check
3357         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
3358         (build_mips16_function_stub): Use targetm.strip_name_encoding.
3359         (build_mips16_call_stub): Likewise.
3360
3361 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
3362
3363         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
3364
3365 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
3366
3367         PR target/32337
3368         * config/ia64/ia64.c (find_gr_spill): Don't decrement
3369         current_frame_info.n_local_regs.  Don't return emitted local
3370         regs.
3371         (ia64_compute_frame_size): Improve unwind hack to put
3372         RP, PFS, FP in that order by allowing some of the registers
3373         been already emitted, as long as they are emitted to the
3374         desired register.
3375
3376 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3377
3378         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
3379         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
3380         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
3381
3382 2007-09-13  Eric Christopher  <echristo@apple.com>
3383             Kenneth Zadeck <zadeck@naturalbridge.com>
3384
3385         * dse.c (find_shift_sequence): New function.
3386         (replace_read): Add case to remove read if it requires shift.
3387         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
3388         
3389 2007-09-13  Tom Tromey  <tromey@redhat.com>
3390
3391         * c-common.c (fname_as_string): Update.
3392         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
3393         (c_lex_one_token): Update.  Add 'parser' argument.
3394         (c_parser_simple_asm_expr): Update.
3395         (c_parser_attributes): Update.
3396         (c_parser_asm_statement): Update.
3397         (c_parser_asm_operands): Update.
3398         (c_parser_peek_token): Update.
3399         (c_parser_peek_2nd_token): Update.
3400         * c-lex.c (c_lex_string_translate): Remove.
3401         (c_lex_return_raw_strings): Likewise.
3402         (c_lex_with_flags): Added 'lex_flags' argument.
3403         (lex_string): Added 'translate' argument.
3404         * c-pragma.h (c_lex_with_flags): Update.
3405         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
3406         (C_LEX_STRING_NO_TRANSLATE): New define.
3407         (C_LEX_RAW_STRINGS): Likewise.
3408
3409 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
3410
3411         From Jie Zhang:
3412         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
3413         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
3414         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
3415         (bfin_init_builtins): Initialize __builtin_bfin_ones,
3416         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
3417         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
3418         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
3419         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
3420         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
3421         (bdesc_1arg): Add __builtin_bfin_ones.
3422         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
3423         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
3424         and __builtin_bfin_csqu_fr16.
3425         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
3426         (ones): New define_insn.
3427         (ssaddhi3_parts): New define_insn.
3428         (sssubhi3_parts): New define_insn.
3429         (flag_mulhi_parts): New define_insn.
3430
3431 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
3432
3433         * common.opt (femit-class-debug-always): Turn off by default.
3434
3435 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
3436
3437         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
3438         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
3439
3440 2007-09-13  James E. Wilson  <wilson@specifix.com>
3441
3442         PR tree-optimization/33389
3443         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
3444         then set build_loads before returning.
3445
3446 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
3447             David Ung  <davidu@mips.com>
3448
3449         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
3450         {d}addiu and a negative immediate such that it works with MIPS16
3451         instructions.
3452         
3453 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
3454
3455         PR bootstrap/33418
3456         * configure.ac (ld_vers): Support Linux linker.
3457         * configure: Regenerated.
3458
3459 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
3460             Sandra Loosemore <sandra@codesourcery.com>
3461
3462         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
3463         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
3464         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
3465         nomips16 into decl attributes.
3466         (TARGET_INSERT_ATTRIBUTES): Override.
3467         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
3468         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
3469         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
3470         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
3471         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
3472         (mips_use_mips16_mode_p): Reimplement as a function that takes
3473         a decl and considers only decl attributes.  If the decl is nested
3474         function, use its parent attributes.
3475         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
3476         instead of SYMBOL_REF_MIPS16_FUNC_P.
3477         (mips_set_mips16_mode): Move call to sorry here from old
3478         mips_use_mips16_mode_p.
3479         (mflip_mips16_entry): New structure.
3480         (mflip_mips16_htab): New variable.
3481         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
3482         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
3483         (mips_merge_decl_attributes): New function.
3484         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
3485         Use mips_use_mips16_mode_p.
3486         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
3487         SYMBOL_REF_MIPS16_FUNC_P.
3488         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
3489
3490 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
3491
3492         * c-parser.c (c_parser_struct_declaration): Check for a null return.
3493
3494 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3495
3496         PR driver/33309
3497         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
3498
3499 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
3500             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3501             Tony Linthicum  <tony.linthicum@amd.com>
3502
3503         * tree.h (function_args_iterator): New type to iterate over
3504         function arguments.
3505         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
3506         function arguments providing a pointer to the argument.
3507         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
3508         function arguments providing the argument.
3509         (function_args_iter_init): Inline function to initialize
3510         function_args_iterator.
3511         (function_args_iter_cond_ptr): Inline function to return the next
3512         pointer to hold the argument.
3513         (function_args_iter_cond): Inline function to return the next
3514         argument.
3515         (function_args_iter_cond_next): Advance the function args
3516         iterator.
3517         (stdarg_p): New function, return true if variable argument
3518         function.
3519         (prototype_p): New function, return true if function is
3520         prototyped.
3521         (function_args_count): New function, count the number of arguments
3522         of a function.
3523
3524         * tree.c (stdarg_p): New function, return true if variable
3525         argument function.
3526         (prototype_p): New function, return true if function is
3527         prototyped.
3528
3529         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
3530         (TARGET_ROUND): New macro for the round/ptest instructions which
3531         are shared between SSE4.1 and SSE5.
3532         (OPTION_MASK_ISA_ROUND): Ditto.
3533         (OPTION_ISA_ROUND): Ditto.
3534         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
3535         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
3536
3537         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
3538         (-mfused-madd): New switch to give users control over whether the
3539         compiler optimizes to use the multiply/add SSE5 instructions.
3540
3541         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
3542         m_ATHLON_K8_AMDFAM10, and change all uses.
3543         (enum pta_flags): Add PTA_SSE5.
3544         (ix86_handle_option): Turn off 3dnow if -msse5.
3545         (override_options): Add SSE5 support.
3546         (print_operand): %Y prints comparison codes for SSE5 com/pcom
3547         instructions.
3548         (ix86_expand_sse_movcc): Add SSE5 support.
3549         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
3550         vector type to the next largest size.
3551         (ix86_expand_sse5_pack): New function to use pperm to pack a
3552         vector type to the next smallest size.
3553         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
3554         (IX86_BUILTIN_FMADDSD): Ditto.
3555         (IX86_BUILTIN_FMADDPS): Ditto.
3556         (IX86_BUILTIN_FMADDPD): Ditto.
3557         (IX86_BUILTIN_FMSUBSS): Ditto.
3558         (IX86_BUILTIN_FMSUBSD): Ditto.
3559         (IX86_BUILTIN_FMSUBPS): Ditto.
3560         (IX86_BUILTIN_FMSUBPD): Ditto.
3561         (IX86_BUILTIN_FNMADDSS): Ditto.
3562         (IX86_BUILTIN_FNMADDSD): Ditto.
3563         (IX86_BUILTIN_FNMADDPS): Ditto.
3564         (IX86_BUILTIN_FNMADDPD): Ditto.
3565         (IX86_BUILTIN_FNMSUBSS): Ditto.
3566         (IX86_BUILTIN_FNMSUBSD): Ditto.
3567         (IX86_BUILTIN_FNMSUBPS): Ditto.
3568         (IX86_BUILTIN_FNMSUBPD): Ditto.
3569         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
3570         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
3571         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
3572         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
3573         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
3574         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
3575         (IX86_BUILTIN_PPERM): Ditto.
3576         (IX86_BUILTIN_PERMPS): Ditto.
3577         (IX86_BUILTIN_PERMPD): Ditto.
3578         (IX86_BUILTIN_PMACSSWW): Ditto.
3579         (IX86_BUILTIN_PMACSWW): Ditto.
3580         (IX86_BUILTIN_PMACSSWD): Ditto.
3581         (IX86_BUILTIN_PMACSWD): Ditto.
3582         (IX86_BUILTIN_PMACSSDD): Ditto.
3583         (IX86_BUILTIN_PMACSDD): Ditto.
3584         (IX86_BUILTIN_PMACSSDQL): Ditto.
3585         (IX86_BUILTIN_PMACSSDQH): Ditto.
3586         (IX86_BUILTIN_PMACSDQL): Ditto.
3587         (IX86_BUILTIN_PMACSDQH): Ditto.
3588         (IX86_BUILTIN_PMADCSSWD): Ditto.
3589         (IX86_BUILTIN_PMADCSWD): Ditto.
3590         (IX86_BUILTIN_PHADDBW): Ditto.
3591         (IX86_BUILTIN_PHADDBD): Ditto.
3592         (IX86_BUILTIN_PHADDBQ): Ditto.
3593         (IX86_BUILTIN_PHADDWD): Ditto.
3594         (IX86_BUILTIN_PHADDWQ): Ditto.
3595         (IX86_BUILTIN_PHADDDQ): Ditto.
3596         (IX86_BUILTIN_PHADDUBW): Ditto.
3597         (IX86_BUILTIN_PHADDUBD): Ditto.
3598         (IX86_BUILTIN_PHADDUBQ): Ditto.
3599         (IX86_BUILTIN_PHADDUWD): Ditto.
3600         (IX86_BUILTIN_PHADDUWQ): Ditto.
3601         (IX86_BUILTIN_PHADDUDQ): Ditto.
3602         (IX86_BUILTIN_PHSUBBW): Ditto.
3603         (IX86_BUILTIN_PHSUBWD): Ditto.
3604         (IX86_BUILTIN_PHSUBDQ): Ditto.
3605         (IX86_BUILTIN_PROTB): Ditto.
3606         (IX86_BUILTIN_PROTW): Ditto.
3607         (IX86_BUILTIN_PROTD): Ditto.
3608         (IX86_BUILTIN_PROTQ): Ditto.
3609         (IX86_BUILTIN_PROTB_IMM): Ditto.
3610         (IX86_BUILTIN_PROTW_IMM): Ditto.
3611         (IX86_BUILTIN_PROTD_IMM): Ditto.
3612         (IX86_BUILTIN_PROTQ_IMM): Ditto.
3613         (IX86_BUILTIN_PSHLB): Ditto.
3614         (IX86_BUILTIN_PSHLW): Ditto.
3615         (IX86_BUILTIN_PSHLD): Ditto.
3616         (IX86_BUILTIN_PSHLQ): Ditto.
3617         (IX86_BUILTIN_PSHAB): Ditto.
3618         (IX86_BUILTIN_PSHAW): Ditto.
3619         (IX86_BUILTIN_PSHAD): Ditto.
3620         (IX86_BUILTIN_PSHAQ): Ditto.
3621         (IX86_BUILTIN_FRCZSS): Ditto.
3622         (IX86_BUILTIN_FRCZSD): Ditto.
3623         (IX86_BUILTIN_FRCZPS): Ditto.
3624         (IX86_BUILTIN_FRCZPD): Ditto.
3625         (IX86_BUILTIN_CVTPH2PS): Ditto.
3626         (IX86_BUILTIN_CVTPS2PH): Ditto.
3627         (IX86_BUILTIN_COMEQSS): Ditto.
3628         (IX86_BUILTIN_COMNESS): Ditto.
3629         (IX86_BUILTIN_COMLTSS): Ditto.
3630         (IX86_BUILTIN_COMLESS): Ditto.
3631         (IX86_BUILTIN_COMGTSS): Ditto.
3632         (IX86_BUILTIN_COMGESS): Ditto.
3633         (IX86_BUILTIN_COMUEQSS): Ditto.
3634         (IX86_BUILTIN_COMUNESS): Ditto.
3635         (IX86_BUILTIN_COMULTSS): Ditto.
3636         (IX86_BUILTIN_COMULESS): Ditto.
3637         (IX86_BUILTIN_COMUGTSS): Ditto.
3638         (IX86_BUILTIN_COMUGESS): Ditto.
3639         (IX86_BUILTIN_COMORDSS): Ditto.
3640         (IX86_BUILTIN_COMUNORDSS): Ditto.
3641         (IX86_BUILTIN_COMFALSESS): Ditto.
3642         (IX86_BUILTIN_COMTRUESS): Ditto.
3643         (IX86_BUILTIN_COMEQSD): Ditto.
3644         (IX86_BUILTIN_COMNESD): Ditto.
3645         (IX86_BUILTIN_COMLTSD): Ditto.
3646         (IX86_BUILTIN_COMLESD): Ditto.
3647         (IX86_BUILTIN_COMGTSD): Ditto.
3648         (IX86_BUILTIN_COMGESD): Ditto.
3649         (IX86_BUILTIN_COMUEQSD): Ditto.
3650         (IX86_BUILTIN_COMUNESD): Ditto.
3651         (IX86_BUILTIN_COMULTSD): Ditto.
3652         (IX86_BUILTIN_COMULESD): Ditto.
3653         (IX86_BUILTIN_COMUGTSD): Ditto.
3654         (IX86_BUILTIN_COMUGESD): Ditto.
3655         (IX86_BUILTIN_COMORDSD): Ditto.
3656         (IX86_BUILTIN_COMUNORDSD): Ditto.
3657         (IX86_BUILTIN_COMFALSESD): Ditto.
3658         (IX86_BUILTIN_COMTRUESD): Ditto.
3659         (IX86_BUILTIN_COMEQPS): Ditto.
3660         (IX86_BUILTIN_COMNEPS): Ditto.
3661         (IX86_BUILTIN_COMLTPS): Ditto.
3662         (IX86_BUILTIN_COMLEPS): Ditto.
3663         (IX86_BUILTIN_COMGTPS): Ditto.
3664         (IX86_BUILTIN_COMGEPS): Ditto.
3665         (IX86_BUILTIN_COMUEQPS): Ditto.
3666         (IX86_BUILTIN_COMUNEPS): Ditto.
3667         (IX86_BUILTIN_COMULTPS): Ditto.
3668         (IX86_BUILTIN_COMULEPS): Ditto.
3669         (IX86_BUILTIN_COMUGTPS): Ditto.
3670         (IX86_BUILTIN_COMUGEPS): Ditto.
3671         (IX86_BUILTIN_COMORDPS): Ditto.
3672         (IX86_BUILTIN_COMUNORDPS): Ditto.
3673         (IX86_BUILTIN_COMFALSEPS): Ditto.
3674         (IX86_BUILTIN_COMTRUEPS): Ditto.
3675         (IX86_BUILTIN_COMEQPD): Ditto.
3676         (IX86_BUILTIN_COMNEPD): Ditto.
3677         (IX86_BUILTIN_COMLTPD): Ditto.
3678         (IX86_BUILTIN_COMLEPD): Ditto.
3679         (IX86_BUILTIN_COMGTPD): Ditto.
3680         (IX86_BUILTIN_COMGEPD): Ditto.
3681         (IX86_BUILTIN_COMUEQPD): Ditto.
3682         (IX86_BUILTIN_COMUNEPD): Ditto.
3683         (IX86_BUILTIN_COMULTPD): Ditto.
3684         (IX86_BUILTIN_COMULEPD): Ditto.
3685         (IX86_BUILTIN_COMUGTPD): Ditto.
3686         (IX86_BUILTIN_COMUGEPD): Ditto.
3687         (IX86_BUILTIN_COMORDPD): Ditto.
3688         (IX86_BUILTIN_COMUNORDPD): Ditto.
3689         (IX86_BUILTIN_COMFALSEPD): Ditto.
3690         (IX86_BUILTIN_COMTRUEPD): Ditto.
3691         (IX86_BUILTIN_PCOMEQUB): Ditto.
3692         (IX86_BUILTIN_PCOMNEUB): Ditto.
3693         (IX86_BUILTIN_PCOMLTUB): Ditto.
3694         (IX86_BUILTIN_PCOMLEUB): Ditto.
3695         (IX86_BUILTIN_PCOMGTUB): Ditto.
3696         (IX86_BUILTIN_PCOMGEUB): Ditto.
3697         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
3698         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
3699         (IX86_BUILTIN_PCOMEQUW): Ditto.
3700         (IX86_BUILTIN_PCOMNEUW): Ditto.
3701         (IX86_BUILTIN_PCOMLTUW): Ditto.
3702         (IX86_BUILTIN_PCOMLEUW): Ditto.
3703         (IX86_BUILTIN_PCOMGTUW): Ditto.
3704         (IX86_BUILTIN_PCOMGEUW): Ditto.
3705         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
3706         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
3707         (IX86_BUILTIN_PCOMEQUD): Ditto.
3708         (IX86_BUILTIN_PCOMNEUD): Ditto.
3709         (IX86_BUILTIN_PCOMLTUD): Ditto.
3710         (IX86_BUILTIN_PCOMLEUD): Ditto.
3711         (IX86_BUILTIN_PCOMGTUD): Ditto.
3712         (IX86_BUILTIN_PCOMGEUD): Ditto.
3713         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
3714         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
3715         (IX86_BUILTIN_PCOMEQUQ): Ditto.
3716         (IX86_BUILTIN_PCOMNEUQ): Ditto.
3717         (IX86_BUILTIN_PCOMLTUQ): Ditto.
3718         (IX86_BUILTIN_PCOMLEUQ): Ditto.
3719         (IX86_BUILTIN_PCOMGTUQ): Ditto.
3720         (IX86_BUILTIN_PCOMGEUQ): Ditto.
3721         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
3722         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
3723         (IX86_BUILTIN_PCOMEQB): Ditto.
3724         (IX86_BUILTIN_PCOMNEB): Ditto.
3725         (IX86_BUILTIN_PCOMLTB): Ditto.
3726         (IX86_BUILTIN_PCOMLEB): Ditto.
3727         (IX86_BUILTIN_PCOMGTB): Ditto.
3728         (IX86_BUILTIN_PCOMGEB): Ditto.
3729         (IX86_BUILTIN_PCOMFALSEB): Ditto.
3730         (IX86_BUILTIN_PCOMTRUEB): Ditto.
3731         (IX86_BUILTIN_PCOMEQW): Ditto.
3732         (IX86_BUILTIN_PCOMNEW): Ditto.
3733         (IX86_BUILTIN_PCOMLTW): Ditto.
3734         (IX86_BUILTIN_PCOMLEW): Ditto.
3735         (IX86_BUILTIN_PCOMGTW): Ditto.
3736         (IX86_BUILTIN_PCOMGEW): Ditto.
3737         (IX86_BUILTIN_PCOMFALSEW): Ditto.
3738         (IX86_BUILTIN_PCOMTRUEW): Ditto.
3739         (IX86_BUILTIN_PCOMEQD): Ditto.
3740         (IX86_BUILTIN_PCOMNED): Ditto.
3741         (IX86_BUILTIN_PCOMLTD): Ditto.
3742         (IX86_BUILTIN_PCOMLED): Ditto.
3743         (IX86_BUILTIN_PCOMGTD): Ditto.
3744         (IX86_BUILTIN_PCOMGED): Ditto.
3745         (IX86_BUILTIN_PCOMFALSED): Ditto.
3746         (IX86_BUILTIN_PCOMTRUED): Ditto.
3747         (IX86_BUILTIN_PCOMEQQ): Ditto.
3748         (IX86_BUILTIN_PCOMNEQ): Ditto.
3749         (IX86_BUILTIN_PCOMLTQ): Ditto.
3750         (IX86_BUILTIN_PCOMLEQ): Ditto.
3751         (IX86_BUILTIN_PCOMGTQ): Ditto.
3752         (IX86_BUILTIN_PCOMGEQ): Ditto.
3753         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
3754         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
3755         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
3756         OPTION_MASK_ISA_ROUND for instructions that are shared between
3757         SSE4.1 and SSE5.
3758         (bdesc_2arg): Ditto.
3759         (bdesc_sse_3arg): Ditto.
3760         (enum multi_arg_type): New enum for describing the various SSE5
3761         intrinsic argument types.
3762         (bdesc_multi_arg): New table for SSE5 intrinsics.
3763         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
3764         (ix86_expand_multi_arg_builtin): New function for creating SSE5
3765         intrinsics.
3766         (ix86_expand_builtin): Add SSE5 intrinsic support.
3767         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
3768         operand instructions.
3769         (ix86_expand_sse5_multiple_memory): New function to split the
3770         second memory reference from SSE5 instructions.
3771         (type_has_variadic_args_p): Delete in favor of stdarg_p.
3772         (ix86_return_pops_args): Use stdarg_p to determine if the function
3773         has variable arguments.
3774         (ix86_setup_incoming_varargs): Ditto.
3775         (x86_this_parameter): Ditto.
3776
3777         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
3778         declaration.
3779         (ix86_expand_sse5_pack): Ditto.
3780         (ix86_sse5_valid_op_p): Ditto.
3781         (ix86_expand_sse5_multiple_memory): Ditto.
3782
3783         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
3784         constant for SSE5 support.
3785         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
3786         (UNSPEC_SSE5_TRUEFALSE): Ditto.
3787         (UNSPEC_SSE5_PERMUTE): Ditto.
3788         (UNSPEC_SSE5_ASHIFT): Ditto.
3789         (UNSPEC_SSE5_LSHIFT): Ditto.
3790         (UNSPEC_FRCZ): Ditto.
3791         (UNSPEC_CVTPH2PS): Ditto.
3792         (UNSPEC_CVTPS2PH): Ditto.
3793         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
3794         (PCOM_TRUE): Ditto.
3795         (COM_FALSE_S): Ditto.
3796         (COM_FALSE_P): Ditto.
3797         (COM_TRUE_S): Ditto.
3798         (COM_TRUE_P): Ditto.
3799         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
3800         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
3801         types.
3802         (memory attribute): Ditto.
3803         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3804         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
3805         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3806         (floor<mode>2): Ditto.
3807         (ceil<mode>2): Ditto.
3808         (btrunc<mode>2): Ditto.
3809         (nearbyintdf2): Ditto.
3810         (nearbyintsf2): Ditto.
3811         (sse_setccsf): Disable if SSE5.
3812         (sse_setccdf): Ditto.
3813         (sse5_setcc<mode>): New support for SSE5 conditional move.
3814         (sse5_pcmov_<mode>): Ditto.
3815
3816         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
3817         (SSEMODEF4): Ditto.
3818         (SSEMODEF2P): Ditto.
3819         (ssemodesuffixf4): New mode attribute for SSE5.
3820         (ssemodesuffixf2s): Ditto.
3821         (ssemodesuffixf2c): Ditto.
3822         (sserotatemax): Ditto.
3823         (ssescalarmode): Ditto.
3824         (sse_maskcmpv4sf3): Disable if SSE5.
3825         (sse_maskcmpv2df3): Ditto.
3826         (sse_vmmaskcmpv4sf3): Ditto.
3827         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
3828         instructions.
3829         (sse5_vmfmadd<mode>4): Ditto.
3830         (sse5_fmsub<mode>4): Ditto.
3831         (sse5_vmfmsub<mode>4): Ditto.
3832         (sse5_fnmadd<mode>4): Ditto.
3833         (sse5_vmfnmadd<mode>4): Ditto.
3834         (sse5_fnmsub<mode>4): Ditto.
3835         (sse5_vmfnmsub<mode>4): Ditto.
3836         (sse5i_fmadd<mode>4): Ditto.
3837         (sse5i_fmsub<mode>4): Ditto.
3838         (sse5i_fnmadd<mode>4): Ditto.
3839         (sse5i_fnmsub<mode>4): Ditto.
3840         (sse5i_vmfmadd<mode>4): Ditto.
3841         (sse5i_vmfmsub<mode>4): Ditto.
3842         (sse5i_vmfnmadd<mode>4): Ditto.
3843         (sse5i_vmfnmsub<mode>4): Ditto.
3844         (mulv16qi3): Add SSE5 support.
3845         (mulv4si3): Ditto.
3846         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
3847         (sse2_mulv4si3): Disable if SSE5.
3848         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
3849         (sse4_1_roundps): Ditto.
3850         (sse4_1_roundsd): Ditto.
3851         (sse4_1_roundss): Ditto.
3852         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
3853         be generated.
3854         (sse_maskcmpsf3): Ditto.
3855         (sse_vmmaskcmpv4sf3): Ditto.
3856         (sse2_maskcmpv2df3): Ditto.
3857         (sse2_maskcmpdf3): Ditto.
3858         (sse2_vmmaskcmpv2df3): Ditto.
3859         (sse2_eq<mode>3): Ditto.
3860         (sse2_gt<mode>3): Ditto.
3861         (sse5_pcmov_<mode>): Add SSE5 support.
3862         (vec_unpacku_hi_v16qi): Ditto.
3863         (vec_unpacks_hi_v16qi): Ditto.
3864         (vec_unpacku_lo_v16qi): Ditto.
3865         (vec_unpacks_lo_v16qi): Ditto.
3866         (vec_unpacku_hi_v8hi): Ditto.
3867         (vec_unpacks_hi_v8hi): Ditto.
3868         (vec_unpacku_lo_v8hi): Ditto.
3869         (vec_unpacks_lo_v8hi): Ditto.
3870         (vec_unpacku_hi_v4si): Ditto.
3871         (vec_unpacks_hi_v4si): Ditto.
3872         (vec_unpacku_lo_v4si): Ditto.
3873         (vec_unpacks_lo_v4si): Ditto.
3874         (sse5_pmacsww): New SSE5 intrinsic insn.
3875         (sse5_pmacssww): Ditto.
3876         (sse5_pmacsdd): Ditto.
3877         (sse5_pmacssdd): Ditto.
3878         (sse5_pmacssdql): Ditto.
3879         (sse5_pmacssdqh): Ditto.
3880         (sse5_pmacsdqh): Ditto.
3881         (sse5_pmacsswd): Ditto.
3882         (sse5_pmacswd): Ditto.
3883         (sse5_pmadcsswd): Ditto.
3884         (sse5_pmadcswd): Ditto.
3885         (sse5_pcmov_<move>): Conditional move support on SSE5.
3886         (sse5_phaddbw): New SSE5 intrinsic insn.
3887         (sse5_phaddbd): Ditto.
3888         (sse5_phaddbq): Ditto.
3889         (sse5_phaddwd): Ditto.
3890         (sse5_phaddwq): Ditto.
3891         (sse5_phadddq): Ditto.
3892         (sse5_phaddubw): Ditto.
3893         (sse5_phaddubd): Ditto.
3894         (sse5_phaddubq): Ditto.
3895         (sse5_phadduwd): Ditto.
3896         (sse5_phadduwq): Ditto.
3897         (sse5_phaddudq): Ditto.
3898         (sse5_phsubbw): Ditto.
3899         (sse5_phsubwd): Ditto.
3900         (sse5_phsubdq): Ditto.
3901         (sse5_pperm): Ditto.
3902         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
3903         (sse5_pperm_zero_v16qi_v8hi): Ditto.
3904         (sse5_pperm_sign_v8hi_v4si): Ditto.
3905         (sse5_pperm_zero_v8hi_v4si): Ditto.
3906         (sse5_pperm_sign_v4si_v2di): Ditto.
3907         (sse5_pperm_sign_v4si_v2di): Ditto.
3908         (sse5_pperm_pack_v2di_v4si): Ditto.
3909         (sse5_pperm_pack_v4si_v8hi): Ditto.
3910         (sse5_pperm_pack_v8hi_v16qi): Ditto.
3911         (sse5_perm<mode>): New SSE5 intrinsic insn.
3912         (rotl<mode>3): Ditto.
3913         (sse5_rotl<mode>3): Ditto.
3914         (sse5_ashl<mode>3): Ditto.
3915         (sse5_lshl<mode>3): Ditto.
3916         (sse5_frcz<mode>2): Ditto.
3917         (sse5s_frcz<mode>2): Ditto.
3918         (sse5_cvtph2ps): Ditto.
3919         (sse5_cvtps2ph): Ditto.
3920         (sse5_vmmaskcmp<mode>3): Ditto.
3921         (sse5_com_tf<mode>3): Ditto.
3922         (sse5_maskcmp<mode>3): Ditto.
3923         (sse5_maskcmp_uns<mode>3): Ditto.
3924         (sse5_maskcmp_uns2<mode>3): Ditto.
3925         (sse5_pcom_tf<mode>3): Ditto.
3926         
3927         * config/i386/predicates.md (const_0_to_31_operand): New predicate
3928         to match 0..31.
3929         (sse5_comparison_float_operator): New predicate to match the
3930         comparison operators supported by the SSE5 com instruction.
3931         (ix86_comparison_int_operator): New predicate to match just the
3932         signed int comparisons.
3933         (ix86_comparison_uns_operator): New predicate to match just the
3934         unsigned int comparisons.
3935
3936         * doc/invoke.texi (-msse5): Add documentation.
3937         (-mfused-madd): Ditto.
3938
3939         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
3940
3941         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
3942         mmintrin-common.h.
3943         (x86_64-*-*): Ditto.
3944
3945         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
3946
3947         * config/i386/bmmintrin.h: New file, provide common x86 compiler
3948         intrinisics for SSE5.
3949
3950         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
3951         mmintrin-common.h.
3952
3953         * config/i386/mmintrin-common.h: New file, to contain common
3954         instructions between SSE4.1 and SSE5.
3955
3956         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
3957         FOREACH_FUNCTION_ARGS to iterate over the argument list.
3958         (gen_regparm_prefix): Ditto.
3959
3960         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
3961         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
3962         prototype_p to determine if a function is prototyped.
3963
3964 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
3965
3966         * config/dfp-bit.c (dfp_conversion_exception): New function.
3967         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
3968         (DFP_TO_INT): Ditto.
3969         (INT_TO_DFP): Ditto.
3970         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
3971
3972 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
3973
3974         PR target/32338
3975         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
3976         before sp restoration even when total_size is 0, but
3977         frame_pointer_needed.
3978
3979 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
3980
3981         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
3982         (xtensa_copy_incoming_a7): Use start_sequence instead of
3983         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
3984         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
3985         of the saveregs sequence.
3986
3987 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
3988
3989         * c-tree.h (grokfield): Add a "tree *" argument.
3990         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
3991         Chain nested decl attributes to it.  Don't call decl_attributes here.
3992         (groktypename): Pass grokdeclarator a pointer to the attribute list.
3993         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
3994         (grokfield): Take a pointer to the decl's attributes and pass
3995         it to grokdeclarator.
3996         * c-parser.c (c_parser_struct_declaration): Update the calls to
3997         grokfield.  Call decl_attributes for anonymous struct and union
3998         fields.
3999
4000 2007-09-12  Jan Hubicka  <jh@suse.cz>
4001
4002         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
4003
4004 2007-09-12  Ira Rosen  <irar@il.ibm.com>
4005
4006         PR tree-optimization/32377
4007         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
4008         between positive and negative dependence distance using DDR_REVERSED_P.
4009
4010 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
4011
4012         PR tree-optimization/33373
4013         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
4014         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
4015
4016 2007-09-12  Jan Hubicka  <jh@suse.cz>
4017
4018         PR target/33393
4019         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
4020         for !SSE_MATH
4021
4022 2007-09-12  Christian Bruel  <christian.bruel@st.com>
4023
4024         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
4025         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
4026         
4027 2007-09-12  Ira Rosen  <irar@il.ibm.com>
4028
4029         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
4030         for oprnd1 if not required.
4031         (vectorizable_operation): Use scalar operand in SLP in case of 
4032         shift with scalar argument.
4033
4034 2007-09-12  Ira Rosen  <irar@il.ibm.com>
4035
4036         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
4037         to 1.
4038
4039 2007-09-11  James E. Wilson  <wilson@specifix.com>
4040
4041         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
4042         TARGET_UNWIND_INFO is defined.
4043         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
4044         after definition.
4045
4046 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
4047
4048         * config/sh/sh.c (calc_live_regs): Use
4049         current_function_saves_all_registers instead of
4050         current_function_has_nonlocal_label.
4051         (sh_allocate_initial_value): Likewise.
4052         (sh_get_pr_initial_val): Likewise.
4053         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
4054         * config/sh/sh.md (load_ra): Likewise.
4055
4056 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
4057
4058         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
4059
4060         PR target/33360
4061         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
4062         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
4063
4064 2007-09-12  Sa Liu  <saliu@de.ibm.com>
4065
4066         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
4067         operands to DFmode GE or LE compares.
4068
4069 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
4070
4071         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
4072         REG_CLASS_NAMES): Add P0REGS.
4073         (REGNO_REG_CLASS): Return it where appropriate.
4074         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
4075         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
4076         * doc/md.texi (Blackfin family): Document 'q' constraints.
4077
4078 2007-09-11  Steve Kenton  <skenton@ou.edu>
4079
4080         * pa/linux-unwind.h: Guard with inhibit_libc.
4081         * pa/hpux-unwind.h: Likewise.
4082
4083 2007-09-11  David Daney  <ddaney@avtrex.com>
4084
4085         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
4086         * doc/install.texi: Document new --with-llsc and --without-llsc
4087         options.
4088         * config.gcc: Handle --with-llsc and --without-llsc configure options.
4089         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
4090         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
4091         ISA_HAS_SYNC.
4092         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
4093         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
4094         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
4095         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
4096         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
4097         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
4098         * config/mips/mips.opt (mllsc): New option.
4099         * config/mips/mips.c (mips_llsc): Define variable.
4100         (mips_handle_option): Handle mllsc option.
4101         (override_options): Set mips_print_operand_punct for '|' and '-'.
4102         (print_operand): Add new %| and %- operand codes.
4103         * config/mips/mips.h (mips_llsc_setting): New enum type.
4104         (mips_llsc): Declare.
4105         (OPTION_DEFAULT_SPECS): Add llsc handling.
4106         (GENERATE_SYNC): New macro.
4107         (GENERATE_LL_SC): New macro.
4108         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
4109         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
4110         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
4111         in %| and %- operand codes.
4112
4113 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
4114
4115         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
4116         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
4117
4118 2007-09-11  Jason Merrill  <jason@redhat.com>
4119
4120         PR middle-end/27945
4121         * stor-layout.c (layout_decl): Do pack variable size fields.    
4122
4123 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
4124
4125         * config/m68k/predicates.md (movsi_const0_operand,
4126         non_symbolic_call_operand): New predicates.
4127
4128         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
4129         New constraints.
4130         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
4131         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
4132         CW, CZ, CS, Ap and Ac.
4133
4134         * config/m68k/m68k.md (UNSPEC_IB): New constant.
4135         (constraints.md): New include.
4136         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
4137         opx_mem, opy_mem, op_mem, guess, split): New attributes.
4138         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
4139         Specify attributes.
4140         (pushdi): Add split.
4141         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
4142         attributes.  Split tstsi_internal_68020_cf from it.
4143         (tstsi_internal_68020_cf): New pattern.
4144         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
4145         (tst<mode>_cf): Specify attributea.
4146         (cmpsi_cf): Name pattern.  Specify attributes.
4147         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
4148         (pushexthisi_const): Fix to use alternatives.  Specify
4149         attributes.
4150         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
4151         from it.  Fix to use alternatives.  Specify attributes.
4152         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
4153         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
4154         attributes.
4155         (movsf_cf_soft): Specify attributes.
4156         (movdf_cf_soft): Add split.
4157         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
4158         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
4159         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
4160         (truncdfsf2_68881): Name pattern.  Specify attributes.
4161         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
4162         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
4163         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
4164         Specify attributes.
4165         (addsi3_5200): Fix to use alternatives.  Specify attributes.
4166         Add splits.
4167         (add<mode>3_cf, subdi_dishl32): Specify attributes.
4168         (subsi3): Add alternative for subq.l.  Specify attributes.
4169         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
4170         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
4171         attributes.
4172         (umulhisi3): Specify attributes.
4173         (mulhisisi3_z): Name pattern.  Specify attributes.
4174         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
4175         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
4176         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
4177         bsetmemqi): Specify attributes.
4178         (bsetmemqi_ext): Name pattern.  Specify attributes.
4179         (bclrmemqi): Specify attributes.
4180         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
4181         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
4182         attributes.
4183         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
4184         pattern.  Specify attributes.
4185         (jump): Specify attributes.
4186         (tablejump_internal): Name pattern.  Specify attributes.
4187         (call_value): Split into non_symbolic_call_value,
4188         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
4189         alternatives.  Specify attributes.
4190         (non_symbolic_call_value, symbolic_call_value_jsr,
4191         symbolic_call_value_bsr): New patterns.
4192         (nop, return, unlink, indirect_jump): Specify attributes.
4193         (trap): Fix condition.  Specify attributes.
4194         (ib): New pattern.
4195
4196         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
4197         (override_options): Initialize it.  Initialize m68k_sched_cpu.
4198         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
4199         (const_method): Make global, rename to m68k_const_method.
4200         (const_int_cost, output_move_const_into_data_reg): Update.
4201         (output_move_double): Parametrize to emit rtl code, rename to
4202         handle_move_double.
4203         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
4204         emit_movsi): New static functions.
4205         (output_move_double): New function with semantics of old
4206         output_move_double.
4207         (m68k_emit_move_double): New function.
4208         (m68k_sched_cpu): New variable.
4209         (attr_op_type): New enum.
4210         (sched_guess_p): New variable.
4211         (sched_address_type, sched_operand_type, sched_attr_op_type):
4212         New static functions.
4213         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
4214         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
4215         (sched_branch_type): New static variable.
4216         (m68k_sched_branch_type): New function.
4217         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
4218         (m68k_symbolic_call_var): Declare.
4219         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
4220         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
4221         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
4222         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
4223         Declare.
4224
4225 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
4226
4227         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
4228         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
4229         error if __builtin_va_arg_pack_len () wasn't optimized out during
4230         inlining.
4231         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
4232         with the number of inline's anonymous arguments.
4233         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
4234
4235 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
4236
4237         * fold-const.c (extract_muldiv_1): Do not simplify
4238         var * c * c to var.
4239
4240 2007-09-11  Jan Hubicka <jh@suse.cz>
4241
4242         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
4243         (TARGET_INTER_UNIT_CONVERSIONS): New.
4244         * i386.md (floatsi expanders): Remove redundant check for SImode
4245         source; offload to memory when asked for.
4246         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
4247         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
4248         Update conditions;
4249         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
4250         floatsidf2_mixed_memory, floatsidf2_sse_memory
4251         floatdisf2_mixed_memory, floatsisf2_sse_memory,
4252         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
4253
4254 2007-09-11  Jan Hubicka <jh@suse.cz>
4255
4256         * toplev.c (process_options): all frontends now do unit-at-a-time.
4257         * cgraphunit.c: update comments.
4258         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
4259         * c-decl.c (finish_function): use cgraph_add_new_function.
4260         * function.c (expand_function_end): We are always unit-at-a-time.
4261
4262 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
4263
4264         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
4265         settings for MIPS16.
4266         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
4267
4268 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
4269
4270         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
4271         SYMBOL_FORCE_TO_MEM constants.
4272         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
4273         (mips16_rewrite_pool_refs_info): New structure.
4274         (mips16_rewrite_pool_constant): New function, split out from...
4275         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
4276         mips16_rewrite_pool_refs_info structure rather than a pointer
4277         to a constant pool.  Force force_to_mem_operands into memory.
4278         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
4279         * config/mips/predicates.md (force_to_mem_operand): New predicate.
4280         * config/mips/constraints.md (kf): New constraint.
4281         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
4282         (*movsi_mips16): Likewise.
4283
4284 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
4285             Nigel Stephens  <nigel@mips.com>
4286             David Ung  <davidu@mips.com>
4287
4288         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
4289         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
4290         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
4291         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
4292         (mips_zero_extend_cost): New functions.
4293         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
4294         Use the new functions.  Tweak many cost estimates, both here
4295         and in the new subroutines.  Return false when the cost of the
4296         operands has not been calculated.  Check for *clear_upper32.
4297         Check for floating-point multiply-add, reciprocal and rsqrt
4298         patterns.  Handle comparison and rotation codes.
4299
4300 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
4301
4302         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
4303         override default.
4304         * config/i386/i386.c (get_dllimport_decl): Don't strip
4305         FASTCALL_PREFIX.
4306
4307 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
4308
4309         PR c/30013
4310         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
4311         declarations to top.
4312         (DFP_TO_BFP): Use for either XFmode or TFmode.
4313         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
4314         of BFP_VIA_TYPE.
4315         * config/dfp-bit.h: Include float.h.
4316         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
4317         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
4318         which doesn't mean the same thing.
4319         (BFP_KIND): Use 4 to mean TFmode.
4320         (BFP_FMT): Specify the number of decimal digits based on the
4321         number of mantissa digits.
4322         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
4323         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
4324         (STR_TO_BFP): Use strtold for XFmode or TFmode.
4325         (TFtype): Define if TFmode is supported.
4326         * doc/libgcc.texi (Decimal float library routines): Document
4327         TF conversion functions.
4328
4329 2007-09-10  Chao-ying Fu  <fu@mips.com>
4330
4331         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
4332         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
4333         (mips_emit_compare): Process fixed-point modes.
4334         (mips_pad_arg_upward): Support fixed-point types.
4335         (override_options): Allow fixed-point modes in accumulators.
4336         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
4337         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
4338         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
4339         (mips_scalar_mode_supported_p): New function to accept fixed-point
4340         modes if the width is not greater than two BITS_PER_WORD.
4341         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
4342         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
4343         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
4344         LONG_LONG_ACCUM_TYPE_SIZE): Define.
4345         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
4346         modes.
4347         ("IMODE"): New mode attribute.
4348         (mips-fixed.md): Include.
4349         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
4350         ACCUM, UACCUM.
4351         * config/mips/mips-fixed.md: New file.
4352
4353 2007-09-11  Ben Elliston  <bje@au.ibm.com>
4354
4355         * config/spu/spu.md: Formatting fixes.
4356
4357 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
4358
4359         * config/dfp-bit.c (dfp_unary_func): Delete.
4360         (dfp_unary_op): Delete.
4361         (dfp_binary_op): Use decFloat functions instead of decNumber
4362         functions for binary operations.
4363         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
4364         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
4365         DFP_C_TYPE.
4366         (dfp_compare_op): Use decFloat functions insteadof decNumber
4367         functions for comparisons.
4368         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
4369         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
4370         DFP_C_TYPE.
4371         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
4372         call to dxx_binary_op and decFloat function.
4373         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
4374         calls to dxx_binary_op and decFloat function.
4375         * config/dfp-bit.h: Include decFloat header files.
4376         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
4377         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
4378         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
4379         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
4380
4381 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
4382             Jan Sjodin <jan.sjodin@amd.com>
4383
4384         * tree-vect-analyze.c (vect_analyze_operations): Change
4385         comparison of loop iterations with threshold to less than
4386         or equal to instead of less than. Reduce
4387         min_scalar_loop_bound by one.
4388         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
4389         Change prologue and epilogue iterations estimate to vf/2,
4390         when unknown at compile-time. Change versioning guard
4391         cost to taken_branch_cost. If peeling for alignment is
4392         unknown at compile-time, change peel guard costs to one
4393         taken branch and one not-taken branch per peeled loop.
4394         If peeling for alignment is known but number of scalar loop
4395         iterations is unknown at compile-time, change peel guard
4396         costs to one taken branch per peeled loop. Change the cost
4397         model equation to consider vector iterations as the loop
4398         iterations less the prologue and epilogue iterations.
4399         Change outside vector cost check to less than or equal to
4400         zero instead of equal to zero.
4401         (vect_do_peeling_for_loop_bound): Reduce
4402         min_scalar_loop_bound by one.
4403         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
4404         TARG_COND_NOT_TAKEN_BRANCH_COST.        
4405         * config/i386/i386.h (processor_costs): Add
4406         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
4407         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
4408         vec_align_load_cost, vect_unalign_load_cost,
4409         vec_store_cost, cond_taken_branch_cost,
4410         cond_not_taken_branch_cost.
4411         Define macros for x86 costs.
4412         * config/i386/i386.c:
4413         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
4414         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
4415         scalar_to_vec_cost, vec_align_load_cost, 
4416         vect_unalign_load_cost, vec_store_cost,
4417         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
4418         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
4419         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
4420         core2_cost, generic64_cost, generic32_cost): Set to default
4421         untuned costs.
4422         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
4423         (x86_builtin_vectorization_cost): New.
4424
4425 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
4426             Ben Elliston  <bje@au.ibm.com>
4427
4428         * dfp.c: Include decimal128Local.h; 
4429         (dfp_byte_swap): Remove.
4430         (encode_decimal32, decode_decimal32): Don't handle endianness.
4431         (encode_decimal64, decode_decimal64): Ditto.
4432         (encode_decimal128, decode_decimal128): Ditto.
4433         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
4434         (__swap64): Remove.
4435         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
4436         (__swap128): Remove
4437         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
4438         * Makefile.in (DECNUM_H): Add decimal128Local.h.
4439
4440 2007-09-10  David Daney  <ddaney@avtrex.com>
4441
4442         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
4443         define_constants.
4444         (memory_barrier): Rewrote as an insn that clobbers memory.
4445
4446 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
4447
4448         * config/mips/mips.c (mips_global_pointer): Check
4449         call_really_used_regs instead of call_used_regs.
4450         (mips_save_reg_p): Likewise.  Save all call-saved registers
4451         if current_function_saves_all_registers.  Fix indentation.
4452         No longer treat $18 as a special case.
4453         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
4454
4455 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
4456
4457         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
4458         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
4459         the introductory comment.
4460         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
4461         (override_options): Don't test for it.
4462         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
4463         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
4464         * config/mips/vr.h: As for config/mips/sde.h.
4465
4466 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4467             Revital Eres  <eres@il.ibm.com>
4468
4469         * target.h (struct gcc_target.sched): New field: sms_res_mii.
4470         (struct ddg): Define.
4471         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
4472         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
4473         * config/spu/spu.c: Include ddg.h.
4474         (TARGET_SCHED_SMS_RES_MII): Define.
4475         (spu_sms_res_mii): New function to calculate mii.
4476         * modulo-sched (res_MII): Use it.
4477         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
4478
4479 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
4480
4481         * config/s390/s390.c (s390_dump_pool): Create copy of constant
4482         pool entries since they might hold values that must not be shared.
4483
4484 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
4485
4486         PR target/33369
4487         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
4488         Use 'N' operand constraint for op2.
4489         (lshr<mode>3): Ditto.
4490         (ashl<mode>3): Ditto.
4491         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
4492         (vec_shr_<mode>): Ditto.
4493         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
4494         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
4495
4496 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
4497
4498         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
4499         Change mode macro in the last real_2expN parameter to uppercase.
4500
4501 2007-09-10  Michael Matz  <matz@suse.de>
4502
4503         * tree-pass.h (pass_cselim): Declare new pass.
4504         * passes.c (init_optimization_passes): Link in pass_cselim.
4505         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
4506         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
4507         cond_store_replacement.
4508         (condstoretemp): New static variable.
4509         (cond_store_replacement): New function.
4510         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
4511         tree_ssa_phiopt_worker.
4512         (struct name_to_bb): New.
4513         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
4514         nt_init_block, nt_fini_block): New static functions.
4515         (seen_ssa_names, nontrap_set): New static variables.
4516         (gate_cselim, pass_cselim): Define new pass.
4517         * common.opt (ftree-cselim): New flag.
4518         * toplev.c (process_options): Set flag_tree_cselim if required.
4519
4520 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
4521
4522         * simplify-rtx.c (simplify_relational_operation_1): For recent
4523         canonicalization, don't recurse if op1 equals both PLUS arguments.
4524
4525 2007-09-09  David Daney  <ddaney@avtrex.com>
4526
4527         * optabs.c (expand_sync_operation):  Use plus insn if minus
4528         CONST_INT_P(val).
4529         (expand_sync_fetch_operation):  Ditto.
4530
4531 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
4532
4533         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
4534         of cvtpq2ps.
4535         (*floatsisf2_sse_vector): Likewise.
4536
4537 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
4538
4539         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
4540
4541 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
4542
4543         * config/i386/i386.h (ix86_tune_indices): Rename
4544         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
4545         (TARGET_USE_VECTOR_CONVERTS): Updated.
4546         * config/i386/i386.c: Likewise.
4547
4548 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
4549             Nigel Stephens <nigel@mips.com>
4550
4551         * doc/invoke.texi (Overall Options):  Add .sx file extension
4552         as a synonym for .S.
4553         * cppspec.c (known_suffixes): Likewise.
4554         * gcc.c (default_compilers): Likewise.
4555
4556 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4557
4558         PR target/30315
4559         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
4560         * simplify-rtx.c (simplify_relational_operation_1): Add the
4561         canonicalization from i386.h.
4562         * doc/md.texi (Canonicalization of Instructions): Document it.
4563
4564 2007-09-09  Jan Hubicka  <jh@suse.cz>
4565             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4566
4567         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
4568         (TARGET_USE_VECTOR_CONVERTS): New.
4569         * i386.md: New post-reload splitters for converting SF to DF and DF to
4570         SF.
4571         (floatsi* expander): Special case vector conversions.
4572         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
4573         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
4574         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
4575         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
4576         Disable when doing vector converts.
4577         (floatsi<mode>2_i387): Disable when
4578         * sse.md (vec_dupv2df): Export.
4579         * i386.c (ix86_tune_features): Enable SSE conversions.
4580
4581 2007-09-09  Richard Guenther  <rguenther@suse.de>
4582
4583         * tree-ssa-operands.c (add_virtual_operand): Only mark
4584         stores as has_volatile_ops if alias information is not available.
4585
4586 2007-09-09  Revital Eres  <eres@il.ibm.com>
4587
4588         * doc/contrib.texi: Add myself.
4589
4590 2007-09-09  Ira Rosen  <irar@il.ibm.com>
4591
4592         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
4593         stmt_vinfo_set_outside_of_loop_cost): New functions.
4594         * tree-vect-transform.c (vect_get_cost_fields): Remove.
4595         (vect_model_simple_cost): Call
4596         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
4597         field instead of calling vect_get_cost_fields.
4598         (vect_model_store_cost, vect_model_load_cost): Likewise.
4599
4600 2007-09-09  Revital Eres  <eres@il.ibm.com>
4601
4602         * config/rs6000/rs6000.c (paired_init_builtins): Add const
4603         declaration to bdesc_paired_preds variable.
4604         (paired_expand_builtin): Likewise.
4605
4606 2007-09-09  Revital Eres  <eres@il.ibm.com>
4607
4608         * dbgcnt.def (sms_sched_loop): New counter.
4609         * modulo-sched.c: Use sms_sched_loop instead of
4610         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
4611         perform swing modulo scheduling on.  Include dbgcnt.h.
4612         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
4613         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
4614
4615 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
4616
4617         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
4618         Substitute all uses with ...
4619         (MODEF): New mode iterator.
4620
4621         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
4622         from pre-regalloc define_insn_and_split splitter pattern.
4623         (*fix_trunc<mode>_i387_1): Ditto.
4624         (*fistdi2_1): Ditto.
4625         (*fist<mode>2_1): Ditto.
4626         (frndintxf2_floor): Ditto.
4627         (*fist<mode>2_floor_1): Ditto.
4628         (frndintxf2_ceil): Ditto.
4629         (*fist<mode>2_ceil_1): Ditto.
4630         (frndintxf2_trunc): Ditto.
4631         (frndintxf2_mask_pm): Ditto.
4632
4633         (prologue): Use (const_int 0) as never generated filler insn.
4634         (epilogue): Ditto.
4635         (sibcall_epilogue): Ditto.
4636         (eh_return_si): Ditto.
4637         (eh_return_di): Ditto.
4638
4639         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
4640         using MODEF mode iterator.
4641         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
4642         using MODEF mode iterator.
4643         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
4644         using MODEF mode iterator.
4645         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
4646         Macroize expander using MODEF mode iterator.
4647
4648         (zero_extendsidi2): Remove operand constraints from expander.
4649         (smuldi3_highpart): Ditto.
4650         (indirect_jump): Ditto.
4651         (tablejump): Ditto.
4652         (rsqrtsf2): Ditto.
4653         * config/i386/sse.md (storentv4sf): Ditto.
4654         (storentv2df): Ditto.
4655         (storentv2di): Ditto.
4656         (storentsi): Ditto.
4657         (sse2_cvtpd2ps): Ditto.
4658         (vec_interleave_highv16qi): Ditto.
4659         (vec_interleave_lowv16qi): Ditto.
4660         (vec_interleave_highv8hi): Ditto.
4661         (vec_interleave_lowv8hi): Ditto.
4662         (vec_interleave_highv4si): Ditto.
4663         (vec_interleave_lowv4si): Ditto.
4664         (vec_interleave_highv2di): Ditto.
4665         (vec_interleave_lowv2di): Ditto.
4666         (sse2_maskmovdqu): Ditto.
4667         * config/i386/mmx.md (mmx_maskmovq): Ditto.
4668
4669 2007-09-09  Ira Rosen  <irar@il.ibm.com>
4670
4671         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
4672         (struct _slp_tree, struct _slp_instance): Define new data structures
4673         along macros for their access.
4674         (struct _loop_vec_info): Define new fields: strided_stores,
4675         slp_instances, and slp_unrolling_factor along macros for their access.
4676         (enum slp_vect_type): New.
4677         (struct _stmt_vec_info): Define new field, slp_type, and macros for
4678         its access.
4679         (STMT_VINFO_STRIDED_ACCESS): New macro.
4680         (vect_free_slp_tree): Declare.
4681         (vectorizable_load): Add an argument of type slp_tree.
4682         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
4683         vectorizable_assignment): Likewise.
4684         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
4685         Declare (make extern).
4686         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
4687         (new_loop_vec_info): Likewise.
4688         (destroy_loop_vec_info): Free memory allocated for SLP structures.
4689         * tree-vect-analyze.c: Include recog.h.
4690         (vect_update_slp_costs_according_to_vf): New.
4691         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
4692         functions. For not pure SLP stmts with strided access check that the
4693         group size is power of 2. Update the vectorization factor according to
4694         SLP. Call vect_update_slp_costs_according_to_vf.
4695         (vect_analyze_group_access): New.
4696         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
4697         (vect_free_slp_tree): New functions.
4698         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
4699         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
4700         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
4701         vect_detect_hybrid_slp): Likewise.
4702         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
4703         and vect_detect_hybrid_slp.
4704         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
4705         SLP costs into account.
4706         (vect_get_cost_fields): New function.
4707         (vect_model_simple_cost): Make extern, add SLP parameter and handle
4708         SLP.
4709         (vect_model_store_cost, vect_model_load_cost): Likewise.
4710         (vect_get_constant_vectors): New function.
4711         (vect_get_slp_vect_defs, vect_get_slp_defs,
4712         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
4713         vect_get_vec_defs): Likewise.
4714         (vectorizable_reduction): Don't handle SLP for now.
4715         (vectorizable_call): Don't handle SLP for now. Add argument to
4716         vect_model_simple_cost.
4717         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
4718         get SLPed and vectorized defs). Fix indentation and spacing.
4719         (vectorizable_assignment): Handle SLP.
4720         (vectorizable_induction): Don't handle SLP for now.
4721         (vectorizable_operation): Likewise.
4722         (vectorizable_type_demotion): Add argument to
4723         vect_model_simple_cost.
4724         (vectorizable_type_promotion): Likewise.
4725         (vectorizable_store, vectorizable_load): Handle SLP.
4726         (vectorizable_condition): Don't handle SLP for now.
4727         (vect_transform_stmt): Add a new argument for SLP. Check that there is
4728         no SLP transformation required for unsupported cases. Add SLP
4729         argument for supported cases.
4730         (vect_remove_stores): New function.
4731         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
4732         (vect_transform_loop): Schedule SLP instances.
4733         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
4734
4735 2007-09-09  Andrew Haley  <aph@redhat.com>
4736
4737         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
4738         signed optab.
4739
4740 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
4741
4742         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
4743         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
4744         Similar for what label_refs can go in the JUMP_TARGET field.  Split
4745         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
4746         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
4747         REG_LABEL when replacing an operand with a LABEL_REF for a
4748         non-jump insn.
4749         (subst_reloads): When replacing a LABEL_REG with a register,
4750         instead of generating a REG_LABEL note, assert that there already
4751         is one or that the label is a known target for the insn.
4752         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
4753         note, check the JUMP_LABEL field.  Remove "else" after return.
4754         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
4755         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
4756         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
4757         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
4758         insns.  Iterate over all notes; don't assume there's only one.
4759         * cse.c (recorded_label_ref): Adjust comment to refer to
4760         REG_LABEL_OPERAND.
4761         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
4762         insns, not just NONJUMP_INSN_P.
4763         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
4764         isn't a jump target.
4765         * jump.c (rebuild_jump_labels): Adjust head comment.
4766         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
4767         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
4768         (mark_all_labels): For JUMP_P insns without a target, check if the
4769         the target is noted on the previous nonjump insn.
4770         (mark_jump_label_1): New function, guts from mark_jump_label.
4771         <case IF_THEN_ELSE>: Handle first operand as a non-target when
4772         marking jump target labels.
4773         <case LABEL_REF>: Adjust for whether to generate a
4774         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
4775         For 'E' format rtl, iterate in descending element order.
4776         (delete_related_insns): Handle both REG_LABEL_TARGET and
4777         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
4778         reference count, delete and fallthrough.  Move finding-next-
4779         non-deleted insn last in the function.  Look at all INSN_P insns
4780         for REG_LABEL_OPERAND notes.
4781         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
4782         JUMP.
4783         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
4784         JUMP_LABEL, output the INSN_UID of it.
4785         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
4786         and/or REG_LABEL_TARGET.
4787         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
4788         with jump.c copy by only adding notes for labels actually
4789         referenced in the insn.
4790         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
4791         usage count increment; handle all INSN_P trial insns.
4792         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
4793         notes.
4794         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
4795         REG_LABEL_TARGET and REG_LABEL_OPERAND.
4796         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
4797         REG_LABEL_OPERAND.
4798         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
4799         JUMP_P insns and REG_LABEL_OPERAND everywhere.
4800         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
4801         on all INSN_P insns.
4802         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
4803         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
4804         REG_LABEL_OPERAND notes.
4805         * reload1.c (calculate_needs_all_insns): Adjust comments.
4806         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
4807         * config/alpha/alpha.md (split for load of an address into a
4808         four-insn sequence on Unicos/Mk): Adjust to use
4809         REG_LABEL_OPERAND.
4810         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
4811
4812 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4813
4814         Revert:
4815         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4816         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
4817         FOR_BB_INSNS_SAFE instead of for loop.
4818         * cse.c (cse_extended_basic_block): Likewise.
4819         * postreload.c (reload_cse_regs_1): New variable next. Make sure
4820         that the for loop does not invoke NEXT_INSN on a deleted insn.
4821         * function.c (instantiate_virtual_regs): Likewise.
4822         * lower-subreg.c (remove_retval_note): Likewise.
4823         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
4824         FOR_BB_INSNS.
4825         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
4826         a deleted insn.
4827         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
4828         insn, if it's a jump.
4829         (try_redirect_by_replacing_jump): New variable jump_p. Call
4830         tablejump_p before delete_insn_chain.
4831         * reload1.c (reload): New variable next. Make sure that the for
4832         loop does not invoke NEXT_INSN on a deleted insn.
4833         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
4834         (delete_output_reload): New variable prev. Make sure the the for
4835         loops do not invoke PREV_INSN on a deleted insn.
4836
4837 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4838
4839         * pa/constraints.md: Remove 'X' from unused letters comment.
4840
4841 2007-09-08  Richard Guenther  <rguenther@suse.de>
4842
4843         * tree-tailcall.c (find_tail_calls): If we don't have aliases
4844         computed check stmt_ann->references_memory instead of counting
4845         virtual operands.
4846  
4847 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
4848
4849         * cse.c (fold_rtx): Use validate_unshare_change() instead of
4850         validate_change() in one more case.
4851
4852 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
4853
4854         PR tree-optimization/32283
4855         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
4856         estimated_loop_iterations.
4857         (determine_use_iv_cost_condition): Decrease cost of expressions
4858         used in iv elimination.
4859
4860 2007-09-08  Richard Guenther  <rguenther@suse.de>
4861
4862         * tree-cfg.c (verify_gimple_expr): Avoid building new
4863         pointer types, use TYPE_POINTER_TO if available instead.
4864
4865 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
4866
4867         PR target/33329
4868         PR rtl-optimization/26449
4869         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
4870         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
4871         split1 pass.
4872         (mulv16qi3): Implement as define_insn_and_split pattern instead of
4873         define_expand.  Split insn in split1 pass.
4874         (mulv2di3): Ditto.
4875
4876 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
4877
4878         PR tree-optimization/33301
4879         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
4880         when relevant.
4881
4882 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
4883
4884         PR tree-optimization/32183
4885         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
4886
4887         * tree-ssa-reassoc.c: Include cfgloop.h.
4888         (is_reassociable_op): Add a loop argument and return true only
4889         for inside loop.
4890         (linearize_expr): Updated.
4891         (should_break_up_subtract): Likewise.
4892         (linearize_expr_tree): Likewise.
4893         (init_reassoc): Call loop_optimizer_init with
4894         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
4895         with CDI_DOMINATORS.
4896         (fini_reassoc): Call loop_optimizer_finalize.
4897
4898 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
4899
4900         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
4901         if there is no i-cache.
4902
4903 2007-09-07  Richard Guenther  <rguenther@suse.de>
4904
4905         Reapply
4906         2007-09-06  Richard Guenther  <rguenther@suse.de>
4907
4908         PR tree-optimization/32586
4909         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
4910         folding if nothing changed.
4911         (simplify_unary_expression): New function.  Do tree combining
4912         on conversion like codes.
4913         (try_to_simplify): Call it.
4914
4915 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4916
4917         PR target/33286
4918         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
4919         (__gthread_active,__gthread_start, __gthread_active_init): New.
4920         * gthr-posix95.h: Likewise.
4921
4922 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
4923
4924         * function.h (struct function): Rename calls_unwind_init
4925         to saves_all_registers.
4926         (current_function_saves_all_registers): Renamed from
4927         current_function_calls_unwind_init.
4928         * reload1.c (reload): Set current_function_saves_all_registers.
4929         * except.c (expand_builtin_unwind_init): Likewise.
4930         * config/m68k/m68k.c (m68k_save_reg): Use
4931         current_function_saves_all_registers to save pic register.
4932
4933 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
4934
4935         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
4936         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
4937
4938         Reapply reverted changes:
4939
4940         2007-09-06  Jan Hubicka  <jh@suse.cz>
4941  
4942         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
4943         of real_2expN.
4944
4945         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4946
4947         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
4948         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
4949
4950         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
4951
4952         * optabs.c (expand_float): Convert unsigned integer as signed only
4953         if it provides sufficient accuracy; add mode argument to real_2expN.
4954         (expand_fix): Fix comment typos; extend binary float into mode
4955         wider than destination for converion to unsigned integer; add mode
4956         argument to real_2expN.
4957         * real.c (real_2expN): Add mode argument to special-case decimal
4958         float values.
4959         * real.h (real_2expN): Ditto.
4960         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
4961         real_2expN.
4962         (fixed_from_string): Ditto.
4963         (fixed_to_decimal): Ditto.
4964         (fixed_convert_from_real): Ditto.
4965         (real_convert_from_fixed): Ditto.
4966         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
4967         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
4968         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
4969         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
4970
4971 2007-09-07  Diego Novillo  <dnovillo@google.com>
4972
4973         * tree-flow.h (const_block_stmt_iterator): Remove.
4974         Update all users to use block_stmt_iterator.
4975         * tree-iterator.h (const_tree_stmt_iterator): Remove.
4976         Update all users to use tree_stmt_iterator.
4977
4978 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
4979
4980         * config/mips/mips.c (mips_set_current_function): Temporarily
4981         make this a no-op to fix bootstrap errors, pending rewrite.
4982
4983 2007-09-07  Jan Hubicka  <jh@suse.cz>
4984
4985         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
4986         in the pass.
4987
4988 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
4989
4990         PR tree-optimization/33299
4991         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
4992         uses for all relevant loop-exit phis, not just the first.
4993
4994 2007-09-07  Richard Guenther  <rguenther@suse.de>
4995
4996         PR middle-end/33330
4997         * tree-ssa-operands.c (access_can_touch_variable): An access
4998         of the form (*p)[0] can touch a variable of same size.
4999
5000 2007-09-07  Jan Hubicka  <jh@suse.cz>
5001
5002         * passes.c (init_optimization_passes): Add simple dce and addressable
5003         passes.
5004         * tree-ssa.c (execute_update_addresses_taken): New function.
5005         (pass_update_address_taken): New.
5006         * tree-ssa-dse.c (execute_simple_dse): New function.
5007         (pass_simple_dse): New.
5008         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
5009
5010 2007-09-07  Tobias Burnus  <burnus@net-b.de>
5011
5012         PR middle-end/33321
5013         * doc/invoke.texi: Fix -Wstrict-overflow= table.
5014
5015 2007-09-07  Richard Guenther  <rguenther@suse.de>
5016
5017         Revert
5018         2007-09-06  Richard Guenther  <rguenther@suse.de>
5019
5020         PR tree-optimization/32586
5021         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
5022         folding if nothing changed.
5023         (simplify_unary_expression): New function.  Do tree combining
5024         on conversion like codes.
5025         (try_to_simplify): Call it.
5026
5027 2007-09-07  Richard Guenther  <rguenther@suse.de>
5028             Uros Bizjak  <ubizjak@gmail.com>
5029
5030         PR tree-optimization/32821
5031         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
5032         NULL in the call to set_bb_stmt_list.
5033
5034 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5035
5036         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
5037         float calls here, rather than leaving some to the caller.
5038         Use call_internal_direct and call_value_internal_direct.
5039         * config/mips/mips.md (call_internal_direct): New pattern.
5040         (call_value_internal_direct): Likewise.
5041
5042 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5043
5044         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
5045         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
5046         to 0 for MIPS16.
5047         (override_options): Set mips_base_move_loop_invariants.
5048
5049 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5050
5051         * config/mips/mips.opt (mcode-readable=): Move to keep list
5052         alphabetical.
5053
5054 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5055
5056         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
5057         and -mgpopt options.  Adjust the -G documentation to match.
5058         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
5059         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
5060         function, split out from mips_classify_symbol.  Return false for
5061         !TARGET_LOCAL_SDATA.
5062         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
5063         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
5064         (override_options): Check whether the -mgpopt setting is consistent
5065         with the other flags.
5066         (symbolic_expression_p): Delete.
5067         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
5068         and default_elf_select_rtx_section.
5069         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
5070         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
5071         external data and TARGET_EXTERN_SDATA.
5072
5073 2007-09-07  Tobias Burnus  <burnus@net-b.de>
5074
5075         PR fortran/33303
5076         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
5077
5078 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5079
5080         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
5081         FOR_BB_INSNS_SAFE instead of for loop.
5082         * cse.c (cse_extended_basic_block): Likewise.
5083         * postreload.c (reload_cse_regs_1): New variable next. Make sure
5084         that the for loop does not invoke NEXT_INSN on a deleted insn.
5085         * function.c (instantiate_virtual_regs): Likewise.
5086         * lower-subreg.c (remove_retval_note): Likewise.
5087         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
5088         FOR_BB_INSNS.
5089         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
5090         a deleted insn.
5091         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
5092         insn, if it's a jump.
5093         (try_redirect_by_replacing_jump): New variable jump_p. Call
5094         tablejump_p before delete_insn_chain.
5095         * reload1.c (reload): New variable next. Make sure that the for
5096         loop does not invoke NEXT_INSN on a deleted insn.
5097         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
5098         (delete_output_reload): New variable prev. Make sure the the for
5099         loops do not invoke PREV_INSN on a deleted insn.
5100
5101 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
5102
5103         * cgraphbuild.c (rebuild_cgraph_edges): Export.
5104         * cgraph.h (rebuild_cgraph_edges): Declare.
5105         * tree-pass.h (pass_expand_omp_ssa): New.
5106         * omp-low.c (find_omp_clause): Export.
5107         (copy_var_decl): Split from omp_copy_decl_2.
5108         (build_omp_barrier): Return the call to emit instead of emitting
5109         it directly.
5110         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
5111         build_omp_barrier.
5112         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
5113         expand_omp_for_generic, expand_omp_for_static_nochunk,
5114         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
5115         Adapted to work on SSA form.
5116         (execute_expand_omp): Do not invalidate dominance information.
5117         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
5118         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
5119         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
5120         a gimple_reg.
5121         (force_gimple_operand): Allow gimplifying code expressions without
5122         value.
5123         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
5124         * common.opt (fopenmp-ssa): New.
5125         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
5126         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
5127         * tree-cfg.c: Include tree-inline.h.
5128         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
5129         (replace_by_duplicate_decl, replace_ssa_name,
5130         mark_virtual_ops_in_region): New functions.
5131         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
5132         to work on SSA form.
5133         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
5134         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
5135         constructs.
5136
5137 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5138
5139         * tree-loop-linear.c: Include obstack.h.
5140         (linear_transform_loops): New obstack lambda_obstack.
5141         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
5142         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
5143         and free afterwards.
5144         * lambda.h (struct obstack): New forward declaration.
5145         (lambda_linear_expression_new): New parameter of type struct
5146         obstack *.
5147         (lambda_loopnest_new): Likewise.
5148         (lambda_loopnest_transform): Likewise.
5149         (lambda_body_vector_new): Likewise.
5150         (lambda_body_vector_compute_new): Likewise.
5151         (gcc_loopnest_to_lambda_loopnest): Likewise.
5152         (lambda_loopnest_to_gcc_loopnest): Likewise.
5153         * lambda-code.c: Include obstack.h.
5154         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
5155         allocation of ret.
5156         (lambda_body_vector_new): Likewise.
5157         (lambda_linear_expression_new): Likewise.
5158         (lambda_lattice_new): Likewise.
5159         (lambda_loopnest_new): Likewise.  Additionally use obstack to
5160         allocate LN_LOOPS(ret).
5161         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
5162         it to lambda_lattice_new.
5163         (lambda_body_vector_compute_new): New parameter lambda_obstack.
5164         Pass it to lambda_body_vector_new.
5165         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
5166         it to lambda_lattice_new.
5167         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
5168         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
5169         (lambda_compute_target_space): Likewise.
5170         (lambda_compute_auxillary_space): New parameter lambda_obstack.
5171         Pass it to lambda_lattice_compute_base and
5172         compute_nest_using_fourieer_motzkin.
5173         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
5174         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
5175         and lambda_lattice_compute_target_space.
5176         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
5177         Pass it to lambda_linear_expression_new.
5178         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
5179         to gcc_tree_to_linear_expression.
5180         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
5181         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
5182         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
5183         Pass it to lambda_body_vector_new and
5184         lambda_body_vector_compute_new.
5185         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
5186         (lambda-code.o): Likewise.
5187
5188 2007-09-06  Chao-ying Fu  <fu@mips.com>
5189
5190         * ginclude/stdfix.h: New file.
5191         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
5192         (convert.o): Add dependence on fixed-value.h.
5193         * c-convert.c (convert): Support FIXED_POINT_TYPE.
5194         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
5195         to define fixed-point constants.
5196         (c_cpp_builtins): Define fixed-point constants.
5197         * convert.c (fixed-value.h): New include.
5198         (convert_to_real): Update comment to include fixed-point.
5199         Support FIXED_POINT_TYPE.
5200         (convert_to_integer): Update comment to include fixed-point.
5201         Support FIXED_POINT_TYPE.
5202         (convert_to_complex): Support FIXED_POINT_TYPE.
5203         (convert_to_fixed): New function.
5204         * convert.h (convert_to_fixed): Declare.
5205         * genopinit.c: Add comment about $Q for only fixed-point modes.
5206         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
5207         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
5208         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
5209         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
5210         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
5211         usneg_optab for fixed-point modes.
5212         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
5213         modes.
5214         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
5215         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
5216         unsigned saturation optabs, when type is saturating.
5217         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
5218         (expand_fixed_convert): New function.
5219         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
5220         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
5221         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
5222         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
5223         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
5224         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
5225         functions.
5226         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
5227         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
5228         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
5229         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
5230         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
5231         satfractuns_optab.
5232         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
5233         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
5234         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
5235         fractuns, satfractuns.
5236         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
5237         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
5238         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
5239         OTI_ssmsub_widen,  OTI_usmsub_widen.
5240         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
5241         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
5242         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
5243         umsub_widen_optab, usmsub_widen_optab): Define.
5244         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
5245         COI_satfractuns.
5246         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
5247         Define.
5248         (expand_fixed_convert): Declare.
5249         * expr.c (convert_move): Support the move of fixed-point modes.
5250         (emit_move_insn_1): Handle fixed-point mode to move via integer.
5251         (categorize_ctor_elements_1): Handle FIXED_CST.
5252         (count_type_elements): Handle FIXED_POINT_TYPE.
5253         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
5254         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
5255         Support FIXED_CST.
5256         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
5257         multiply and add/subtract for fixed-point types.
5258         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
5259         mode, we jump to binop directly.
5260         Support FIXED_CONVERT_EXPR.
5261         (do_store_flag): Check FIXED_CST to put a constant second.
5262         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
5263         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
5264         (const_vector_from_tree): Support FIXED_CST.
5265         * doc/extend.texi (Fixed-Point): New node.
5266         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
5267         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
5268         satfract, fractuns, satfractuns): Document them.
5269
5270 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
5271
5272         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
5273         addresses into I registers.
5274
5275 2007-09-06  Jan Hubicka  <jh@suse.cz>
5276             Andreas Tobler  <a.tobler@schweiz.org>
5277
5278         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
5279         sharing.
5280         (machopic_legitimize_pic_address): Likewise.
5281
5282 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5283             Jan Hubicka  <jh@suse.cz>
5284
5285         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
5286         instead of ufloat_optab->handlers directly.
5287         (floatdidf2): Likewise.
5288
5289 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
5290
5291         * config/mips/mips.c:  Include diagnostic.h.
5292         (mips_set_current_function): Check errorcount and sorrycount 
5293         before generating RTL.
5294
5295 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5296
5297         PR target/33256
5298         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
5299         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
5300         (print_operand_reloc): Likewise.
5301
5302 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
5303
5304         Revert:
5305
5306         2007-09-06  Jan Hubicka  <jh@suse.cz>
5307  
5308         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
5309         real_2expN.
5310
5311         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5312
5313         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
5314         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
5315
5316         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
5317
5318         * optabs.c (expand_float): Convert unsigned integer as signed only
5319         if it provides sufficient accuracy; add mode argument to real_2expN.
5320         (expand_fix): Fix comment typos; extend binary float into mode
5321         wider than destination for converion to unsigned integer; add mode
5322         argument to real_2expN.
5323         * real.c (real_2expN): Add mode argument to special-case decimal
5324         float values.
5325         * real.h (real_2expN): Ditto.
5326         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
5327         real_2expN.
5328         (fixed_from_string): Ditto.
5329         (fixed_to_decimal): Ditto.
5330         (fixed_convert_from_real): Ditto.
5331         (real_convert_from_fixed): Ditto.
5332         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
5333         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
5334         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
5335         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
5336
5337 2007-09-06  Tom Tromey  <tromey@redhat.com>
5338
5339         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
5340         * c-pch.c (c_common_read_pch): Restore current location after
5341         reading PCH file.
5342         * tree.c (expand_location): Update.
5343         (expr_filename): Changed return type.  Unified the two cases.
5344         (expr_lineno): Likewise.
5345         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
5346         as lvalues.
5347         * toplev.c (line_table): Changed type.
5348         (general_init): Update.
5349         (realloc_for_line_map): New function.
5350         (general_init): Allocate line_table using GC.
5351         * fix-header.c (line_table): Changed type.
5352         (read_scan_file): Update.
5353         (read_scan_file): Update.
5354         * c-ppoutput.c (maybe_print_line): Update.
5355         (print_line): Update.
5356         (cb_line_change): Update.
5357         (cb_define): Update.
5358         (pp_file_change): Update.
5359         * c-opts.c (c_common_init_options): Update.
5360         (finish_options): Update.
5361         (push_command_line_include): Update.
5362         * c-lex.c (cb_line_change): Update.
5363         (cb_def_pragma): Update.
5364         (cb_define): Update.
5365         (cb_undef): Update.
5366         (c_lex_with_flags): Use cpp_get_token_with_location.
5367         * input.h (line_table): Changed type.
5368         (location_from_locus): New macro.
5369         * tree.h (EXPR_FILENAME): No longer an lvalue.
5370         (EXPR_LINENO): Likewise.
5371         (expr_locus, set_expr_locus): Declare separately for
5372         USE_MAPPED_LOCATION.
5373         (expr_filename, expr_lineno): Changed return type.
5374         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
5375         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
5376         (expand_gimple_basic_block): Likewise.
5377         * final.c (final_scan_insn): Use expanded_location.
5378
5379 2007-09-06  Richard Guenther  <rguenther@suse.de>
5380
5381         PR tree-optimization/32586
5382         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
5383         folding if nothing changed.
5384         (simplify_unary_expression): New function.  Do tree combining
5385         on conversion like codes.
5386         (try_to_simplify): Call it.
5387         * builtins.c (fold_builtin_cexp): Fold the built expressions.
5388         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
5389
5390 2007-09-06  Jan Hubicka  <jh@suse.cz>
5391
5392         PR target/33318
5393         * cse.c (fold_rtx): Avoid invalid sharing.
5394
5395 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5396
5397         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
5398         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
5399
5400 2007-09-06  Revital Eres  <eres@il.ibm.com>
5401
5402         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
5403         Fix offsettable memory reference for 750CL.
5404
5405 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
5406
5407         * reload.c (find_reloads_address_1): Try to preserve original
5408         base/index regclass of operands.
5409         * regrename.c (scan_rtx_address): Likewise.
5410         (replace_oldest_value_addr): Likewise.
5411
5412 2007-09-06  Richard Guenther  <rguenther@suse.de>
5413
5414         PR tree-optimization/33302
5415         * domwalk.c (walk_dominator_tree): The exit block is
5416         interesting even if it is not reachable.
5417
5418 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5419
5420         PR middle-end/33306
5421         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
5422
5423 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
5424
5425         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
5426         robustness.
5427
5428 2007-09-05  Ian Lance Taylor  <iant@google.com>
5429
5430         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
5431         when printing.
5432         (dump_generic_node): Likewise.
5433         * print-rtl.c (print_decl_name): Likewise.
5434         * print-tree.c (print_node_brief): Likewise.
5435         (print_node): Likewise.
5436         * Makefile.in (RTL_BASE_H): Add alias.h.
5437         (TREE_H): Likewise.
5438
5439 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
5440
5441         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
5442         Defined.
5443         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
5444         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
5445
5446 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
5447
5448         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
5449         (tm_defines): Define UCLIBC_DEFAULT to 1.
5450         (extra_options): Add linux.opt.
5451         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
5452         (CRT_CALL_STATIC_FUNCTION): Likewise.
5453         (NO_IMPLICIT_EXTERN_C): Likewise.
5454         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
5455         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
5456         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
5457         (ENDFILE_SPEC): Don't define.
5458         (LIB_SPEC): Likewise.
5459         (CRT_CALL_STATIC_FUNCTION): Likewise.
5460         (NO_IMPLICIT_EXTERN_C): Likewise.
5461         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
5462         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
5463
5464 2007-09-06  Jan Hubicka  <jh@suse.cz>
5465
5466         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
5467         real_2expN.
5468
5469 2007-09-06  Jan Hubicka  <jh@suse.cz>
5470
5471         * opts.c (common_handle_option): Enable inlining functions for
5472         -fprofile-generate.
5473
5474 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
5475
5476         * builtin-attrs.def (ATTR_NONNULL_3): New.
5477         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
5478         ATTR_NOTHROW_NONNULL_##FA.
5479         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
5480         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
5481         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
5482         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
5483         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
5484         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
5485         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
5486         New.
5487         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
5488         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
5489         ATTR_FORMAT_NOTHROW_3_4): Remove.
5490         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
5491         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
5492         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
5493         instead of ATTR_FORMAT_*_*.
5494
5495 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
5496
5497         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
5498         parts re-used for REG_FRAME_RELATED_EXPR.
5499
5500 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
5501
5502         * optabs.c (expand_float): Convert unsigned integer as signed only
5503         if it provides sufficient accuracy; add mode argument to real_2expN.
5504         (expand_fix): Fix comment typos; extend binary float into mode
5505         wider than destination for converion to unsigned integer; add mode
5506         argument to real_2expN.
5507         * real.c (real_2expN): Add mode argument to special-case decimal
5508         float values.
5509         * real.h (real_2expN): Ditto.
5510         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
5511         real_2expN.
5512         (fixed_from_string): Ditto.
5513         (fixed_to_decimal): Ditto.
5514         (fixed_convert_from_real): Ditto.
5515         (real_convert_from_fixed): Ditto.
5516         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
5517         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
5518         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
5519         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
5520
5521 2007-09-05  Ian Lance Taylor  <iant@google.com>
5522
5523         * init-regs.c (initialize_uninitialized_regs): Call
5524         emit_insn_before rather than add_insn_before.
5525
5526 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
5527
5528         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
5529         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
5530         * tree-inline.h (copy_body_data): Add call_expr field.
5531         * tree-inline.c (expand_call_inline): Initialize call_expr.
5532         (copy_bb): Append anonymous inline fn arguments to arguments
5533         when inlining a CALL_EXPR_VA_ARG_PACK call.
5534         * builtins.c (expand_builtin): Issue an error if
5535         BUILT_IN_VA_ARG_PACK is seen during expand.
5536         (fold_call_expr, fold_builtin_call_array): Don't fold
5537         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
5538         __builtin_va_arg_pack () call as last argument.
5539         * gimplify.c (gimplify_call_expr): If last argument to a vararg
5540         function is __builtin_va_arg_pack (), decrease number of call
5541         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
5542         * expr.c (expand_expr_real_1): Issue an error if
5543         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
5544         * tree-pretty-print.c (dump_generic_node): Handle printing
5545         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
5546         * doc/extend.texi (__builtin_va_arg_pack): Document.
5547
5548 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
5549
5550         PR tree-optimization/21513
5551         * builtins.c (build_builtin_expect_predicate): New function.
5552         (fold_builtin_expect): Add argument for expected value.
5553         Distribute __builtin_expect over short-circuiting operations.
5554         Fold nested builtin_expects.
5555         (fold_builtin_2): Adjust call to fold_builtin_expect.
5556
5557 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5558
5559         PR web/32965
5560         PR tree-optimization/13756
5561         * doc/invoke.texi (Options That Control Optimization): Document
5562         -ftree-dse.
5563
5564 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
5565
5566         * gcc/config/i386/cpuid.h: New file.
5567         * gcc/config/i386/driver-i386.c: Include cpuid.h.
5568         (describe_cache): Shrink size and line strings to 100 bytes.
5569         (detect_caches_amd): Return "" for unsupported max_ext_level.
5570         Use __cpuid function.
5571         (detect_caches_intel): Return "" for unsupported max_level.
5572         Use __cpuid function.
5573         (host_detect_local_cpu): Change feature flag variables to
5574         unsigned int.  Initialize only extended feature flag variables.
5575         Use __get_cpuid_max to determine max supported cpuid level.
5576         Use __cpuid function to determine supported features.  Fix
5577         calculation of family id.  Remove is_amd and check signature
5578         directly.  Check for Geode signature.  Handle family 4 id.
5579         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
5580         cpu discovery code to lower part of the function.
5581         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
5582         for sub-architecture.
5583         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
5584         [PROCESSOR_K8]: Add k8-sse3 architecture.
5585         [PROCESSOR_NOCONA]: Remove.
5586         [PROCESSOR_GENERIC64]: Ditto.
5587         * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
5588         * gcc/config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
5589         to check for SSE and FXSAVE support.
5590         * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
5591         Add -minline-all-stringops.
5592         * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
5593         (x86_64-*-*): Ditto.
5594
5595 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
5596
5597         * config/bfin/linux-unwind.h: New file.
5598         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
5599         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
5600
5601 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5602
5603         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
5604         * stmt.c: Include alloc-pool.h.
5605         (struct case_node): Remove GTY marker.
5606         (add_case_node): New parameter case_node_pool.  Use it for
5607         allocation of r.
5608         (expand_case): New allocation pool case_node_pool.  Initialize it,
5609         pass to add_case_node and free it.
5610
5611 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
5612             David Ung  <davidu@mips.com>
5613             Nigel Stephens <nigel@mips.com>
5614
5615         Add mips16/nomips16 function attributes and -mflip-mips16 option
5616         for testing mixed-mode compilation.
5617
5618         * config/mips/mips.opt (mflip-mips16): New.
5619
5620         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
5621         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
5622
5623         * config/mips/mips.c (mips_base_target_flags): New.
5624         (mips_base_mips16): New.
5625         (mips_base_schedule_insns): New.
5626         (mips_base_reorder_blocks_and_partition): New.
5627         (mips_base_align_loops): New.
5628         (mips_base_align_jumps): New.
5629         (mips_base_align_functions): New.
5630         (mips16_flipper): New.
5631         (mips_attribute_table): Add "mips16" and "nomips16" entries.
5632         (TARGET_SET_CURRENT_FUNCTION): Define.
5633         (mips_mips16_type_p, mips_nomips16_type_p): New.
5634         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
5635         (mips_function_ok_for_sibcall): Make it deal with functions with
5636         mips16 attributes.
5637         (mips_init_split_addresses): New, split out from override_options.
5638         (mips_init_relocs): New, split out from override_options.
5639         (was_mips16_p): New.
5640         (mips_set_mips16_mode): New, split out from override_options.
5641         (mips_set_current_function): New.
5642         (override_options): Add sorry for unsupported mips16/pic
5643         combination.  Remove error for mips16/dsp combination.  Save
5644         base option settings.  
5645         (mips_file_start): Move mips16 mode setting output from here....
5646         (mips_output_function_prologue): ....to here.
5647         (mips_output_mi_thunk): Check for mips16 function.
5648         (build_mips16_function_stub): Don't set .mips16 here.
5649         (build_mips16_call_stub): Likewise.
5650         (mips_expand_builtin): Error in mips16 mode.
5651         (mips_use_mips16_mode_p): New.
5652         (mips_encode_section_info): Check for mips16 function, and set
5653         SYMBOL_REF_FLAGS accordingly.
5654
5655         * doc/extend.texi (Function Attributes): Document new
5656         mips16/nomips16 attributes.
5657         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
5658         (MIPS Options): Document -mflip-mips16.
5659
5660 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
5661
5662         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
5663         if we encounter TLS address in MIPS16 mode.
5664         (mips_legitimize_const_move): Check cannot_force_const_mem for
5665         the (const (plus symbol offset)) case; this forces invalid TLS
5666         address in MIPS16 mode to be caught by the above call to sorry.
5667         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
5668         because that now enables emutls, which is not ABI compatible
5669         with native TLS in non-MIPS16 mode.
5670
5671 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
5672
5673         Add target hook invoked when cfun changes.
5674
5675         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
5676         * target.h (struct gcc_target): Add set_current_function.
5677         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
5678         (TARGET_INITIALIZER): Add initializer for set_current_function.
5679         * tree.h (push_struct_function): New.
5680         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
5681         * function.h: Here.
5682         (set_cfun): Declare.
5683         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
5684         * function.c: Here.
5685         (push_function_context_to): Use allocate_struct_function
5686         to create null context, not init_dummy_function_start.  Use set_cfun.
5687         (pop_function_context_from): Use set_cfun.
5688         (in_dummy_function): New.
5689         (invoke_set_current_function_hook): New.
5690         (set_cfun): New.
5691         (push_cfun, pop_cfun): Use set_cfun.
5692         (push_struct_function): New.
5693         (allocate_struct_function): Call invoke_set_current_function_hook
5694         before returning.
5695         (prepare_function_start): Don't set cfun here.  Remove unused
5696         argument; fix all callers.
5697         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
5698         push_struct_function.
5699         (init_function_start): Set cfun here.
5700         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
5701         * omp-low.c (create_omp_child_function): Use push_struct_function
5702         and pop_cfun to save/restore state.
5703         (expand_omp_parallel): Remove unused saved_cfun variable.
5704         * cgraphunit.c (ipa_passes): Use set_cfun.
5705         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
5706         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
5707         * matrix-reorg.c (transform_allocation_sites): Likewise.
5708         (matrix_reorg): Use set_cfun.
5709         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
5710         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
5711         assignment to cfun; use set_cfun for the other.
5712         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
5713         (dump_function_to_file): Use push_cfun/pop_cfun here.
5714         * c-decl.c (finish_function): Use set_cfun.
5715
5716 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
5717
5718         * regrename.c (rerename_optimize): Use deferred rescanning and
5719         insert explicit calls to rescan insns when changed.
5720         
5721 2007-09-05  Jan Hubicka  <jh@suse.cz>
5722
5723         * optabs.c (libfunc_entry): Change optab to integer.
5724         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
5725         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
5726         of pointers for hashing.
5727
5728 2007-09-05  Jan Hubicka  <jh@suse.cz>
5729
5730         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
5731         verifier.
5732         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
5733         * see.c (pass_see): Likewise.
5734         * tracer.c (pass_tracer): Likewise.
5735         * postreload-gcse.c (pass_gcse2): Likewise.
5736         * postreload.c (pass_postreload_cse): Likewise.
5737         * mode-switching.c (pass_mode_switching): Likewise.
5738         * modulo-sched.c (pass_sms): Likewise.
5739         * cse.c (cse_insn): Likewise.
5740         * web.c (pass_web): Likweise.
5741         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
5742         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
5743         * loop-init.c (pass_rtl_loop_init): Likewise.
5744         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
5745         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
5746         * global.c (pass_global_alloc): Likewise.
5747         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
5748         pass_if_after_reload): Likewise.
5749         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
5750         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
5751         * regmove.c (pass_regmove): Likewise.
5752         * function.c (pass_thread_prologugues_epilogues): Likewise.
5753         * gcse.c (pass_gcse): Likewise.
5754         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
5755         * lower-subreg.c (pass_lower_subreg2): Likewise.
5756         * bt-load.c (pass_branch_target_load): Likewise.
5757         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
5758         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
5759         * combine.c (pass_combine): Likewise.
5760         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
5761         (pass_partition_blocks): Likewise.
5762         * var-tracking.c (pass_variable_track): Likewise.
5763         * reg-stack.c (pass_stack_regs_run): Likewise.
5764         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
5765         * passes.c (pass_postreload): Likewise.
5766         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
5767         * tree-pass.h (TODO_verify_rtl_sharing): New.
5768         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
5769         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
5770         TODO_set_props, TODO_df_finish, TODO_df_verify,
5771         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
5772
5773 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5774
5775         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
5776         fold_real_zero_addition_p, reorder_operands_p,
5777         div_if_zero_remainder, fold_undefer_overflow_warnings,
5778         int_binop_types_match_p, fold_convert_const_int_from_int,
5779         fold_convert_const_int_from_real,
5780         fold_convert_const_int_from_fixed,
5781         fold_convert_const_real_from_real,
5782         fold_convert_const_real_from_fixed,
5783         fold_convert_const_fixed_from_fixed,
5784         fold_convert_const_fixed_from_int,
5785         fold_convert_const_fixed_from_real, maybe_lvalue_p,
5786         fold_checksum_tree, fold_check_failed, print_fold_checksum,
5787         debug_fold_checksum, multiple_of_p): Constify.
5788         * tree-flow-inline.h (get_lineno): Likewise.
5789         * tree-flow.h (get_lineno): Likewise.
5790         * tree-object-size.c (compute_object_offset, addr_object_size,
5791         alloc_object_size, pass_through_call): Likewise.
5792         * tree-pretty-print.c (op_symbol, print_call_name,
5793         print_struct_decl, do_niy): Likewise.
5794         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
5795         debug_fold_checksum): Likewise.
5796
5797 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
5798
5799         PR middle-end/33029
5800         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
5801         note, remove the associated REG_RETVAL note.
5802
5803 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5804
5805         * config.gcc (powerpc*-*-*): Install
5806         spu2vmx.h, vec_types.h, and si2vmx.h headers.
5807         * config/rs6000/spu2vmx.h: New header.
5808         * config/rs6000/si2vmx.h: New header.
5809         * config/rs6000/vec_types.h: New header.
5810
5811 2007-09-05  Ben Elliston  <bje@au.ibm.com>
5812
5813         * varasm.c (initializer_constant_valid_p): Fix comment typo.
5814
5815 2007-09-05  Ben Elliston  <bje@au.ibm.com>
5816
5817         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
5818         not `m' for *ptrp.
5819         (__stdcx): Make asm volatile.
5820         (__stwcx, __stdcx): Return only 0 or 1.
5821
5822 2007-09-05  Jan Hubicka  <jh@suse.cz>
5823
5824         Revert:
5825
5826         2007-09-04  Jan Hubicka  <jh@suse.cz>
5827         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
5828
5829         2007-09-04  Richard Guenther  <rguenther@suse.de>
5830         * tree-ssa-operands.c (add_virtual_operand): Only mark
5831         stores as has_volatile_ops if alias information is not available.
5832
5833 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
5834
5835         * config/rs6000/tramp.asm: Include config.h.
5836         Check __PIC__ or __pic__ macro instead of SHARED.
5837
5838         PR rtl-optimization/32300
5839         * see.c (see_copy_insn): New function.
5840         (see_def_extension_not_merged, see_merge_one_use_extension,
5841         see_merge_one_def_extension): Use it.  Avoid changing
5842         PREV_INSN/NEXT_INSN chains directly, insted emit insns
5843         into sequences.  Call df_insn_delete on temporary insns
5844         that won't be emitted into the insn stream.
5845         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
5846         and run df_process_deferred_rescans () before run_fast_dce.
5847
5848         PR tree-optimization/33017
5849         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
5850         recurse for pure or const function calls.
5851
5852 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5853
5854         * c-format.c: Include alloc-pool.h.
5855         (check_format_info_main): New argument fwt_alloc.  Use allocation
5856         pool instead of GC.  Remove GC deallocation code.
5857         (check_format_arg): Create allocation pool, pass it to
5858         check_format_info_main and free it afterwards.
5859         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
5860
5861 2007-09-05  Ben Elliston  <bje@au.ibm.com>
5862
5863         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
5864         Rename count macro arugment for clarity.
5865         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
5866         (__protected_stream_set): Likewise, pass 0.
5867
5868 2007-09-04  Jan Hubicka  <jh@suse.cz>
5869
5870         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
5871
5872 2007-09-04  Jan Hubicka  <jh@suse.cz>
5873
5874         * invoke.texi (-finline-small-functions): Document.
5875         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
5876         when deciding what is inlinable.
5877         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
5878         (cgraph_decide_inlining_of_small_function): Handle new flags.
5879         (cgraph_decide_inlining_incrementally): Likewise.
5880         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
5881         * common.opt (finline-small-functions): New.
5882         * Makefile.in (build/gengtype.o-warn): Work around PR29478
5883
5884 2007-09-04  Richard Guenther  <rguenther@suse.de>
5885
5886         * tree-ssa-operands.c (add_virtual_operand): Only mark
5887         stores as has_volatile_ops if alias information is not available.
5888
5889 2007-09-04  Andrew Haley  <aph@redhat.com>
5890
5891         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
5892
5893 2007-09-04  Andrew Haley  <aph@redhat.com>
5894
5895         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
5896         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
5897         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
5898
5899 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
5900
5901         PR c++/14178
5902         * common.opt: Mention ABI version 2 in comment.
5903
5904 2007-09-04  Jan Hubicka  <jh@suse.cz>
5905
5906         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
5907         (libfunc_entry): New structure.
5908         (libfunc_hash): New hashtable.
5909         (hash_libfunc): New function.
5910         (eq_libfunc): New function.
5911         (convert_optab_libfunc): New function.
5912         (optab_libfunc): New function.
5913         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
5914         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
5915         expand_float, expand_fix, new_optab, new_convert_optab):
5916          Update for new libfunc API.
5917         (init_libfunc, init_integral_libfuncs,
5918         init_floating_libfuncs, init_interclass_conv_libfuncs
5919         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
5920         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
5921         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
5922         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
5923         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
5924         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
5925         gen_extend_conv_libfunc): New.
5926         (init_one_libfunc): Revamp for hashtables.
5927         (set_conv_libfunc): Likewise.
5928         (init_optabs): Initialize hashtable; use lazy initialization where
5929         possible.
5930         * optabs.h (optab_handlers): Move out of GGC.
5931         (optab, convert_optab): Move out of GGC; add lazy gen info.
5932         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
5933         (optab_libfunc, convert_optab_libfunc): New.
5934         * builtins.c (expand_builtin_powi): Update for new API.
5935         * expr.c (convert_move): Likewise.
5936         * expmed.c (expand_divmod): Likewise.
5937
5938 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
5939
5940         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
5941         GOT pointer only if there is a constant pool.  Use the allocated space
5942         for SPE also.
5943
5944 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
5945
5946         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
5947         typo for AltiVec.
5948
5949 2007-09-04  Revital Eres  <eres@il.ibm.com>
5950             Richard Guenther  <rguenther@suse.de>
5951             R. Clint Whaley  <whaley@cs.utsa.edu>
5952
5953         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
5954         Document new flags.
5955         * tree-tailcall.c (process_assignment): Use -fassociative-math
5956         when reodering operands of floating-point type.
5957         * fold-const.c (fold_comparison, fold_binary): Use
5958         -fassociative-math and -freciprocal-math instead of
5959         -funsafe-math-optimization flag.
5960         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
5961         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
5962         -freciprocal-math instead of -funsafe-math-optimizations.
5963         * opts.c (set_fast_math_flags): Set -freciprocal-math and
5964         -fassociative-math when -ffast-math is set.
5965         (set_unsafe_math_optimizations_flags): New Function
5966         to set -freciprocal-math and -fassociative-math when
5967         -funsafe-math-optimizations is set.
5968         (common_handle_option): Call it.
5969         * tree-vectorizer.c (vect_is_simple_reduction): Use
5970         -fassociative-math when doing reduction on floats.
5971         * loop-unroll.c (analyze_insn_to_expand_var): Use
5972         -fassociative-math when expanding an accumulator of type float.
5973         * simplify-rtx.c (simplify_binary_operation_1): Use
5974         -fassociative-math and -freciprocal-math when reordeing operands
5975         of floating-point type.
5976         * combine.c (combine_simplify_rtx): Likewise.
5977         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
5978         Likewise.
5979         * common.opt (-fassociative-math, -freciprocal-math): New flags.
5980
5981 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
5982
5983         PR c++/18608
5984         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
5985
5986 2007-09-04  Jan Hubicka  <jh@suse.cz>
5987
5988         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
5989
5990 2007-09-04  Jan Hubicka  <jh@suse.cz>
5991
5992         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
5993         and corresponding MATCH_DUP.
5994
5995 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
5996
5997         PR middle-end/33187
5998         * combine.c (subst): Do not try to simplify X if it represents load
5999         of FP constant from the constant pool via float extension.
6000
6001 2007-09-04  Ben Elliston  <bje@au.ibm.com>
6002
6003         * c-opts.c: Include "tm_p.h".
6004         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
6005
6006 2007-09-04  Richard Guenther  <rguenther@suse.de>
6007
6008         PR tree-optimization/33291
6009         * tree-pretty-print.c (dump_generic_node): Dump all
6010         qualifiers for pointer types, not only first.  Dump
6011         qualifiers for aggregate types as well.
6012         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
6013         use the canonical type for building ARRAY_REFs.
6014         * gimplify.c (canonicalize_addr_expr): Clean up.  The
6015         correct validness check is compatibility of the pointer
6016         types.  Always use the canonical type for building
6017         ARRAY_REFs and ADDR_EXPRs.
6018         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
6019         change that disabled propagation of ADDR_EXPRs into statements
6020         with volatile ops.
6021
6022 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
6023
6024         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
6025         (umulsi3_highpart): Make into expanders; existing insns are
6026         now named *[insn]_nov6.  Add stars to existing [insn]_v6
6027         counterparts' names.
6028
6029 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
6030
6031         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
6032         (unprotoize.o): Remove SHLIB_MULTILIB.
6033
6034 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
6035
6036         * doc/extend.texi: Document progmem attribute for AVR.
6037
6038 2007-09-03  Anatoly Sokolov <aesok@post.ru>
6039
6040         PR target/28902
6041         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
6042
6043 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
6044
6045         * optabs.c (expand_ffs): Initialize val and defined_at_zero
6046         to avoid warnings.
6047
6048         * optabs.c: Remove unnecessary forward declarations.
6049         (expand_unop_direct): New, broken out of expand_unop.
6050         (expand_doubleword_clz): New.
6051         (expand_ctz): Move above expand_ffs.  Use
6052         start_sequence, end_sequence, add_equal_note, and
6053         expand_unop_direct.  Add more commentary.
6054         (expand_ffs): Try both ctz optab and expand_ctz.
6055         Generate a test and branch if the hardware doesn't give us
6056         a useful value for input zero.  Style improvements similar to
6057         expand_ctz.
6058
6059         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
6060
6061 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
6062
6063         * config.gcc: Delete stanza for arm-semi-aof and
6064         armel-semi-aof targets.
6065         * config/arm/arm-protos.h
6066         * config/arm/arm.c
6067         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
6068         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
6069         delete aof_pic_label and remove mention of AOF in comments.
6070         * config/arm/arm.md: Delete patterns used only for AOF assembly.
6071         * config/arm/aof.h
6072         * config/arm/semiaof.h
6073         * config/arm/t-semi: Delete file.
6074
6075 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6076
6077         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
6078         CONST_CAST_BB): New macros for type-specific casts.
6079         (CONST_CAST): Add a TYPE parameter and define it in terms of
6080         CONST_CAST2.
6081
6082         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
6083         * c-lex.c (cb_ident, lex_string): Likewise,
6084         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
6085         * config/i386/i386.c (ix86_function_regparm,
6086         ix86_function_sseregparm): Use CONST_CAST_TREE.
6087         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
6088         CONST_CAST.
6089         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
6090         give_switch, set_multilib_dir): Likewise,
6091         * gengtype-parse.c (string_seq, typedef_name): Likewise,
6092         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
6093         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
6094         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
6095         * prefix.c (update_path): Likewise,
6096         * pretty-print.c (pp_base_destroy_prefix): Likewise,
6097         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
6098         * tree-cfg.c (tree_can_merge_blocks_p,
6099         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
6100         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
6101         * tree.c (build_string): Supply a TYPE for CONST_CAST.
6102         (attribute_list_contained): Use CONST_CAST_TREE.
6103
6104 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
6105
6106         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
6107
6108 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
6109
6110         PR middle-end/33290
6111         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
6112         before forcing them into a register.
6113
6114 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
6115
6116         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
6117         rather than define_code_macro.
6118
6119 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6120
6121         * gcc.c (xputenv): New function.
6122         (putenv_from_prefixes): Use xputenv instead of putenv.
6123         (process_command): Use xputenv instead of putenv.
6124         (set_collect_gcc_options): Use xputenv instead of putenv.
6125         (main): Use xputenv instead of putenv.
6126
6127 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
6128
6129         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
6130         availability of swap instruction.
6131         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
6132
6133 2007-09-03  Revital Eres  <eres@il.ibm.com>
6134
6135         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
6136         Documentation.
6137
6138 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
6139             Ayal Zaks  <zaks@il.ibm.com>
6140             Revital Eres  <eres@il.ibm.com>
6141
6142         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
6143         compute_split_row): New functions.
6144         (ps_unschedule_node): Remove.
6145         (normalize_sched_times): Iterate over the already scheduled
6146         insns instead of the number of nodes.
6147         (MAX_SPLIT_NUM): New definition.
6148         (sms_schedule_by_order): Change the scheduling heuristic to
6149         avoid useless increases of initiation interval ii.
6150         (get_sched_window): Add dump printouts.
6151
6152 2007-09-02  David Daney  <ddaney@avtrex.com>
6153
6154         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
6155         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
6156         (optab, insn): Add more attributes.
6157         (fetchop_bit): New code macro.
6158         (immediate_insn): New code macro attribute.
6159         (sync): Change condition to ISA_HAS_SYNC.
6160         (rdhwr): Change predicate for operand 0 to register_operand.
6161         (memory_barrier): New expand.
6162         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
6163         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
6164         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
6165         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
6166         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
6167         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
6168         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
6169         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
6170         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
6171         
6172 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
6173             Hans-Peter Nilsson  <hp@axis.com>
6174
6175         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
6176         Defined to describe availability and behavior of CLZ.
6177         * config/cris/cris.md (clzsi2): Implement using lz instruction.
6178         * config/cris/cris.opt: Tweak comment for "-metrax4".
6179         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
6180         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
6181         (count_leading_zeros): Define.
6182
6183 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6184
6185         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
6186
6187 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
6188
6189         PR middle-end/33272
6190         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
6191         decayed from array.
6192
6193 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
6194
6195         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
6196         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
6197         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
6198         sched-deps.c, sched-int.h, system.h, target.h,
6199         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
6200         tree.def: Fix comment typos.
6201
6202 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
6203
6204         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
6205         (override_options): Turn on -mstrict-align on non-ColdFire
6206         targets.
6207         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
6208
6209 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6210
6211         * c-common.c (const_strip_array_types): Delete.
6212         * c-common.h (const_strip_array_types): Likewise.
6213         * emit-rtl.c (const_next_insn, const_previous_insn,
6214         const_next_nonnote_insn, const_prev_nonnote_insn,
6215         const_next_real_insn, const_prev_real_insn,
6216         const_next_active_insn, const_prev_active_insn, const_next_label,
6217         const_prev_label): Delete.
6218         * gimple-low.c (block_may_fallthru): Use expr_last.
6219         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
6220         * rtl.h (const_previous_insn, const_next_insn,
6221         const_prev_nonnote_insn, const_next_nonnote_insn,
6222         const_prev_real_insn, const_next_real_insn,
6223         const_prev_active_insn, const_next_active_insn, const_prev_label,
6224         const_next_label): Delete.
6225         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
6226         * system.h (CONST_CAST): Update comment.
6227         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
6228         (const_first_stmt, const_last_stmt): Delete.
6229         (tree_block_ends_with_condjump_p): Use last_stmt.
6230         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
6231         * tree-iterator.c (const_expr_first, const_expr_last,
6232         const_expr_only): Delete.
6233         * tree.c (const_lookup_attribute): Likewise.
6234         (attribute_list_contained): Use lookup_attribute.
6235         * tree.h (const_lookup_attribute, const_expr_first,
6236         const_expr_last, const_expr_only): Delete.
6237
6238 2007-09-01  Richard Guenther  <rguenther@suse.de>
6239
6240         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
6241         instead of TREE_THIS_VOLATILE.
6242         * tree-ssa-operands.c (add_virtual_operand): Do not set
6243         has_volatile_ops.  Do not check s_ann for NULL.
6244         (get_indirect_ref_operands): Likewise.
6245         (get_expr_operands): Likewise.  For all reference trees
6246         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
6247         check base of reference for TREE_THIS_VOLATILE.
6248
6249 2007-09-01  Richard Guenther  <rguenther@suse.de>
6250
6251         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
6252         between integral types.  Also allow conversions between
6253         pointer types.
6254
6255 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6256
6257         * optabs.c (prepare_float_lib_cmp): Use
6258         libgcc_cmp_return_mode instead of word_mode.
6259         * config/dfp-bit.h: Likewise.
6260         * config/fp-bit.h: Likewise.
6261         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
6262         New function.
6263         (spu_libgcc_shift_count_mode): New function.
6264         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
6265         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
6266
6267 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
6268
6269         * tree-pretty-print.c: Include output.h.
6270         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
6271         HOST_WIDE_INT_PRINT_DEC.
6272         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
6273
6274 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
6275
6276         PR rtl-optimization/33224
6277         * loop-iv.c (latch_dominating_def): Check that the definition belongs
6278         to the analysed region.
6279
6280 2007-08-31  Richard Guenther  <rguenther@suse.de>
6281
6282         * function.c (allocate_struct_function): Do not set
6283         current_function_returns_pointer.
6284         * function.h (struct var_refs_queue): Remove.
6285         (struct simple_obstack_stack): Likewise.
6286         (struct function): Remove fixup_var_refs_queue member.
6287         Remove returns_pointer flag.
6288         (current_function_returns_pointer): Remove define.
6289
6290 2007-08-31  Nick Clifton  <nickc@redhat.com>
6291
6292         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
6293         secondary keys in order to obtain a stable sort.
6294
6295 2007-08-31  Nick Clifton  <nickc@redhat.com>
6296
6297         PR target/33132
6298         * config/m32r/constraints.md: Add W constraint for integer zero.
6299         * config/m32r/m32r.md (get_pc): Use W and i constraints.
6300         Fix length calculation by using alternatives.
6301
6302 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
6303
6304         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
6305         split out from expand_binop.
6306         (avoid_expensive_constant): New function.
6307         (expand_binop_directly): Remove commutative_op argument and
6308         (expand_binop_directly): Remove commutative_op argument and
6309         call cummutative_optab_p instead.  Do not change op0 or op1
6310         when swapping xop0 and xop1.  Apply avoid_expensive_constant
6311         to each argument after potential swapping.  Enforce the
6312         canonical order of commutative operands.
6313         (expand_binop): Use shift_optab_p and commutative_optab_p.
6314         Update the calls to expand_binop_directly.  Only force constants
6315         into registers when widening an operation.  Only swap operands
6316         once a direct expansion has been rejected.
6317         (expand_twoval_binop): Only force constants into registers when
6318         using a direct expansion.
6319
6320 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
6321
6322         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
6323         (sched_analyze_insn): Don't postprocess speculative dependencies when
6324         target has no scheduling.
6325         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
6326         'uninitialized' warning.
6327
6328 2007-08-31  Richard Guenther  <rguenther@suse.de>
6329
6330         * tree.c (build_complex_type): Always set TYPE_NAME for
6331         comples types.
6332
6333 2007-08-31  Olivier Hainque  <hainque@adacore.com>
6334
6335         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
6336         internal macro. Default alignment factor for csect directives, chosen
6337         to match what BIGGEST_ALIGNMENT allows.
6338         (DATA_SECTION_ASM_OP): Use it.
6339         * config/rs6000/rs6000.c
6340         (rs6000_xcoff_output_readonly_section_asm_op):
6341         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
6342         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
6343         
6344 2007-08-31  Olivier Hainque  <hainque@adacore.com>
6345
6346         * dbxout.c (dbxout_block): Move declaration within the first
6347         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
6348         block to include the definition, together with the associated
6349         helpers.
6350
6351 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
6352             Revital Eres  <eres@il.ibm.com>
6353
6354         * doc/invoke.texi (-mpaired): Document flag.
6355         * config.gcc: Include paired.h in powerpc extra_headers and
6356         750cl.h in powerpc-*-linux*paired*.
6357         * config/rs6000/rs6000.opt (-mpaired): New flag.
6358         * config/rs6000/rs6000.c (paired_init_builtins,
6359         paired_expand_builtin, paired_expand_lv_builtin,
6360         paired_expand_stv_builtin, paired_expand_predicate_builtin):
6361         New functions to support the paired single builtin functions.
6362         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
6363         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
6364         single builtins.
6365         (bdesc_paired_preds): New structure for paired predicate
6366         instructions.
6367         (rs6000_expand_builtin): Expand paired single builtins.
6368         (rs6000_init_builtins): Init paired single builtins.
6369         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
6370         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
6371         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
6372         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
6373         (rs6000_vector_mode_supported_p): Support paired vector mode.
6374         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
6375         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
6376         New.
6377         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
6378         (DATA_ALIGNMENT): Likewise.
6379         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
6380         (rs6000_builtins): Add PAIRED builtins.
6381         * config/rs6000/rs6000.md: Include paired.md.
6382         * config/rs6000/paired.h: New.
6383         * config/rs6000/paired.md: New.
6384         * config/rs6000/750cl.h: New.
6385         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
6386
6387 2007-08-30  Ollie Wild  <aaw@google.com>
6388
6389         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
6390         * gcc.c (default_compilers): Add -fno-directives-only to
6391         @assembler-with-cpp.
6392
6393 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
6394
6395         PR middle-end/33211
6396
6397         * regclass.c (initial_fixed_regs): Revert previous change and make
6398         it const again.
6399         (initial_call_used_regs): Likewise.
6400         (initial_call_really_used_regs): Delete, reverting previous addition.
6401         (initial_reg_names): Likewise.
6402         (init_reg_sets): Revert previous change.
6403         (saved_fixed_regs): New.
6404         (saved_call_used_regs): New.
6405         (saved_call_really_used_regs): New.
6406         (saved_reg_names): New.
6407         (save_register_info): New.
6408         (restore_register_info): New.
6409         (init_reg_sets_1): Replace reset of register info with call to
6410         restore_register_info.
6411         * rtl.h (save_register_info): Declare.
6412         * toplev.c (backend_init): Call save_register_info.
6413
6414 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6415
6416         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
6417         from the original statement.
6418
6419 2007-08-30  Chao-ying Fu  <fu@mips.com>
6420
6421         * c-lex.c (interpret_fixed): Declare.
6422         (interpret_float): Process _Fract and _Accum.
6423         (interpret_fixed): New function.
6424         * final.c (output_addr_const): Process CONST_FIXED.
6425         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
6426         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
6427         SS_DIV, US_DIV.
6428         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
6429         US_DIV, US_ASHIFT.
6430         (simplify_immed_subreg): Support CONST_FIXED.
6431         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
6432         (simplify_subreg): Support CONST_FIXED.
6433
6434 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6435
6436         * config/rs6000/ppu_intrinsics.h: New file.
6437         * config.gcc (powerpc*-*-* <extra_headers>): Install
6438         ppu_intrinsics.h.
6439
6440 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
6441
6442         * cfg.c (dump_flow_info): Change to also print entry and exit
6443         block info.
6444         * print-rtl.c (print_rtl_single): Allow to print rtl with
6445         -fdump-unnumbered.
6446         
6447 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
6448
6449         * df-core.h (df_dump_region): New function.
6450         * df.h (df_dump_region): New function.
6451         * loop-invariant.c (find_defs): Add call to df_dump_region.
6452         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
6453         df_dump_region.
6454         
6455 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
6456
6457         PR target/33168
6458         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
6459         true if any of the compare_section_name calls returned true,
6460         rather than if any returned false.
6461
6462 2007-08-30  Richard Guenther  <rguenther@suse.de>
6463
6464         PR tree-optimization/33199
6465         * tree-ssa-structalias.c (handle_lhs_call): New function.
6466         (find_func_aliases): In non-IPA mode make sure that for
6467         calls that return a pointer we add a constraint for the
6468         result to point to anything.
6469
6470 2007-08-30  Richard Guenther  <rguenther@suse.de>
6471
6472         * doc/invoke.texi (-mveclibabi): Document new target option.
6473         * config/i386/i386.opt (-mveclibabi): New target option.
6474         * config/i386/i386.c (ix86_veclib_handler): Handler for
6475         vectorization library support.
6476         (override_options): Handle the -mveclibabi option, initialize
6477         the vectorization library handler.
6478         (ix86_builtin_vectorized_function): As fallback call the
6479         vectorization library handler, if set.
6480         (ix86_veclibabi_acml): New static function for ACML ABI style
6481         vectorization support.
6482
6483 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
6484
6485         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
6486         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
6487         SImode and update m.  Don't run gen_lowpart_common on arbitrary
6488         memory address, force it to register first.
6489
6490         PR middle-end/32758
6491         * dce.c (dce_process_block): Don't delete setters of
6492         artificially used registers.
6493
6494 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6495
6496         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
6497         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
6498         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
6499
6500 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6501
6502         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
6503         pattern.
6504         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
6505         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
6506
6507 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6508
6509         * system.h: Activate -Wcast-qual as warning-only.
6510
6511 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
6512
6513         PR target/33168
6514         * config/rs6000/rs6000.c (compare_section_name): New function.
6515         (rs6000_elf_in_small_data_p): Compare section prefixes instead
6516         of full name.
6517
6518 2007-08-29  Olivier Hainque  <hainque@adacore.com>
6519
6520         * xcoffout.c: #include debug.h.
6521         * Makefile.in (xcoffout.o): Add debug.h dependency.
6522
6523 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
6524
6525         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
6526         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
6527
6528 2007-08-29  Richard Guenther  <rguenther@suse.de>
6529
6530         * tree-pretty-print.c (dump_generic_node): Print
6531         label DECL_UID as D.%u.
6532         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
6533
6534 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6535
6536         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
6537         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
6538
6539 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
6540
6541         PR c++/33194
6542         * tree.c (build_type_attribute_qual_variant): Set canonical types
6543         on the final, unqualified attribute variant before building the
6544         qualified version.
6545
6546 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6547
6548         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
6549         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
6550
6551 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6552
6553         Revert
6554         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6555         * config/bfin/bfin.md (composev2hi): Put operands into vector
6556         with correct order.
6557
6558 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6559
6560         * config/bfin/bfin.md (composev2hi): Put operands into vector
6561         with correct order.
6562
6563 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6564
6565         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
6566         attribute when appropriate.
6567         (bfin_handle_l1_text_attribute): New.
6568         (bfin_handle_l1_data_attribute): New.
6569         (bfin_attribute_table): Add attributes: l1_text, l1_data,
6570         l1_data_A and l1_data_B.
6571         * doc/extend.texi (node Function Attributes): Document l1_text
6572         function attribute.
6573         (Variable Attributes): Add Blackfin subsection. Document l1_data,
6574         l1_data_A and l1_data_B variable attributes.
6575
6576 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
6577
6578         * config/bfin/bfin.opt (minline-plt): Add.
6579         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
6580         call to global functions.
6581         * doc/invoke.texi (Option Summary): Mention -minline-plt.
6582         (Blackfin Options): Document -minline-plt.
6583
6584 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
6585
6586         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
6587         given a non-function.
6588         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
6589
6590 2007-08-28  DJ Delorie  <dj@redhat.com>
6591
6592         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
6593
6594 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6595
6596         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
6597
6598 2007-08-28  Richard Guenther  <rguenther@suse.de>
6599
6600         * tree.h (struct tree_function_decl): Increase size of
6601         function_code bitfield.
6602
6603 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
6604             Kazu Hirata  <kazu@codesourcery.com>
6605
6606         * gcc/config/m68k/linux.h
6607         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
6608         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
6609         (m68k_return_in_memory): New.
6610         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
6611         New.
6612
6613 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
6614
6615         PR target/32661
6616         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
6617         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
6618         operand) when top VEC_SELECT extracts scalar element.
6619         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
6620         (*vec_extract_v4sf_mem): Ditto.
6621
6622 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
6623
6624         PR middle-end/32370
6625         * passes.c (init_optimization_passes): Move pass_df_finish
6626         after pass_postreload sublist.
6627
6628         PR rtl-optimization/33148
6629         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
6630         (neg (lt X 0)) if X has scalar int mode.
6631
6632         PR debug/32914
6633         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
6634         initializer, use build_vector_from_ctor if possible to create
6635         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
6636         even after this, return NULL.
6637
6638 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6639
6640         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
6641
6642 2007-08-28  Richard Guenther  <rguenther@suse.de>
6643
6644         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
6645         (struct tree_function_decl): Make function_code a bitfield.
6646         Add disregard_inline_limits flag.
6647         * cgraphunit.c (cgraph_process_new_functions): Check
6648         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
6649         (cgraph_preserve_function_body_p): Likewise.
6650         * ipa-inline.c (compute_inline_parameters): Likewise.
6651         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
6652         for GNU C extern inline functions.
6653         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
6654         * tree-inline.c (disregard_inline_limits_p): Remove.
6655         * tree-inline.h (disregard_inline_limits_p): Likewise.
6656         * c-common.c (handle_always_inline_attribute): Set
6657         DECL_DISREGARD_INLINE_LIMITS.
6658         * langhooks.c (add_builtin_function): Verify the function code
6659         fits in the bitfield.
6660
6661 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
6662             Vladimir Yanovsky  <yanov@il.ibm.com>
6663             Revital Eres  <eres@il.ibm.com>
6664             Andrey Belevantsev  <abel@ispras.ru>
6665
6666         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
6667         is set.
6668         * modulo-sched.c: Add documentation regarding do-loop.
6669         (doloop_register_get): Change number of arguments to support
6670         the new do-loop pattern and check whether COUNT_REG has no other
6671         occurences in the loop besides in the control part.
6672         (duplicate_insns_of_cycles): Do not duplicate the insn which
6673         changes count_reg as it is already adjusted.
6674         (generate_prolog_epilog): New argument to support the new
6675         do-loop pattern.  Change the subtract instruction to use
6676         expand_simple_binop.  Call duplicate_insns_of_cycles with new
6677         argument.
6678         (sms_schedule): Call doloop_register_get and
6679         generate_prolog_epilog with new argument.  Do not handle loops
6680         with single sets insns with subreg in their lhs.
6681         * loop-doloop.c (doloop_optimize): Support for another do-loop
6682         pattern.
6683         (doloop_condition_get): Gets an instruction instead of a pattern
6684         and change the return condition when the do-loop pattern is
6685         not parallel.
6686         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
6687         deps when considering to not create edges.
6688
6689 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
6690
6691         * doc/extend.texi (gnu_inline funtion attribute): Document C++
6692         behavior.
6693
6694 2007-08-27  Jason Merrill  <jason@redhat.com>
6695
6696         PR c++/31337
6697         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
6698         zero-sized types after calling gimplify_modify_expr_rhs.
6699
6700 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
6701
6702         * regclass.c (init_reg_autoinc): Fix typo.
6703
6704 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
6705         
6706         Fix PR tree-optimization/33173
6707         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
6708
6709 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
6710
6711         PR target/31385
6712         * config/i386/i386.h (VALID_DFP_MODE_P): New.
6713         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
6714         GPR.
6715
6716 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
6717             David Ung  <davidu@mips.com>
6718             Nigel Stephens <nigel@mips.com>
6719
6720         Separate target-specific initialization from general
6721         back-end initialization.
6722
6723         * toplev.c (init_alignments): New, split out from...
6724         (process_options): ...here.
6725         (backend_init_target): New, split out from...
6726         (backend_init): ...here.
6727         (lang_dependent_init_target): New, split out from...
6728         (lang_dependent_init): ...here.
6729         (target_reinit): New.
6730         * toplev.h (target_reinit): Declare.
6731         * expr.c (init_expr_target): Renamed from init_expr_once, since it
6732         now can be called more than once.  Update comments.
6733         * expr.h (init_expr_target): Likewise.
6734         * alias.c (init_alias_target): Renamed from init_alias_once, since it
6735         now can be called more than once.  Explicitly zero
6736         static_reg_base_value.
6737         * emit-rtl.c (init_emit_regs): New, split out from...
6738         (init_emit_once): Here.
6739         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
6740         non-const, so that changes from command-line arguments can overwrite
6741         values provided by the static initializers.
6742         (initial_call_really_used_regs): New, used similarly to the above.
6743         (initial_reg_names): Likewise.
6744         (last_mode_for_init_move_cost): Promoted function-local static to
6745         file-scope static to make it accessible outside init_move_cost.
6746         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
6747         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
6748         reg_names since it is needed for parsing command-line options.
6749         (init_move_cost): Use last_mode_for_init_move_cost instead of
6750         function-local static.
6751         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
6752         call_really_used_regs now.  Reinitialize reg_names.  Also
6753         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
6754         reg_class_superunion.  Clear losing_caller_save_reg_set.
6755         Preserve global registers if called more than once.  Reset
6756         move cost, may_move_in_cost, may_move_out_cost, and
6757         last_mode_for_init_move_cost.
6758         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
6759         can now be invoked more than once.  Update comments.
6760         (init_regs): Update comments.
6761         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
6762         and initial_call_really_used_regs, instead of the non-initial 
6763         variables.  This allows us to save the command-line register settings
6764         after target reinitialization.
6765         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
6766         * rtl.h (init_emit_regs): Declare.
6767         (init_reg_modes_target, init_alias_target): Renamed as described
6768         above.
6769         * reload1.c (init_reload): Update comments.
6770         * optabs.c (init_optabs): Likewise.
6771         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
6772         
6773 2007-08-26  Chao-ying Fu  <fu@mips.com>
6774
6775         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
6776         __typeof().
6777
6778 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6779
6780         * alias.c (memory_modified_1, memory_modified_in_insn_p):
6781         Constify.
6782         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
6783         Likewise.
6784         * bb-reorder.c (copy_bb_p): Likewise.
6785         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
6786         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
6787         block_ends_with_condjump_p): Likewise.
6788         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
6789         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
6790         block_ends_with_condjump_p): Likewise.
6791         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
6792         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
6793         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
6794         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
6795         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
6796         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
6797         debug_true_const_tree instad of debug_true_tree.
6798         * debug.c (do_nothing_debug_hooks): Likewise.
6799         * debug.h (ignore_block, debug_true_const_tree): Constify.
6800         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
6801         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
6802         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
6803         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
6804         dbx_reg_number, is_based_loc, field_type,
6805         simple_type_align_in_bits, simple_decl_align_in_bits,
6806         simple_type_size_in_bits, field_byte_offset, insert_float,
6807         type_tag, member_declared_type, is_redundant_typedef,
6808         secname_for_decl, is_inlined_entry_point): Likewise.
6809         * emit-rtl.c (const_next_insn, const_previous_insn,
6810         const_next_nonnote_insn, const_prev_nonnote_insn,
6811         const_next_real_insn, const_prev_real_insn,
6812         const_next_active_insn, const_prev_active_insn, const_next_label,
6813         const_prev_label): Likewise.
6814         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
6815         Likewise.
6816         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
6817         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
6818         sched_insn_is_legitimate_for_speculation_p): Likewise.
6819         * jump.c (reversed_comparison_code_parts,
6820         reversed_comparison_code, reversed_comparison, condjump_label):
6821         Likewise.
6822         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
6823         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
6824         Likewise.
6825         * rtl.h (const_previous_insn, const_next_insn,
6826         const_prev_nonnote_insn, const_next_nonnote_insn,
6827         const_prev_real_insn, const_next_real_insn,
6828         const_prev_active_insn, const_next_active_insn, const_prev_label,
6829         const_next_label, modified_between_p, modified_in_p,
6830         const_note_storeskeep_with_call_p, condjump_label,
6831         reversed_comparison, reversed_comparison_code,
6832         reversed_comparison_code_parts, memory_modified_in_insn_p,
6833         stack_regs_mentioned): Likewise.
6834         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
6835         keep_with_call_p): Likewise.
6836         * sched-deps.c (deps_may_trap_p, sched_get_condition,
6837         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
6838         sd_lists_size, sd_lists_empty_p): Likewise.
6839         * sched-int.h (sched_insns_conditions_mutex_p,
6840         haifa_classify_insn, no_real_insns_p,
6841         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
6842         sd_lists_size, sd_lists_empty_p): Likewise.
6843         * sdbout.c (sdb_debug_hooks): Likewise.
6844         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
6845         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
6846         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
6847         Likewise.
6848         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
6849         tree_can_throw_internal): Likewise.
6850         * tree-flow-inline.h (phi_nodes): Likewise.
6851         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
6852         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
6853         * tree-gimple.c (const_get_call_expr_in): Likewise.
6854         * tree-gimple.h (const_get_call_expr_in): Likewise.
6855         * tree.c (const_lookup_attribute, attribute_list_equal,
6856         attribute_list_contained): Likewise.
6857         * tree.h (attribute_list_equal, attribute_list_contained,
6858         const_lookup_attribute): Likewise.
6859         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
6860
6861 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
6862
6863         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
6864         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
6865
6866 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
6867
6868         PR target/32991
6869         * config/alpha/constraints.md: Delete "svn:mime-type" property
6870         with svn propdel "svn:mime-type".
6871
6872 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
6873
6874         PR middle-end/33181
6875         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
6876         non NOTE insn doesn't cross basic block.
6877         (noce_try_abs): Likewise.
6878         (noce_process_if_block): Likewise.
6879
6880 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
6881
6882         PR target/33151
6883         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
6884         operand without auto-inc-dec.
6885         * config/rs6000/rs6000.md (floatsidf2_internal): Use
6886         offsettable_mem_operand.
6887         (floatunssidf2_internal): Same.
6888         (fix_truncdfsi2_internal): Same.
6889         (floatsidf_ppc64): Same.
6890         (floatunssidf_ppc64): Same.
6891         (fix_trunctfsi2_internal): Same.
6892
6893 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
6894
6895         PR bootstrap/30620
6896         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
6897         pass defines needed for version.c.
6898
6899 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
6900
6901         * configure.ac (--debug-prefix-map check): Change assembler
6902         version presumed to have feature to 2.18.
6903         * configure: Regenerate.
6904
6905 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6906
6907         * c-common.c (vector_types_convertible_p,
6908         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
6909         self_promoting_args_p): Constify.
6910         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
6911         c_promoting_integer_type_p, self_promoting_args_p,
6912         anon_aggr_type_p, vector_types_convertible_p): Likewise.
6913         * c-decl.c (anon_aggr_type_p): Likewise.
6914         * * c-dump.c (dump_stmt): Likewise.
6915         * c-objc-common.c (has_c_linkage): Likewise.
6916         * c-tree.h (same_translation_unit_p): Likewise.
6917         * c-typeck.c (null_pointer_constant_p,
6918         tagged_types_tu_compatible_p, function_types_compatible_p,
6919         type_lists_compatible_p, lvalue_or_else, lvalue_p,
6920         comptypes_internal, struct tagged_tu_seen_cache,
6921         same_translation_unit_p, alloc_tagged_tu_seen_cache,
6922         c_size_in_bytes): Likewise.
6923         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
6924         hash_ptr, eq_ptr): Likewise.
6925         * langhooks-def.h (lhd_decl_ok_for_sibcall,
6926         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
6927         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
6928         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
6929         Likewise.
6930         * optabs.c (optab_for_tree_code): Likewise.
6931         * optabs.h (optab_for_tree_code): Likewise.
6932         * rtl.h (simplify_rtx): Likewise.
6933         * simplify-rtx.c (simplify_rtx): Likewise.
6934         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
6935         dump_flag, dump_node): Likewise.
6936         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
6937         queue_and_dump_type, dump_flag): Likewise.
6938         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
6939         * tree-pass.h (dump_node): Likewise.
6940         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
6941         supportable_narrowing_operation): Likewise.
6942         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
6943         supportable_narrowing_operation): Likewise.
6944         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
6945         is_negative_overflow_infinity, is_positive_overflow_infinity,
6946         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
6947         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
6948         update_value_range, add_equivalence, ssa_name_nonnegative_p,
6949         ssa_name_nonzero_p, fp_predicate): Likewise.
6950         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
6951         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
6952         ssa_name_nonnegative_p): Likewise.
6953
6954 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
6955
6956         * config.gcc : Add x86_64-elf target.
6957
6958 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
6959
6960         * expr.c (store_expr): Fix order of store_by_pieces arguments.
6961
6962 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
6963             Nigel Stephens <nigel@mips.com>
6964
6965         PR target/11787
6966
6967         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
6968         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
6969         * expr.c (SET_BY_PIECES_P): Define.
6970         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
6971         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
6972         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
6973         store_by_pieces.
6974         * expr.h (SET_RATIO): Define.
6975         (can_store_by_pieces, store_by_pieces): Update prototypes.
6976         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
6977         can_store_by_pieces/store_by_pieces.
6978         (expand_builtin_memcpy_args): Likewise.
6979         (expand_builtin_strncpy): Likewise.
6980         (expand_builtin_memset_args): Likewise.  Also remove special case
6981         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
6982         decide what to do instead.
6983         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
6984         to can_store_by_pieces.
6985
6986         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
6987         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
6988
6989         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
6990         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
6991         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
6992         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
6993         (STORE_BY_PIECES_P): Define.
6994
6995 2007-08-24  Tom Tromey  <tromey@redhat.com>
6996
6997         * varpool.c (varpool_last_needed_node): Fix comment typo.
6998         * c-decl.c (duplicate_decls): Fix comment typo.
6999         (clone_underlying_type): Update comment.
7000
7001 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7002
7003         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
7004         alpha_in_small_data_p, alpha_split_complex_arg,
7005         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
7006         Constify.
7007         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
7008         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
7009         Likewise.
7010         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
7011         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
7012         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
7013         * config/darwin.c (darwin_binds_local_p): Likewise.
7014         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
7015         Likewise.
7016         * config/i386/i386-protos.h (i386_pe_binds_local_p,
7017         i386_pe_valid_dllimport_attribute_p): Likewise.
7018         * config/i386/i386.c (ix86_function_regparm,
7019         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
7020         x86_can_output_mi_thunk, ix86_mangle_type,
7021         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
7022         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
7023         i386_pe_binds_local_p): Likewise.
7024         * config/ia64/ia64.c
7025         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
7026         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
7027         ia64_invalid_conversion, ia64_invalid_unary_op,
7028         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
7029         Likewise.
7030         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
7031         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
7032         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
7033         * config/mips/mips.c (mips_use_blocks_for_constant_p,
7034         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
7035         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7036         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
7037         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
7038         * config/pa/pa.c (pa_commutative_p): Likewise.
7039         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
7040         Likewise.
7041         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
7042         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
7043         rs6000_use_blocks_for_constant_p,
7044         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
7045         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7046         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
7047         * config/s390/s390.c (s390_mangle_type,
7048         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
7049         Likewise.
7050         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7051         th_in_small_data_p): Likewise.
7052         * config/sh/sh.c (sh_ms_bitfield_layout_p,
7053         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
7054         Likewise.
7055         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
7056         sparc_mangle_type): Likewise.
7057         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
7058         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
7059         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
7060         Likewise.
7061         * hooks.c (hook_bool_mode_const_rtx_false,
7062         hook_bool_mode_const_rtx_true,
7063         hook_bool_const_tree_hwi_hwi_const_tree_false,
7064         hook_bool_const_tree_hwi_hwi_const_tree_true,
7065         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
7066         hook_constcharptr_const_tree_null,
7067         hook_constcharptr_const_rtx_null,
7068         hook_constcharptr_const_tree_const_tree_null,
7069         hook_constcharptr_int_const_tree_null,
7070         hook_constcharptr_int_const_tree_const_tree_null): New.
7071         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
7072         hook_bool_tree_hwi_hwi_tree_false,
7073         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
7074         hook_int_tree_tree_1, hook_constcharptr_tree_null,
7075         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
7076         hook_constcharptr_int_tree_null,
7077         hook_constcharptr_int_tree_tree_null): Delete.
7078         (default_can_output_mi_thunk_no_vcall): Constify.
7079         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
7080         hook_bool_tree_hwi_hwi_tree_false,
7081         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
7082         hook_int_tree_tree_1, hook_constcharptr_tree_null,
7083         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
7084         hook_constcharptr_int_tree_null,
7085         hook_constcharptr_int_tree_tree_null): Delete.
7086         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
7087         hook_bool_const_tree_hwi_hwi_const_tree_false,
7088         hook_bool_const_tree_hwi_hwi_const_tree_true,
7089         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
7090         hook_constcharptr_const_tree_null,
7091         hook_constcharptr_const_rtx_null,
7092         hook_constcharptr_const_tree_const_tree_null,
7093         hook_constcharptr_int_const_tree_null,
7094         hook_constcharptr_int_const_tree_const_tree_null): New.
7095         (default_can_output_mi_thunk_no_vcall): Constify.
7096         * integrate.c (function_attribute_inlinable_p): Likewise.
7097         * integrate.h (function_attribute_inlinable_p): Likewise.
7098         * jump.c (rtx_renumbered_equal_p): Likewise.
7099         * output.h (decl_readonly_section, categorize_decl_for_section,
7100         default_use_anchors_for_symbol_p, default_binds_local_p,
7101         default_binds_local_p_1): Likewise.
7102         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
7103         Likewise.
7104         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7105         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
7106         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
7107         TARGET_COMP_TYPE_ATTRIBUTES,
7108         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
7109         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
7110         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
7111         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
7112         TARGET_DWARF_CALLING_CONVENTION): Likewise.
7113         * target.h (can_output_mi_thunk, needs_block_p,
7114         first_cycle_multipass_dfa_lookahead_guard_spec,
7115         vector_alignment_reachable, comp_type_attributes,
7116         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
7117         commutative_p, use_blocks_for_constant_p,
7118         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
7119         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
7120         invalid_within_doloop, valid_dllimport_attribute_p,
7121         split_complex_arg, invalid_arg_for_unprototyped_fn,
7122         invalid_conversion, invalid_unary_op, invalid_binary_op):
7123         Likewise.
7124         * targhooks.c (default_invalid_within_doloop,
7125         hook_invalid_arg_for_unprototyped_fn,
7126         default_builtin_vector_alignment_reachable): Likewise.
7127         (hook_bool_rtx_commutative_p): Delete.
7128         (hook_bool_const_rtx_commutative_p): New.
7129         * targhooks.h (default_invalid_within_doloop,
7130         default_builtin_vector_alignment_reachable,
7131         hook_invalid_arg_for_unprototyped_fn): Constify.
7132         (hook_bool_rtx_commutative_p): Delete.
7133         (hook_bool_const_rtx_commutative_p): New.
7134         * varasm.c (bss_initializer_p, decl_default_tls_model,
7135         categorize_decl_for_section, decl_readonly_section,
7136         default_use_anchors_for_symbol_p, default_binds_local_p,
7137         default_binds_local_p_1): Constify.
7138
7139 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7140
7141         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
7142         __NO_BUILTIN if -fno-builtin.
7143
7144 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7145
7146         * config/bfin/bfin.c (print_operand): Report error instead of
7147         ICE for wrong operand.
7148
7149 2007-08-24  Michael Matz  <matz@suse.de>
7150
7151         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
7152
7153 2007-08-24  Richard Guenther  <rguenther@suse.de>
7154
7155         PR middle-end/33166
7156         * tree-ssa.c (useless_type_conversion_p): Split into a
7157         recursive and a non-recursive part.
7158         (useless_type_conversion_p_1): New function.
7159         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
7160         from maybe_fold_offset_to_reference is trivially convertible
7161         to the desired type before doing the simplification.
7162
7163 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
7164
7165         * expr.c (store_expr): Optimize initialization of an array
7166         with STRING_CST.
7167         * expr.h (builtin_strncpy_read_str): New prototype.
7168         * builtins.c (builtin_strncpy_read_str): Remove prototype.
7169         No longer static.
7170
7171 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
7172
7173         PR middle-end/33157
7174         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
7175         field when initializing if_info structure.
7176
7177 2007-08-24  Richard Guenther  <rguenther@suse.de>
7178
7179         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
7180         dependencies.
7181         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
7182         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
7183         * tree-inline.c (inlinable_function_p): Fold in common parts of
7184         the cannot_inline_tree_fn langhook.
7185         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
7186         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
7187         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
7188         cannot_inline_tree_fn langhook.
7189         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
7190         cannot_inline_tree_fn member.
7191
7192 2007-08-24  Richard Guenther  <rguenther@suse.de>
7193
7194         * expr.c (get_inner_reference): Do computation of bitoffset
7195         from offset in a way we can detect overflow reliably.
7196
7197 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7198
7199         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
7200
7201 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7202
7203         * config/bfin/bfin.opt (mfast-fp): Add.
7204         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
7205         libbffastfp override libgcc if -mfast-fp.
7206         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
7207         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
7208         (Blackfin Options): Document -mfast-fp.
7209
7210 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
7211
7212         PR tree-optimization/32573
7213         PR middle-end/32946
7214         * tree-data-ref.c (initialize_data_dependence_relation): Clear
7215         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
7216         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
7217         (build_classic_dist_vector): Return false rather than true if
7218         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
7219         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
7220         returned false.  Don't call save_dist_v before calling
7221         build_classic_dist_vector_1.
7222         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
7223         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
7224         DDR_DIR_VECTS vectors.
7225
7226 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
7227
7228         * configure.ac (leb128): Modify sed statement to work with any
7229         binutils version string.
7230         * configure: Regenerate
7231
7232 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7233
7234         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
7235         Wrap in RTX_CODE macro guard.
7236         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
7237         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
7238         arm_mark_dllimport, arm_pe_encode_section_info,
7239         arm_pe_unique_section): Use ISO-C function declarations.
7240         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
7241         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
7242         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
7243         Likewise.
7244         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
7245         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
7246         defining.
7247         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
7248         warnings.
7249         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
7250         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
7251         (register_move_cost): Use ISO-C function declarations.
7252         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
7253         * config/score/score-protos.h (score_declare_object): Add
7254         ATTRIBUTE_PRINTF_4.
7255         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
7256         warnings.
7257         * final.c (profile_function): Avoid empty if-bodies.
7258         
7259         
7260         * calls.c (must_pass_in_stack_var_size,
7261         must_pass_in_stack_var_size_or_pad): Constify.
7262         * config/alpha/alpha-protos.h (function_value): Likewise.
7263         * config/alpha/alpha.c (alpha_return_in_memory,
7264         alpha_pass_by_reference, function_value,
7265         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
7266         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
7267         Likewise.
7268         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
7269         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7270         TARGET_PROMOTE_PROTOTYPES): Likewise.
7271         * config/arm/arm-protos.h (arm_return_in_memory,
7272         arm_pad_arg_upward, arm_function_value): Likewise.
7273         * config/arm/arm.c (arm_pass_by_reference,
7274         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
7275         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7276         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
7277         Likewise.
7278         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
7279         * config/avr/avr-protos.h (avr_function_value): Likewise.
7280         * config/avr/avr.c (avr_return_in_memory,
7281         gas_output_limited_string, gas_output_ascii, avr_function_value,
7282         avr_return_in_memory): Likewise.
7283         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
7284         * config/bfin/bfin.c (bfin_pass_by_reference,
7285         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
7286         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
7287         Likewise.
7288         * config/cris/cris.c (cris_pass_by_reference,
7289         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
7290         * config/crx/crx.c (crx_return_in_memory): Likewise.
7291         * config/darwin.c (function_base, machopic_function_base_name):
7292         Likewise.
7293         * config/fr30/fr30.c (fr30_must_pass_in_stack,
7294         TARGET_PROMOTE_PROTOTYPES): Likewise.
7295         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
7296         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
7297         * config/i386/i386-protos.h (ix86_return_in_memory,
7298         ix86_sol10_return_in_memory): Likewise.
7299         * config/i386/i386.c (ix86_function_value,
7300         ix86_function_sseregparm, ix86_must_pass_in_stack,
7301         type_natural_mode, classify_argument, examine_argument,
7302         construct_container, ix86_pass_by_reference, function_value_32,
7303         function_value_64, ix86_function_value_1, return_in_memory_32,
7304         return_in_memory_64, return_in_memory_ms_64,
7305         ix86_return_in_memory, ix86_sol10_return_in_memory,
7306         TARGET_PROMOTE_PROTOTYPES): Likewise.
7307         * config/ia64/ia64-protos.h (ia64_function_value,
7308         ia64_hpux_function_arg_padding): Likewise.
7309         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
7310         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
7311         ia64_hpux_function_arg_padding): Likewise.
7312         * config/iq2000/iq2000-protos.h (function_arg,
7313         iq2000_function_value): Likewise.
7314         * config/iq2000/iq2000.c (iq2000_return_in_memory,
7315         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
7316         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
7317         function_arg, iq2000_function_value): Likewise.
7318         * config/m32c/m32c-protos.h (m32c_function_value,
7319         m32c_promote_function_return): Likewise.
7320         * config/m32c/m32c.c (m32c_pass_by_reference,
7321         m32c_promote_prototypes, m32c_promote_function_return,
7322         m32c_function_value): Likewise.
7323         * config/m32r/m32r.c (m32r_return_in_memory,
7324         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
7325         m32r_in_small_data_p): Likewise.
7326         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
7327         Likewise.
7328         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
7329         m68hc11_function_arg_padding): Likewise.
7330         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
7331         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
7332         m68k_function_value): Likewise.
7333         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
7334         mcore_function_value): Likewise.
7335         * config/mcore/mcore.c (handle_structs_in_regs,
7336         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
7337         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
7338         mcore_num_arg_regs, mcore_function_value): Likewise.
7339         * config/mips/mips-protos.h (mips_pad_arg_upward,
7340         mips_function_value): Likewise.
7341         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
7342         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
7343         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7344         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
7345         mips_function_value): Likewise.
7346         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
7347         Likewise.
7348         * config/mmix/mmix.c (mmix_pass_by_reference,
7349         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
7350         mmix_encode_section_info): Likewise.
7351         * config/mn10300/mn10300-protos.h (mn10300_function_value):
7352         Likewise.
7353         * config/mn10300/mn10300.c (mn10300_return_in_memory,
7354         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
7355         mn10300_function_value): Likewise.
7356         * config/mt/mt-protos.h (mt_function_value): Likewise.
7357         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
7358         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
7359         * config/pa/pa-protos.h (function_arg_padding, function_value,
7360         pa_return_in_memory): Likewise.
7361         * config/pa/pa.c (pa_pass_by_reference,
7362         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
7363         function_arg_padding, function_value, pa_return_in_memory):
7364         Likewise.
7365         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
7366         * config/rs6000/rs6000-protos.h (rs6000_function_value,
7367         function_arg_padding): Likewise.
7368         * config/rs6000/rs6000.c (rs6000_return_in_memory,
7369         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
7370         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
7371         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7372         function_arg_padding, altivec_expand_dst_builtin,
7373         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
7374         altivec_init_builtins, rs6000_common_init_builtins,
7375         rs6000_function_value): Likewise.
7376         * s390/s390-protos.h (s390_function_value): Likewise.
7377         * config/s390/s390.c (s390_function_arg_size,
7378         s390_pass_by_reference, s390_return_in_memory,
7379         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
7380         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
7381         * config/score/score-protos.h (score_function_value): Likewise.
7382         * config/score/score.c (score_arg_partial_bytes,
7383         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7384         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
7385         score_pass_by_reference, score_add_offset, score_function_value):
7386         Likewise.
7387         * config/sh/sh-protos.h (sh_attr_renesas_p,
7388         sh_promote_prototypes): Likewise.
7389         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
7390         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
7391         sh_attr_renesas_p): Likewise.
7392         * config/sparc/sparc-protos.h (function_value,
7393         function_arg_padding): Likewise.
7394         * config/sparc/sparc.c (sparc_promote_prototypes,
7395         sparc_return_in_memory, sparc_pass_by_reference,
7396         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7397         function_arg_record_value_2, function_arg_record_value_1,
7398         function_arg_record_value, function_arg_record_value,
7399         function_arg_padding, function_value): Likewise.
7400         * config/spu/spu-protos.h (spu_function_value): Likewise.
7401         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
7402         spu_function_value): Likewise.
7403         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
7404         Likewise.
7405         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
7406         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
7407         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
7408         Likewise.
7409         * config/v850/v850.c (v850_return_in_memory,
7410         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
7411         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
7412         * config/xtensa/xtensa.c (xtensa_return_in_msb,
7413         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
7414         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
7415         Likewise.
7416         * explow.c (promote_mode, hard_function_value): Likewise.
7417         * expr.h (hard_function_value, promote_mode): Likewise.
7418         * function.c (aggregate_value_p): Likewise.
7419         * hooks.c (hook_bool_const_tree_true): New.
7420         * hooks.h (hook_bool_const_tree_true): New.
7421         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
7422         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
7423         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
7424         TARGET_RETURN_IN_MSB): Likewise.
7425         * target.h (promote_function_args, promote_function_return,
7426         promote_prototypes, return_in_memory, return_in_msb,
7427         pass_by_reference, must_pass_in_stack, callee_copies,
7428         function_value): Likewise.
7429         * targhooks.c (default_return_in_memory,
7430         hook_pass_by_reference_must_pass_in_stack,
7431         hook_callee_copies_named,
7432         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
7433         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
7434         default_function_value): Likewise. 
7435         * targhooks.h (default_return_in_memory,
7436         hook_pass_by_reference_must_pass_in_stack,
7437         hook_callee_copies_named,
7438         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
7439         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
7440         default_function_value): Likewise.
7441         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
7442         (equiv_class_label_hash, equiv_class_label_eq): Constify.
7443         * tree-vectorizer.c (bb_in_loop_p): Likewise.
7444         * tree.c (needs_to_live_in_memory): Likewise.
7445         * tree.h (struct tree_type, needs_to_live_in_memory,
7446         aggregate_value_p, must_pass_in_stack_var_size,
7447         must_pass_in_stack_var_size_or_pad): Likewise.
7448         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
7449         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
7450         lookup_filename): Likewise.
7451
7452 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
7453
7454         PR target/17390
7455         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
7456         fake fcomi i387 instruction for !TARGET_CMOVE.
7457         (ix86_expand_branch): Expand natural sequence with one jump for
7458         all targets, not only TARGET_CMOVE.
7459         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
7460         pattern to implement fake fcomi sequence.  Split instruction after
7461         reload to correct compare sequences.
7462         (*cmpfp_xf_cc): Ditto.
7463         (*cmpfp_<mode>_cc): Ditto.
7464         (*cmpfp_u_cc): Ditto.
7465         (*cmpfp_<mode>_cc): Ditto.
7466
7467 2007-08-23  Richard Guenther  <rguenther@suse.de>
7468
7469         * tree-pretty-print.c (dump_generic_node): Annotate
7470         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
7471
7472 2007-08-23  Richard Guenther  <rguenther@suse.de>
7473
7474         * builtins.c (expand_builtin_mathfn): Wrap argument in
7475         save_expr directly instead of re-building the call.
7476         (expand_builtin_mathfn_2): Likewise.
7477         (expand_builtin_mathfn_3): Likewise.
7478         (expand_builtin_interclass_mathfn): Likewise.
7479         (expand_builtin_int_roundingfn): Set arg.
7480         (expand_builtin_int_roundingfn_2): Likewise.
7481
7482 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
7483
7484         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
7485         *sse_nand<mode>3, *sse_xor<mode>3): New.
7486
7487 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
7488
7489         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
7490         * config/i386/i386.c (print_operand): Handle ';' code.  Output
7491         semicolon for TARGET_MACHO.
7492         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
7493         emit semicolon after 'lock' prefix.
7494         (sync_double_compare_and_swap<mode>): Ditto.
7495         (*sync_double_compare_and_swapdi_pic): Ditto.
7496         (*sync_compare_and_swap_cc<mode>): Ditto.
7497         (sync_double_compare_and_swap_cc<mode>): Ditto.
7498         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
7499         (sync_old_add<mode>): Ditto.
7500         (sync_add<mode>): Ditto.
7501         (sync_sub<mode>): Ditto.
7502         (sync_ior<mode>): Ditto.
7503         (sync_and<mode>): Ditto.
7504         (sync_xor<mode>): Ditto.
7505
7506 2007-08-22  Chao-ying Fu  <fu@mips.com>
7507
7508         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
7509         in DEF_RTL_EXPR.
7510         (copy_rtx): Handle CONST_FIXED.
7511         (rtx_equal_p): Likewise.
7512         * rtl.h (fixed_value.h): New include.
7513         (rtx_def): Add a new field of fixed_value to u.
7514         (XCNMPFV): Define for accessing fixed_value.
7515         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
7516         Define.
7517         * rtl.def (CONST_FIXED): New constant.
7518         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
7519         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
7520         US_ASHIFT): New codes.
7521         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
7522         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
7523         unsigned_fract_convert, unsigned_sat_fract): Document them.
7524         * varasm.c (assemble_integer): Extend to support fixed-point constants
7525         by using different machine classes.
7526         (decode_addr_const): Handle FIXED_CST.
7527         (const_hash_1): Likewise.
7528         (compare_constant): Likewise.
7529         (copy_constant): Likewise.
7530         (const_rtx_hash_1): Handle CONST_FIXED.
7531         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7532         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7533         MODE_VECTOR_UACCUM.
7534         (initializer_constant_valid_p): Handle FIXED_CST.
7535         (output_constant): Support FIXED_POINT_TYPE.
7536         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
7537         * cse.c (hash_rtx): Support CONST_FIXED.
7538         (exp_equiv_p): Likewise.
7539         (cannon_reg): Likewise.
7540         (fold_rtx): Likewise.
7541         (equiv_constant): Likewise.
7542         (cse_process_notes_1): Likewise.
7543         (count_reg_usage): Likewise.
7544         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
7545         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
7546         (wrap_constant): Check CONST_FIXED.
7547         (cselib_hash_rtx): Support CONST_FIXED.
7548         (cselib_subst_to_values): Likewise.
7549         * df-scan.c (df_uses_record): Likewise.
7550         * gcse.c (want_to_gcse_p): Likewise.
7551         (oprs_unchanged_p): Likewise.
7552         (oprs_not_set_p): Likewise.
7553         (compute_transp): Likewise.
7554         (extract_mentioned_regs_helper): Likewise.
7555         * genemit.c (gen_exp): Likewise.
7556         * local-alloc.c (equiv_init_varies_p): Likewise.
7557         (contains_replace_regs): Likewise.
7558         (memref_referenced_p): Likewise.
7559         * loop-invariant.c (check_maybe_invariant): Likewise.
7560         (hash_invariant_expr_1): Likewise.
7561         (invariant_expr_equal_p): Likewise.
7562         * postreload-gcse.c (oprs_unchanged_p): Likewise.
7563         * regclass.c (reg_scan_mark_refs): Likewise.
7564         * regrename.c (scan_rtx): Likewise.
7565         * resource.c (mark_referenced_resources): Likewise.
7566         (mark_set_resources): Likewise.
7567         * rtlanal.c (rtx_unstable_p): Likewise.
7568         (rtx_varies_p): Likewise.
7569         (count_occurrences): Likewise.
7570         (reg_mentioned_p): Likewise.
7571         (modified_between_p): Likewise.
7572         (modified_in_p): Likewise.
7573         (volatile_insn_p): Likewise.
7574         (volatile_refs_p): Likewise.
7575         (side_effects_p): Likewise.
7576         (may_trap_p_1): Likewise.
7577         (inequality_comparisons_p): Likewise.
7578         (computed_jump_p_1): Likewise.
7579         (commutative_operand_precedence): Likewise.
7580         * sched-deps.c (sched_analyze_2): Likewise.
7581         * sched-vis.c (print_value): Likewise.
7582         * reload.c (operands_match_p): Likewise.
7583         (subst_reg_equivs): Likewise.
7584         * reload1.c (eliminate_regs_1): Likewise.
7585         (elimination_effects): Likewise.
7586         (scan_paradoxical_subregs): Likewise.
7587         * alias.c (rtx_equal_for_memref_p): Likewise.
7588         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
7589         * emit-rtl.c (const_fixed_htab): New hash table.
7590         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
7591         Declare.
7592         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
7593         const_fixed_from_fixed_value): New functions.
7594         (verify_rtx_sharing): Handle CONST_FIXED.
7595         (copy_rtx_if_shared_1): Likewise.
7596         (reset_used_flags): Likewise.
7597         (set_used_flags): Likewise.
7598         (copy_insn_1): Likewise.
7599         (init_emit_once): Create const_fixed_htab.
7600         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
7601
7602 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
7603
7604         PR tree-optimization/32949
7605         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
7606         before failing for ivs with non-constant step.
7607
7608 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
7609
7610         * doc/md.texi (Iterators): Renamed from Macros.  All contents
7611         changed to reflect rename of respectively define_code_macro and
7612         define_mode_macro to define_code_iterator and define_mode_iterator.
7613         (Mode Iterators, Code Iterators): Similar.
7614         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
7615         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
7616         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
7617         (initialize_iterators, find_iterator, check_code_iterator)
7618         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
7619         (read_mapping, read_rtx_1): Similar.
7620         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
7621         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
7622         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
7623         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
7624         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
7625         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
7626         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
7627         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
7628         config/rs6000/sync.md, config/rs6000/rs6000.md,
7629         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
7630         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
7631         config/vax/vax.md, config/bfin/bfin.md: Similar.
7632
7633 2007-08-22  David Daney  <ddaney@avtrex.com>
7634
7635         * doc/install.texi (Testing): Mention testing on a simulator.
7636
7637 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
7638
7639         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
7640
7641         * doc/libgcc.texi (Decimal float library routines): Fix formatting
7642         and rearrange floating point conversion functions into different
7643         categories.
7644
7645 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
7646
7647         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
7648         dfa_post_advance_cycle): New scheduler hooks.
7649         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
7650         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
7651         new hooks.
7652         (TARGET_SCHED): Use them.
7653         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
7654         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
7655         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
7656
7657         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
7658         function to facilitate debugging.
7659         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
7660         (output_insn_has_dfa_reservation_p): New static function to output
7661         insn_has_dfa_reservation_p ().
7662         (write_automata): Use it.
7663         * genattr.c (main): Output declaration for
7664         insn_has_dfa_reservation_p ().
7665
7666 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
7667             Richard Guenther <rguenther@suse.de>
7668         
7669         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
7670         * simplify_rtx (simplify_binary_operation_1): Likewise.
7671                 
7672 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7673
7674         PR rtl-optimization/32557
7675         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
7676         of REGNO (mws->mw_reg).
7677
7678 2007-08-22  Richard Guenther  <rguenther@suse.de>
7679
7680         PR middle-end/33007
7681         * builtins.c (expand_builtin_int_roundingfn): Replace call
7682         argument wrapped with SAVE_EXPR directly.
7683         (expand_builtin_int_roundingfn_2): Likewise.
7684
7685 2007-08-22  Richard Guenther  <rguenther@suse.de>
7686
7687         * tree-inline.c (inlinable_function_p): Restore disregarding
7688         inline limits for GNU extern inline functions.
7689
7690 2007-08-22  Richard Guenther  <rguenther@suse.de>
7691
7692         PR middle-end/32563
7693         * tree.c (host_integerp): Treat sizetype as signed as it is
7694         sign-extended.
7695
7696 2007-08-21  Ian Lance Taylor  <iant@google.com>
7697
7698         PR tree-optimization/33134
7699         * tree-vrp.c (adjust_range_with_scev): Call
7700         set_value_range_to_value.
7701
7702 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
7703
7704         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
7705         prototype.
7706         
7707 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
7708
7709         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
7710         whitespace.
7711
7712 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
7713
7714         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
7715         cases to set eight bytes at a time.
7716         (expand_block_move): Likewise.
7717         
7718 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
7719
7720         PR debug/32610
7721         * dwarf2out.c (gen_decl_die): Don't call
7722         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
7723
7724 2007-08-21  Paul Brook  <paul@codesourcery.com>
7725             Nathan Sidwell  <nathan@codesourcery.com>
7726             Mark Mitchell  <mark@codesourcery.com>
7727             Joseph Myers  <joseph@codesourcery.com>
7728
7729         * configure.ac: Add --with-pkgversion and --with-bugurl.
7730         * configure: Regenerate.
7731         * doc/install.texi: Document them.
7732         * version.c (version_string): Remove VERSUFFIX.
7733         (VERSUFFIX): Remove.
7734         (pkgversion_string): New.
7735         (bug_report_url): Do not hard-code initializer.
7736         * version.h (pkgversion_string): Declare.
7737         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
7738         Define.
7739         (version.o): Define PKGVERSION and BUGURL.
7740         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
7741         (%.pod): Define BUGURL.
7742         * gcc.c (process_command, main): Use pkgversion_string.
7743         * toplev.c (compile_file, print_version): Likewise.
7744         * protoize.c (main): Likewise.
7745         * gcov.c (print_version): Likewise.  Update copyright date.
7746         * gcov-dump.c (print_version): Likewise.  Update copyright date.
7747         * mips-tdump.c (main): Likewise.  Update copyright date.
7748         * mips-tfile.c (main): Likewise.  Update copyright date.
7749         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
7750         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
7751         shorten description.
7752         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
7753         * doc/gccint.texi: Likewise.
7754         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
7755         Update copyright date.
7756
7757 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
7758
7759         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
7760         (ix86_expand_strlensi_unroll_1): Ditto.
7761         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
7762         (ix86_expand_carry_flag_compare): Update comment.
7763
7764 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
7765
7766         PR middle-end/32912
7767         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
7768         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
7769
7770 2007-08-21  Richard Guenther  <rguenther@suse.de>
7771
7772         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
7773
7774 2007-08-21  Richard Guenther  <rguenther@suse.de>
7775
7776         PR middle-end/33122
7777         * fold-const.c (fold_binary): Remove index +p PTR folding.
7778         Fix types of POINTER_PLUS_EXPR generated by folding of
7779         (PTR +p B) +p A.
7780
7781 2007-08-20  Chao-ying Fu  <fu@mips.com>
7782
7783         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
7784         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
7785         RID_ONEWAY, so that it can be checked in declspecs_add_type.
7786         (c_common_fixed_point_type_for_size): Declare.
7787         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
7788         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
7789         (c_token_starts_declspecs): Likewise.
7790         (c_parser_declspecs): Likewise.
7791         (c_parser_attributes): Likewise.
7792         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
7793         (c_declspecs): Add saturating_p.
7794         * c-decl.c (build_null_declspecs): Initialize saturating_p.
7795         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
7796         _Sat.  Handle RID_SAT.
7797         Avoid using void, bool, char, int, float, double, _Decimal32,
7798         _Decimal64, _Decimal128, and complex with _Sat.
7799         Handle RID_FRACT and RID_ACCUM.
7800         Make sure _Sat is used with _Fract or _Accum.
7801         (finish_declspecs): Handle cts_fract and cts_accum.
7802         * c-common.c (fixed-value.h): New include.
7803         (constant_expression_warning): Handle FIXED_CST.
7804         (overflow_warning): Likewise.
7805         (warnings_for_convert_and_check): Likewise.
7806         (c_common_fixed_point_type_for_size): New.
7807         (c_common_type_for_mode): Handle fixed-point modes to
7808         return various saturating/non-saturating, signed/unsigned types.
7809         (c_common_signed_or_unsigned_type): Support fixed-point types.
7810         (shorten_compare): Check fixed-point zero.
7811         Handle FIXED_POINT_TYPE.
7812         (c_common_truthvalue_conversion): Handle FIXED_CST.
7813         Handle FIXED_POINT_TYPE.
7814         (c_common_nodes_and_builtins): Record builtin types for fixed-point
7815         types.
7816         (handle_mode_attribute): Handle fixed-point modes.  Need to check
7817         if the signness of base type and fixed-point modes are consistent.
7818         (handle_vector_size_attribute): Handle fixed-point modes.
7819         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
7820         (warn_for_div_by_zero): Check fixed-point zero.
7821         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
7822         a common fixed-point type based on fbit, ibit, sign, and saturation.
7823         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
7824         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
7825         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
7826         (convert_for_assignment): Support FIXED_POINT_TYPE.
7827         (digest_init): Handle FIXED_POINT_TYPE.
7828         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
7829         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
7830         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
7831         GE_EXPR, LT_EXPR, GT_EXPR.
7832         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
7833         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
7834         * target.h (gcc_target): Add fixed_point_supported_p.
7835         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
7836         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
7837         (default_fixed_point_supported_p): Define.
7838         * targhooks.h (default_fixed_point_supported_p): Declare.
7839         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
7840         * doc/install.texi (Configuration): Add --enable-fixed-point.
7841         * configure.ac (--enable-fixed-point): New to enable fixed-point
7842         arithmetic extension to C.  For mips targets, we enable it by default.
7843         * configure, config.in: Regenerate.
7844
7845 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
7846
7847         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
7848
7849 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
7850
7851         * dwarf2out.c (text_section_used): Move declaration outside ifdef
7852         DWARF2_DEBUGGING_INFO.
7853         (cold_text_section_used): Same.
7854         (cold_text_section): Same.
7855
7856 2007-08-20  Richard Guenther  <rguenther@suse.de>
7857
7858         * c-typeck.c (convert_for_assignment): Use the type of
7859         the member for the initialization.
7860
7861 2007-08-20  Richard Guenther  <rguenther@suse.de>
7862
7863         * c-objc-common.c (c_disregard_inline_limits): Remove.
7864         * c-objc-common.h (c_disregard_inline_limits): Likewise.
7865         * cgraphunit.c (cgraph_process_new_functions): Call
7866         disregard_inline_limits_p.
7867         (cgraph_preserve_function_body_p): Likewise.
7868         * ipa-inline.c (compute_inline_parameters): Likewise.
7869         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
7870         Remove.
7871         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
7872         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
7873         disregard_inline_limits langhook.
7874         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
7875         Remove.
7876         * langhooks.h (lang_hooks_for_tree_inlining): Remove
7877         disregard_inline_limits langhook.
7878         * tree-inline.c (disregard_inline_limits_p): New function.
7879         * tree-inline.h (disregard_inline_limits_p): Declare.
7880
7881 2007-08-20  Richard Guenther  <rguenther@suse.de>
7882
7883         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
7884         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
7885         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
7886         auto_var_in_fn_p langhook.
7887         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
7888         move ...
7889         * tree.c (auto_var_in_fn_p): ... here.
7890         (find_var_from_fn): Call auto_var_in_fn_p directly.
7891         * langhooks.h (lang_hooks_for_tree_inlining): Remove
7892         auto_var_in_fn_p langhook.
7893         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
7894         (copy_body_r): Likewise.
7895         (self_inlining_addr_expr): Likewise.
7896         * tree.h (auto_var_in_fn_p): Declare.
7897
7898 2007-08-20  Richard Guenther  <rguenther@suse.de>
7899
7900         * tree.c (WALK_SUBTREE): Call walk_tree_1.
7901         (walk_type_fields): Take lh parameter.
7902         (walk_tree): Rename to ...
7903         (walk_tree_1): ... this.  Do not call the walk_subtrees
7904         langhook but the now passed callback.  Pass lh on recursion.
7905         (walk_tree_without_duplicates): Rename to ...
7906         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
7907         and call walk_tree_1.
7908         * tree.h (walk_tree_lh): New typedef.
7909         (walk_tree_1): Declare.
7910         (walk_tree_without_duplicates_1): Likewise.
7911         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
7912         (walk_tree_without_duplicates): New define to
7913         walk_tree_without_duplicates_1 with NULL lh parameter.
7914         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
7915         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
7916         langhook.
7917         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
7918         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
7919         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
7920         initializer.
7921
7922 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7923
7924         PR middle-end/30564
7925         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
7926         code in front of the compacting of basic blocks.
7927         Move the folding of statements inbetween the cgraph checking
7928         and compacting of basic blocks.
7929
7930 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7931            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
7932
7933         PR target/32522
7934         * config/alpha/alpha.c (va_list_skip_additions): Check for
7935         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
7936         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
7937         PLUS_EXPR when checking ap.__base.
7938         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
7939         when doing addition on pointer types.  Use size_int instead of
7940         build_int_cst.
7941         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
7942         ptr_type in the second operand.
7943
7944 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
7945
7946         PR target/33115
7947         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
7948
7949 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7950
7951         PR middle-end/32940
7952         * cfgexpand.c  (expand_one_register_var): Mark pointer
7953         DECL_ARTIFICIAL as REG_POINTER also.
7954         * stmt.c (expand_decl): Likewise.
7955
7956 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
7957
7958         Fix PR 32772
7959         Fix PR 32716
7960         Fix PR 32328
7961         Fix PR 32303
7962
7963         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
7964         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
7965         on_worklist argument and avoid adding things to worklist multiple
7966         times.
7967         (add_to_worklist): Ditto.
7968         (mark_aliases_call_clobbered): Mark entire structure clobbered if
7969         single SFT is clobbered.
7970         (set_initial_properties): Ditto.
7971         (compute_call_clobbered): Update for changes to function
7972         arguments.
7973         (create_overlap_variables_for): Always create SFT for offset 0.
7974         (create_structure_vars): Handle PHI's, since we are in SSA form at
7975         this point.
7976         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
7977         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
7978         TARGET_MEM_REF.
7979         (add_vars_for_offset): Figure out aliases from access + points-to.
7980         (add_virtual_operand): Use add_vars-for_offset.
7981         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
7982         (add_call_clobber_ops): Remove makes_clobbering_call set.
7983         (get_expr_operands): Always pass through the INDIRECT_REF
7984         reference.
7985         * tree-ssa-structalias.c (struct constraint_graph): Remove
7986         variables member.
7987         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
7988         address_taken, pt_used, number_incoming.
7989         (FIRST_ADDR_NODE): Removed.
7990         (merge_graph_nodes): Remove broken code for the moment.
7991         (init_graph): New function.
7992         (build_pred_graph): Remove code to init_graph.
7993         Add location equivalence support.
7994         (struct scc_info): Rename roots to deleted.
7995         (scc_visit): Ditto.
7996         (init_scc_info): Ditto
7997         (init_topo_info): Use graph->size.
7998         (compute_topo_order): Ditto.
7999         (do_da_constraint): Removed.
8000         (do_sd_constraint): Remove calls to find().
8001         set_union_with_increment should always get 0 as last arg here.
8002         (do_complex_constraint): Replace do_da_constraint with assert.
8003         Stop calling find.
8004         (struct equiv_class_label): New.
8005         (pointer_equiv_class_table): Ditto.
8006         (location_equiv_class_table): Ditto.
8007         (equiv_class_label_hash): Ditto.
8008         (equiv_class_label_eq): Ditto
8009         (equiv_class_lookup): Ditto.
8010         (equiv_class_ladd): Ditto.
8011         (pointer_equiv_class): Ditto.
8012         (location_equiv_class): Ditto.
8013         (condense_visit): Rename and rewrite from label_visit to do only
8014         SCC related stuff for HU.
8015         (label_visit): Do HU work for HU.
8016         (perform_var_substitution): Update to do HU and location
8017         equivalence.
8018         (free_var_substitution_info): Update to free HU and location
8019         equivalence structures.  */
8020         (find_equivalent_node): Update for pointer but not location
8021         equivalence.
8022         (unite_pointer_equivalences): New function.
8023         (move_complex_constraints): Rewrite to only do moving.
8024         (rewrite_constraints): Split out of move_complex_constraints.
8025         (solve_graph): Use graph->size.
8026         (process_constraint_1): Add from_call argument, use it.
8027         Split *a = &b into two constraints.
8028         (process_constraint): Use new process_constraint_1.
8029         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
8030         (get_constraint_for): Handle non-pointer integers properly.
8031         Remove code that used to handle structures.
8032         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
8033         with unknown addends.
8034         (handle_rhs_call): New function.
8035         (find_func_aliases): Use handle_rhs_call.
8036         (set_uids_in_ptset): Add an assert.
8037         (set_used_smts): Fix bug in not considering unified vars.
8038         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
8039         (compute_points_to_sets): Update for other function changes.
8040         (delete_points_to_sets): Ditto.
8041         (ipa_pta_execute): Ditto.
8042         (pass_ipa_pta): We need to update SSA after ipa_pta.
8043         
8044 2007-08-19  Jan Hubicka  <jh@suse.cz>
8045
8046         * i386.md: Replace "rim" and "mri" constraints by "g".
8047
8048 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
8049
8050         * dwarf2out.c (text_section_used, cold_text_section_used,
8051         cold_text_section, dwarf2out_note_section_used): New.
8052         (dwarf2out_init): Initialize cold_text_section.
8053         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
8054         dwarf2out_note_section_used.
8055         (size_of_aranges): Only count entry for text section if it was
8056         used.  Count entry for cold text section if it was used.
8057         (output_aranges): Only output entries for text section and cold
8058         text section if they were used.
8059
8060 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
8061
8062         * tree-pretty-print.c (debug_generic_expr): Add a comment about
8063         the function.
8064         (debug_generic_stmt): Likewise.
8065         (debug_tree_chain): Likewise.
8066
8067 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
8068
8069         * tree-data-refs.c (split_constant_offset): Expose.
8070         * tree-data-refs.h (split_constant_offset): Add declaration.
8071
8072         * tree-vectorizer.h (dr_alignment_support): Renamed
8073         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
8074         Added a new value dr_explicit_realign.
8075         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
8076         dr_offset, dr_step, and dr_aligned_to, along with new access
8077         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
8078         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
8079         STMT_VINFO_DR_ALIGNED_TO.
8080
8081         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
8082         documentation.
8083         In case of outer-loop vectorization with non-fixed misalignment - use
8084         the dr_explicit_realign scheme instead of the optimized realignment
8085         scheme.
8086         (new_stmt_vec_info): Initialize new fields.
8087
8088         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
8089         'nested_in_vect_loop' case. Change verbosity level.
8090         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
8091         Don't fail on zero step in the outer-loop for loads.
8092         (vect_analyze_data_refs): Call split_constant_offset to calculate
8093         base, offset and init relative to the outer-loop.
8094
8095         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
8096         BSI function argument with a new function argument - at_loop.
8097         Simplify the condition that determines STEP. Takes additional argument
8098         INV_P. Support outer-loop vectorization (handle the
8099         nested_in_vect_loop case), including zero step in the outer-loop. Call
8100         vect_create_addr_base_for_vector_ref with additional argument.
8101         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
8102         Updated function documentation. Handle the 'nested_in_vect_loop' case.
8103         Fixed and simplified calculation of step.
8104         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
8105         of bsi, and with additional argument. Call bump_vector_ptr with
8106         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
8107         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
8108         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
8109         when the realignment setup needs to take place inside the loop.
8110         Support the dr_explicit_realign scheme. Allow generating the optimized
8111         realignment scheme for outer-loop vectorization. Added documentation.
8112         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
8113         the 'nested_in_vect_loop' case, including loads that are invariant in
8114         the outer-loop and the realignment schemes. Handle the case when the
8115         realignment setup needs to take place inside the loop. Call
8116         vect_setup_realignment with additional arguments.  Call
8117         vect_create_data_ref_ptr with additional argument and with loop instead
8118         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
8119         (vect_gen_niters_for_prolog_loop): Call
8120         vect_create_addr_base_for_vector_ref with additional arguments.
8121         (vect_create_cond_for_align_checks): Likewise.
8122         (bump_vector_ptr): Updated to support the new dr_explicit_realign
8123         scheme: takes additional argument bump; argument ptr_incr is now
8124         optional; updated documentation.
8125         (vect_init_vector): Takes additional argument (bsi). Use it, if
8126         available, to insert the vector initialization.
8127         (get_initial_def_for_induction): Pass additional argument in call to
8128         vect_init_vector.
8129         (vect_get_vec_def_for_operand): Likewise.
8130         (vect_setup_realignment): Likewise.
8131         (vectorizable_load): Likewise.
8132
8133 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
8134
8135         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
8136         as argument instead of struct loop.
8137         (nested_in_vect_loop_p): New function.
8138         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
8139         vect_used_in_outer.
8140         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
8141         from other phis in the loop.
8142         (destroy_loop_vec_info): Add additional argument to declaration.
8143
8144         * tree-vectorizer.c (supportable_widening_operation): Also check if
8145         nested_in_vect_loop_p (don't allow changing the order in this case).
8146         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
8147         of struct loop. Call nested_in_vect_loop_p and don't require
8148         flag_unsafe_math_optimizations if it returns true.
8149         (new_stmt_vec_info): When setting def_type for phis differentiate 
8150         loop-header phis from other phis.
8151         (bb_in_loop_p): New function.
8152         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
8153         just update their loop_vinfo.  Order of BB traversal now matters -
8154         call dfs_enumerate_from with bb_in_loop_p.
8155         (destroy_loop_vec_info): Takes additional argument to control whether
8156         stmt_vinfo of the loop stmts should be destroyed as well.
8157         (vect_is_simple_reduction): Allow the "non-reduction" use of a
8158         reduction stmt to be defines by a non loop-header phi.
8159         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
8160
8161         * tree-vect-transform.c (vectorizable_reduction): Call
8162         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
8163         (vectorizable_call): Likewise.
8164         (vectorizable_conversion): Likewise.
8165         (vectorizable_operation): Likewise.
8166         (vectorizable_type_promotion): Likewise.
8167         (vectorizable_type_demotion): Likewise.
8168         (vectorizable_store): Likewise.
8169         (vectorizable_live_operation): Likewise.
8170         (vectorizable_reduction): Likewise. Also pass loop_info to
8171         vect_is_simple_reduction instead of loop.
8172         (vect_init_vector): Call nested_in_vect_loop_p.
8173         (get_initial_def_for_reduction): Likewise.
8174         (vect_create_epilog_for_reduction): Likewise.
8175         (vect_init_vector): Check which loop to work with, in case there's an
8176         inner-loop.
8177         (get_initial_def_for_inducion): Extend to handle outer-loop
8178         vectorization. Fix indentation.
8179         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
8180         In the case vect_induction_def get the vector def from the induction
8181         phi node, instead of calling get_initial_def_for_inducion.
8182         (get_initial_def_for_reduction): Extend to handle outer-loop 
8183         vectorization.
8184         (vect_create_epilog_for_reduction): Extend to handle outer-loop
8185         vectorization.
8186         (vect_transform_loop): Change assert to just skip this case.  Add a
8187         dump printout.
8188         (vect_finish_stmt_generation): Add a couple asserts.
8189
8190         (vect_estimate_min_profitable_iters): Multiply
8191         cost of inner-loop stmts (in outer-loop vectorization) by estimated
8192         inner-loop bound.
8193         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
8194         this is an inner-loop reduction in outer-loop vectorization.
8195
8196         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
8197         Same code as what used to be vect_analyze_scalar_cycles, only with
8198         additional argument loop, and loop_info passed to
8199         vect_is_simple_reduction instead of loop.
8200         (vect_analyze_scalar_cycles): Code factored out into
8201         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
8202         Updated documentation.
8203         (analyze_operations): Check for inner-loop loop-closed exit-phis during
8204         outer-loop vectorization that are live or not used in the outerloop,
8205         cause this requires special handling.
8206         (vect_enhance_data_refs_alignment): Don't consider versioning for
8207         nested-loops.
8208         (vect_analyze_data_refs): Check that there are no datarefs in the
8209         inner-loop.
8210         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
8211         and vect_used_in_outer_by_reduction cases.
8212         (process_use): Also consider the case of outer-loop stmt defining an
8213         inner-loop stmt and vice versa.
8214         (vect_analyze_loop_1): New function.
8215         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
8216         loops.  Call vect_analyze_loop_1.
8217         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
8218         been vectorized.  Call destroy_loop_vec_info with additional argument.
8219
8220         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
8221         in the inner-loop when doing outer-loop vectorization. Add
8222         documentation and printout.
8223         (vect_recog_dot_prod_pattern): Likewise. Also add check for
8224         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
8225
8226 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
8227
8228         * tree-affine.h (print_aff): New prototype.
8229         (debug_aff): Likewise.
8230         * tree-affine.c (print_aff): New function.
8231         (debug_aff): Likewise.
8232
8233 2007-08-18  Paul Brook  <paul@codesourcery.com>
8234             Joseph Myers  <joseph@codesourcery.com>
8235
8236         * common.opt (-fdebug-prefix-map=): New option.
8237         * opts.c: Include debug.h.
8238         (common_handle_option): Handle -fdebug-prefix-map.
8239         * final.c: Include ggc.h.
8240         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
8241         remap_debug_filename): New.
8242         * Makefile.in (final.o, opts.o): Update dependencies.
8243         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
8244         * configure.ac: Check for assembler --debug-prefix-map support.
8245         * configure, config.in: Regenerate.
8246         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
8247         (ASM_DEBUG_SPEC): Include ASM_MAP.
8248         * doc/install.texi (--with-debug-prefix-map): Document.
8249         * doc/invoke.texi (-fdebug-prefix-map): Document.
8250         * dbxout.c (dbxout_init, dbxout_start_source_file,
8251         dbxout_source_file): Call remap_debug_filename.
8252         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
8253         dwarf2out_start_source_file, dwarf2out_finish): Call
8254         remap_debug_filename.
8255         (file_table_relative_p): Do not check d->emitted_number.
8256         * toplev.c (output_file_directive): Call remap_debug_filename.
8257         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
8258         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
8259
8260 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8261
8262         * loop-invariant.c (find_invariants_to_move): Add missing macro
8263         argument.
8264
8265 2007-08-17  Tom Tromey  <tromey@redhat.com>
8266
8267         * tree.h (struct tree_label_decl): Removed old "java" fields.
8268
8269 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
8270             Nigel Stephens  <nigel@mips.com>
8271
8272         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
8273         Treat -mno-data-in-code and -mcode-xonly as aliases for
8274         -mcode-readable=no and -mcode-readable=pcrel respectively.
8275         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
8276         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
8277         (MULTILIB_DIRNAMES): Update accordingly.
8278
8279 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
8280
8281         * Makefile.in (version.o): Depend on $(REVISION) only if
8282         REVISION_s is defined.
8283
8284 2007-08-17  Sa Liu  <saliu@de.ibm.com>
8285             Ulrich Weigand  <uweigand@de.ibm.com>
8286
8287         PR middle-end/32970
8288         * tree.c (reconstruct_complex_type): For a pointer to a vector,
8289         use build_qualified_type to retain qualifiers of the base type.
8290
8291 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
8292
8293         * config/score/score.md : Update pattern tablejump.
8294         * config/score/score.c : Update score_initialize_trampoline 
8295         function.
8296         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
8297         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
8298         * doc/contrib.texi: Add my entry.
8299
8300 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
8301
8302         * Makefile.in (REVISION): New.
8303         (REVISION_c): New.
8304         (REVISION_s): New.
8305         (version.o): Also depend on $(REVISION). Add
8306         -DREVISION=$(REVISION_s).
8307
8308         * version.c (version_string): Add REVISION.
8309
8310 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
8311
8312         * tree-eh.c (lower_try_finally_onedest): Reset the locus
8313         of GOTO that's relocated to a different block.
8314
8315 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8316
8317         * c-common.c (const_strip_array_types): New.
8318         * c-common.h (lang_missing_noreturn_ok_p): Delete.
8319         (const_strip_array_types): New.
8320         * c-objc-common.c (c_disregard_inline_limits,
8321         c_warn_unused_global_decl): Constify.
8322         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
8323         c_vla_type_p, c_incomplete_type_error): Likewise.
8324         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
8325         * hooks.c (hook_bool_const_tree_false): New.
8326         * hooks.h (hook_bool_const_tree_false): Likewise.
8327         * langhooks-def.h (lhd_warn_unused_global_decl,
8328         lhd_incomplete_type_error, lhd_expr_size,
8329         lhd_tree_inlining_disregard_inline_limits,
8330         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
8331         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
8332         * langhooks.c (lhd_warn_unused_global_decl,
8333         lhd_incomplete_type_error,
8334         lhd_tree_inlining_disregard_inline_limits,
8335         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
8336         lhd_expr_size): Likewise.
8337         * langhooks.h (lang_hooks_for_tree_inlining,
8338         lang_hooks_for_tree_dump, lang_hooks_for_types,
8339         lang_hooks_for_decls, lang_hooks): Likewise.
8340         * pointer-set.c (pointer_set_t, pointer_set_create,
8341         pointer_set_contains, insert_aux, pointer_set_insert,
8342         pointer_set_traverse, pointer_map_t, pointer_map_create,
8343         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
8344         Likewise.
8345         * pointer-set.h (pointer_set_contains, pointer_set_insert,
8346         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
8347         pointer_map_traverse): Likewise.
8348         * predict.c (assert_is_empty): Likewise.
8349         * tree-affine.c (free_name_expansion): Likewise.
8350         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
8351         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
8352         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
8353
8354 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
8355
8356         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
8357         field.
8358         (destroy_loop_vec_info): Add call to VEC_free.
8359         * tree-vectorizer.h (may_alias_ddrs): Define.
8360         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
8361         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
8362         Change reporting to dump.
8363         (vect_is_duplicate_ddr): New.
8364         (vect_mark_for_runtime_alias_test): New.
8365         (vect_analyze_data_ref_dependences) Add call to
8366         vect_mark_for_runtime_alias_test.
8367         (vect_enhance_data_refs_alignment): Define local variable
8368         vect_versioning_for_alias_required, don't perform
8369         peeling for alignment if versioning for alias is
8370         required.
8371         (vect_enhance_data_refs_alignment): Use
8372         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
8373         PARAM_VECT_MAX_VERSION_CHECKS.
8374         * tree-vect-transform.c
8375         (vect_create_cond_for_alias_checks): New.
8376         (vect_transform_loop): Add call to
8377         vect_create_cond_for_alias_checks.
8378         (vect_vfa_segment_size): New.
8379         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
8380         Rename.
8381         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
8382         * gcc/doc/invoke.texi
8383         (vect-max-version-for-alignment-checks): Document.
8384         (vect-max-version-for-alias-checks): Document.
8385         (vect-max-version-checks): Remove.
8386      
8387 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
8388
8389         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
8390         the same line as the instruction for all asm dialects.
8391         (*rep_movsi): Ditto.
8392         (*rep_movsi_rex64): Ditto.
8393         (*rep_movqi): Ditto.
8394         (*rep_movqi_rex64): Ditto.
8395         (*rep_stosdi_rex64): Ditto.
8396         (*rep_stossi): Ditto.
8397         (*rep_stossi_rex64): Ditto.
8398         (*rep_stosqi): Ditto.
8399         (*rep_stosqi_rex64): Ditto.
8400         (*cmpstrnqi_nz_1): Ditto.
8401         (*cmpstrnqi_nz_rex_1): Ditto.
8402         (*cmpstrnqi_1): Ditto.
8403         (*cmpstrnqi_rex_1): Ditto.
8404         (*strlenqi_1): Ditto.
8405         (*strlenqi_rex_1): Ditto.
8406         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
8407         prefix on the same line as the instruction for all asm dialects.
8408         (sync_double_compare_and_swap<mode>): Ditto.
8409         (*sync_double_compare_and_swapdi_pic): Ditto.
8410         (*sync_compare_and_swap_cc<mode>): Ditto.
8411         (sync_double_compare_and_swap_cc<mode>): Ditto.
8412         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
8413         (sync_old_add<mode>): Ditto.
8414         (sync_add<mode>): Ditto.
8415         (sync_sub<mode>): Ditto.
8416         (sync_ior<mode>): Ditto.
8417         (sync_and<mode>): Ditto.
8418         (sync_xor<mode>): Ditto.
8419
8420 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
8421
8422         PR middle-end/32897
8423         * reload.c (find_reloads): Check that the memory returned by
8424         find_reloads_toplev was not the result of forcing a constant
8425         to memory.
8426         (find_reloads_toplev): Always use simplify_gen_subreg to get
8427         the subreg of a constant.  If the result is also a constant,
8428         but not a legitimate one, force it into the constant pool
8429         and reload its address.
8430
8431 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
8432
8433         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
8434         POPCOUNT.
8435
8436 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
8437
8438         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
8439         directive for the current vector ABI.
8440
8441 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
8442
8443         PR target/32963
8444         * caller-save.c (reg_save_code): Set invalide status on restore code.
8445         
8446 2007-08-15  Diego Novillo  <dnovillo@google.com>
8447
8448         * tree-ssa-alias.c (compute_memory_partitions): Use
8449         alias_bitmap_obstack to allocate bitmaps.
8450         (reset_alias_info): Factor out of init_alias_info.
8451         Mark all name tags not associated to an SSA name for renaming.
8452         (init_alias_info): Call it.
8453         (create_name_tags): Tidy.  Add comments.
8454         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
8455
8456 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
8457
8458         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
8459         scheduler dependencies.
8460
8461 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8462
8463         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
8464         "register_operand".
8465         (*iorsi_1_zext): Likewise.
8466         (*iorsi_1_zext_imm): Likewise.
8467         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
8468         with "rm"/"xm" constraint.
8469         (sse2_vmsqrtv2df2): Likewise.
8470
8471 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
8472
8473         PR middle-end/33074
8474         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
8475         REG_LIBCALL note.
8476
8477 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
8478
8479         * tree-pass.h (PROP_pta): Removed.
8480         (TODO_rebuild_alias): New.
8481         (pass_may_alias): Removed.
8482         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
8483         aliasing if we changed something.
8484         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
8485         SSA internally.
8486         (pass_may_alias): Removed.
8487         (create_structure_vars): Return TODO_rebuild_alias.
8488         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
8489         * tree-sra.c (tree_sra): Only rebuild aliasing if something
8490         changed.
8491         (tree_sra_early): We never affect aliasing right now.
8492         * tree-flow.h (compute_may_aliases): New prototype.
8493         * passes.c: Remove pass_may_alias from the passes.
8494         (execute_function_todo): Support TODO_rebuild_alias.    
8495
8496 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
8497
8498         * i386.c: (legitimize_address): Move dllimported variable check
8499         infront of legitimizing pic address of CONST symbols.
8500
8501 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
8502
8503         PR tree-optimization/32941
8504         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
8505         (goto_queue_cmp): Remove.
8506         (find_goto_replacement): Change search method.
8507         (maybe_record_in_goto_queue): Add assert.
8508         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
8509         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
8510
8511 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8512
8513         * alias.c (component_uses_parent_alias_set): Constify.
8514         * alias.h (component_uses_parent_alias_set): Likewise.
8515         * cfgrtl.c (print_rtl_with_bb): Likewise.
8516         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
8517         mpz_get_double_int): Likewise.
8518         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
8519         mpz_get_double_int): Likewise.
8520         * expr.c (is_aligning_offset, undefined_operand_subword_p,
8521         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
8522         Likewise.
8523         * expr.h (safe_from_p): Likewise.
8524         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
8525         Likewise.
8526         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
8527         zero_sized_type, goa_lhs_expr_p): Likewise.
8528         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
8529         * rtl.h (print_rtl_with_bb): Likewise.
8530         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
8531         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
8532         * tree-flow-inline.h (bb_stmt_list): Constify.
8533         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
8534         cbsi_stmt): New.
8535         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
8536         const_first_stmt, const_last_stmt): New.
8537         (block_may_fallthru, empty_block_p): Constify.
8538         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
8539         EXPR_ONLY_BODY): New.
8540         (expr_first, expr_last, expr_only): Use macro for body.
8541         (const_expr_first, const_expr_last, const_expr_only): New.
8542         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
8543         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
8544         ctsi_prev, ctsi_stmt): New.
8545         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
8546         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
8547         * tree-ssa-loop-niter.c (loop_only_exit_p,
8548         derive_constant_upper_bound): Likewise.
8549         * tree-ssa-phiopt.c (empty_block_p): Likewise.
8550         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
8551         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
8552         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
8553         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
8554         * tree.c (get_type_static_bounds): Likewise.
8555         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
8556         (get_type_static_bounds): Constify.
8557
8558 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8559
8560         PR target/30315
8561         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
8562         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
8563         (*<addsub><mode>3_cc_overflow): New.
8564         (*add<mode>3_cconly_overflow): New.
8565         (*sub<mode>3_cconly_overflow): New.
8566         (*<addsub>si3_zext_cc_overflow): New.
8567         * config/i386/predicates.md (fcmov_comparison_operator): Accept
8568         CCCmode for LTU, GTU, LEU and GEU.
8569         (ix86_comparison_operator): Likewise.
8570         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
8571         * config/i386/i386.c (put_condition_code): Support CCCmode.
8572         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
8573         or MINUS expressions.
8574
8575 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
8576
8577         PR c/30428
8578         * c-typeck.c (build_binary_op): Disallow vector float types with
8579         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
8580
8581 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
8582
8583         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
8584         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
8585         (dep_def): New typedef.
8586         (init_dep_1, sd_debug_dep): Declare functions.
8587         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
8588         (debug_dep_links): Remove.
8589         (struct _deps_list): New field 'n_links'.
8590         (DEPS_LIST_N_LINKS): New macro.
8591         (FOR_EACH_DEP_LINK): Remove.
8592         (create_deps_list, free_deps_list, delete_deps_list): Remove
8593         declaration.
8594         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
8595         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
8596         (copy_deps_list_change_con, move_dep_link): Ditto.
8597         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
8598         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
8599         'dep_count'.
8600         (INSN_BACK_DEPS): Remove.
8601         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
8602         New macros.
8603         (INSN_DEP_COUNT): Remove.
8604         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
8605         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
8606         Declare global variables.
8607         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
8608         (add_forw_dep, compute_forward_dependences): Remove declarations.
8609         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
8610         (add_back_forw_dep, delete_back_forw_dep): Ditto.
8611         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
8612         functions.
8613         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
8614         New constants.
8615         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
8616         (sd_list_types_def): New typedef.
8617         (sd_next_list): Declare function.
8618         (struct _sd_iterator): New type.
8619         (sd_iterator_def): New typedef.
8620         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
8621         functions.
8622         (FOR_EACH_DEP): New cycle wrapper.
8623         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
8624         Declare functions.
8625         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
8626         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
8627         Ditto.
8628
8629         * sched-deps.c (init_dep_1): Make global.
8630         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
8631         constants.
8632         (dump_dep): New static function.
8633         (dump_dep_flags): New static variable.
8634         (sd_debug_dep): New function.
8635         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
8636         the list.
8637         (move_dep_link): Use remove_from_deps_list (), instead of
8638         detach_dep_link ().
8639         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
8640         (dep_link_is_detached_p): New static function.
8641         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
8642         instead.
8643         (dn_pool, dl_pool): New alloc_pools.
8644         (dn_pool_diff, dl_pool_diff): New static variables.
8645         (create_dep_node, delete_dep_node): New static function.
8646         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
8647         (deps_list_empty_p): Make it static.  Use 'n_links' field.
8648         (deps_pools_are_empty_p): New static function.
8649         (alloc_deps_list, delete_deps_list): Remove.
8650         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
8651         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
8652         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
8653         (forward_dependency_cache): Remove.
8654         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
8655         'back' from the names.  Change signature to use dep_t instead of
8656         equivalent quad.
8657         (add_back_dep): Ditto.  Make global.
8658         (check_dep_status): Rename to check_dep ().
8659         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
8660         New functions.
8661         (sd_finish_insn): Ditto.
8662         (sd_find_dep_between_no_cache): New static function.
8663         (sd_find_dep_between): New function.
8664         (ask_dependency_caches, set_dependency_caches): New static functions.
8665         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
8666         (add_or_update_dep_1): Separate pieces of functionality into
8667         ask_dependency_caches (), update_dependency_caches (),
8668         change_spec_dep_to_hard (), update_dep ().
8669         (get_back_and_forw_lists): New static function.
8670         (sd_add_dep): Separate setting of dependency caches into
8671         set_dependency_caches ().
8672         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
8673         New functions.
8674         (sd_delete_dep): Ditto.
8675         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
8676         (dump_lists): New static function.
8677         (sd_debug_lists): New debug function.
8678         (delete_all_dependences, fixup_sched_groups): Update to use
8679         sd_* infrastructure.
8680         (sched_analyze_2): Create data-speculative dependency only if
8681         data-speculation is enabled.
8682         (sched_analyze_insn): If insn cannot be speculative, make all its
8683         dependencies non-speculative.
8684         (sched_analyze): Use sd_init_insn ().
8685         (add_forw_dep, compute_forward_dependencies): Remove.
8686         (delete_dep_nodes_in_back_deps): New static function.
8687         (sched_free_deps): New function.
8688         (init_dependency_caches): Init alloc_pools.
8689         (extend_depedency_caches): Update after removing of
8690         forward_dependency_cache.
8691         (free_dependency_caches): Ditto.  Free alloc_pools.
8692         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
8693         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
8694         Ditto.
8695         (add_back_forw_dep, delete_back_forw_dep): Ditto.
8696         (add_dependence): Use init_dep ().
8697         (get_dep_weak_1): New static function.
8698         (get_dep_weak): Move logic to get_dep_weak_1 ().
8699         (dump_ds): New static function moved from haifa-sched.c:
8700         debug_spec_status ().
8701         (debug_ds): New debug function.
8702         (check_dep_status): Rename to check_dep ().  Update to check whole
8703         dependencies.
8704
8705         * haifa-sched.c (spec_info): Make global.
8706         (added_recovery_block_p): Rename to
8707         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
8708         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
8709         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
8710         to use new interfaces.
8711         (ok_for_early_queue_removal): Ditto.
8712         (schedule_block): Initialize logical uids of insns emitted by the
8713         target.
8714         (sched_init): Initialize new variable.
8715         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
8716         interfaces.
8717         (extend_global): Initialize insn data.
8718         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
8719         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
8720         new interfaces.
8721         (add_to_speculative_block): Update to use new interfaces.
8722         (create_recovery_block): Set new variables.
8723         (create_check_block_twin, fix_recovery_deps): Update to use new
8724         interfaces.
8725         (sched_insn_is_legitimate_for_speculation_p): New function.
8726         (speculate_insn): Move checking logic to
8727         sched_insn_is_legitimate_for_speculation_p ().
8728         (sched_remove_insn): Finalize sched-deps information of instruction.
8729         (clear_priorities, add_jump_dependencies): Update to use new
8730         interfaces.
8731         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
8732         
8733         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
8734         to use new interfaces.
8735         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
8736         (new_ready): Try to use control speculation only if it is available.
8737         (add_branch_dependences): Update to use new interfaces.
8738         (compute_block_backward_dependences): Rename to
8739         compute_block_dependences ().  Call
8740         targetm.sched.dependencies_evaluation_hook ().
8741         (free_block_dependencies): New static function.
8742         (debug_dependencies): Update to use new interfaces.
8743         (schedule_region): Remove separate computation of forward dependencies.
8744         Move call of targetm.sched.dependencies_evaluation_hook () to
8745         compute_block_dependences ().  Free dependencies at the end of
8746         scheduling the region.
8747
8748         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
8749         new interfaces.
8750         (add_deps_for_risky_insns): Ditto.
8751         (schedule_ebb): Remove separate computation of forward dependencies.
8752         Free dependencies at the end of scheduling the ebb.
8753
8754         * ddg.c (create_ddg_dependence): Update to use new interfaces.
8755         (build_intra_loop_deps): Ditto.  Remove separate computation of
8756         forward dependencies.  Free sched-deps dependencies.
8757
8758         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
8759         to use new interfaces.
8760         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
8761
8762         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
8763         new interfaces.
8764         (is_costly_group): Ditto.
8765
8766 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8767
8768         * alias.c (rtx_equal_for_memref_p): Constify.
8769         * basic-block.h (const_edge, const_basic_block): New.
8770         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
8771         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
8772         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
8773         probably_never_executed_bb_p, edge_probability_reliable_p,
8774         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
8775         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
8776         Likewise.
8777         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
8778         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
8779         Likewise.
8780         * cfganal.c (flow_active_insn_p, forwarder_block_p,
8781         flow_nodes_print, dfs_enumerate_from): Likewise.
8782         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
8783         control_flow_insn_p, count_basic_blocks): Likewise.
8784         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
8785         get_loop_body_with_size, loop_exit_edge_p): Likewise.
8786         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
8787         average_num_loop_insns, loop_exit_edge_p,
8788         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
8789         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
8790         average_num_loop_insns, seq_cost): Likewise.
8791         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
8792         * dominance.c (dominated_by_p): Likewise.
8793         * emit-rtl.c (validate_subreg): Likewise.
8794         * except.c (can_throw_internal, can_throw_external): Likewise.
8795         * except.h (can_throw_internal, can_throw_external): Likewise.
8796         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
8797         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
8798         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
8799         simple_mem, store_ops_ok, load_kills_store, find_loads,
8800         store_killed_in_insn, store_killed_after, store_killed_before,
8801         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
8802         Likewise.
8803         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
8804         noce_mem_write_may_trap_or_fault_p): Likewise.
8805         * pointer-set.c (pointer_set_contains, pointer_map_contains):
8806         Likewise.
8807         * pointer-set.h (pointer_set_contains, pointer_map_contains):
8808         Likewise.
8809         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
8810         probably_cold_bb_p, probably_never_executed_bb_p,
8811         edge_probability_reliable_p, br_prob_note_reliable_p,
8812         can_predict_insn_p): Likewise.
8813         * regclass.c (reg_set_to_hard_reg_set): Likewise.
8814         * resource.c (return_insn_p): Likewise.
8815         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
8816         Likewise.
8817         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
8818         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
8819         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
8820         verify_gimple_modify_stmt): Likewise.
8821         * tree-chrec.c (is_not_constant_evolution,
8822         is_multivariate_chrec_rec, is_multivariate_chrec,
8823         chrec_contains_symbols, chrec_contains_undetermined,
8824         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
8825         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
8826         eq_evolutions_p, scev_direction): Likewise.
8827         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
8828         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
8829         chrec_contains_symbols_defined_in_loop,
8830         chrec_contains_undetermined, tree_contains_chrecs,
8831         evolution_function_is_affine_multivariate_p,
8832         evolution_function_is_univariate_p, chrec_zerop,
8833         evolution_function_is_constant_p, evolution_function_is_affine_p,
8834         evolution_function_is_affine_or_constant_p,
8835         tree_does_not_contain_chrecs, chrec_type): Likewise.
8836         * tree-data-ref.c (tree_fold_divides_p,
8837         object_address_invariant_in_loop_p, dr_may_alias_p,
8838         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
8839         same_access_functions, constant_access_functions,
8840         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
8841         Likewise.
8842         * tree-flow.h (scev_direction): Likewise.
8843         * tree-gimple.c (is_gimple_stmt): Likewise.
8844         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
8845         Likewise.
8846         * tree-pretty-print.c (op_prio): Likewise.
8847         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
8848         analyzable_condition, backedge_phi_arg_p): Likewise.
8849         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
8850         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
8851         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
8852         Likewise.
8853
8854 2007-08-13  Dan Hipschman  <dsh@google.com>
8855
8856         PR c/32953
8857         * c-format.c (check_format_arg): Move check for zero-length
8858         format strings below the check for unterminated strings.
8859
8860 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
8861
8862         PR C/30427
8863         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
8864         types.
8865
8866 2007-08-13  Nick Clifton  <nickc@redhat.com>
8867
8868         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
8869
8870 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8871
8872         PR fortran/32860
8873         * c-format.c (gcc_gfc_length_specs): New array.
8874         (gcc_gfc_char_table): Add unsigned specifier, and references to
8875         the l length modifier.
8876         (format_types_orig): Use the new gcc_gfc_length_specs.
8877
8878 2007-08-12  Sa Liu  <saliu@de.ibm.com>
8879
8880         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
8881         and with REG_RETVAL note after split.
8882
8883 2007-08-11  David Daney  <ddaney@avtrex.com>
8884
8885         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
8886         as ATTRIBUTE_UNUSED.
8887
8888 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
8889             Segher Boessenkool  <segher@kernel.crashing.org>
8890
8891         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
8892         HAVE_LOCAL_CPU_DETECT not defined.
8893
8894 2007-08-11  Jan Hubicka  <jh@suse.cz>
8895
8896         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
8897         (cgraph_process_new_functions): Honor previous value of
8898         disregard_inline_limits.
8899         * ipa-inline.c (compute_inline_parameters): Likewise.
8900
8901 2007-08-11  Ian Lance Taylor  <iant@google.com>
8902
8903         * alias.h (alias_set_type): Define new type.
8904         (ALIAS_SET_MEMORY_BARRIER): Use it.
8905         * rtl.h: Include alias.h.
8906         (struct mem_attrs): Use alias_set_type.
8907         * tree.h: Include alias.h
8908         (struct tree_type): Use alias_set_type.
8909         (struct tree_struct_field_tag): Likewise.
8910         (struct tree_decl_common): Likewise.
8911         * alias.c (struct alias_set_entry): Use alias_set_type.
8912         (get_alias_set_entry, alias_set_subset_of): Likewise.
8913         (alias_sets_conflict_p): Likewise.
8914         (alias_sets_must_conflict_p): Likewise.
8915         (objects_must_conflict_p): Likewise.
8916         (get_alias_set, new_alias_set): Likewise.
8917         (record_alias_subset, record_component_aliases): Likewise.
8918         (varargs_set, frame_set): Change to alias_set_type.
8919         (get_varargs_alias_set): Use alias_set_type.
8920         (get_frame_alias_set): Likewise.
8921         * builtins.c (setjmp_alias_set): Change to alias_set_type.
8922         * dse.c (struct store_info): Use alias_set_type.
8923         (struct read_info, struct clear_alias_mode_holder): Likewise.
8924         (clear_alias_set_lookup, canon_address): Likewise.
8925         (record_store, check_mem_read_rtx): Likewise.
8926         (dse_record_singleton_alias_set): Likewise.
8927         (dse_invalidate_singleton_alias_set): Likewise.
8928         * emit-rtl.c (get_mem_attrs): Likewise.
8929         (set_mem_attributes_minus_bitpos): Likewise.
8930         (set_mem_alias_set): Likewise.
8931         * expr.c (store_constructor_field, store_field): Likewise.
8932         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
8933         * langhooks.c (lhd_get_alias_set): Likewise.
8934         * langhooks-def.h (lhd_get_alias_set): Likewise.
8935         * reload1.c (alter_reg): Likewise.
8936         * tree-flow.h (struct fieldoff): Likewise.
8937         * tree-ssa-alias.c (struct alias_map_d): Likewise.
8938         (may_alias_p, get_smt_for, create_sft): Likewise.
8939         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
8940         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
8941         (merge_smts_into): Likewise.
8942         * varasm.c (const_alias_set): Likewise.
8943         * c-common.c (strict_aliasing_warning): Likewise.
8944         (c_common_get_alias_set): Likewise.
8945         * dse.h (dse_record_singleton_alias_set): Update declaration.
8946         (dse_invalidate_singleton_alias_set): Likewise.
8947         * emit-rtl.h (set_mem_alias_set): Likewise.
8948         * c-common.h (c_common_get_alias_set): Likewise.
8949         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
8950         * print-tree.c (print_node): Likewise.
8951         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
8952         alias_set_type.
8953         (alpha_setup_incoming_varargs): Use alias_set_type.
8954         * config/i386/i386.c (setup_incoming_varargs_64): Use
8955         alias_set_type.
8956         (setup_incoming_varargs_ms_64): Likewise.
8957         (ix86_GOT_alias_set): Likewise.
8958         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
8959         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
8960         (set): Change to alias_set_type.
8961         (get_TOC_alias_set): Use alias_set_type.
8962         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
8963         declaration.
8964         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
8965         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
8966         alias_set_type.
8967         (struct_value_alias_set): Likewise.
8968         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
8969
8970 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
8971
8972         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
8973         * config/vxworks.h (TARGET_VXWORKS): Override.
8974         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
8975         "mips" if TARGET_VXWORKS.
8976
8977 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
8978
8979         * calls.c (avoid_likely_spilled_reg): New function.
8980         (expand_call): Use it.
8981
8982 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8983
8984         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
8985
8986 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
8987
8988         * config/mips/predicates.md (const_call_insn_operand): Invoke
8989         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
8990
8991 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
8992
8993         PR target/33042
8994         * config/rs6000/driver-rs6000.c: Include link.h.
8995         Use ElfW instead of wordsize-specif typedef.
8996
8997 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8998
8999         * system.h (CONST_CAST): New.
9000         * c-decl.c (c_make_fname_decl): Use it.
9001         * c-lex.c (cb_ident, lex_string): Likewise.
9002         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
9003         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
9004         give_switch, set_multilib_dir): Likewise.
9005         * gengtype-parse.c (string_seq, typedef_name): Likewise.
9006         * passes.c (execute_one_pass): Likewise.
9007         * prefix.c (update_path): Likewise.
9008         * pretty-print.c (pp_base_destroy_prefix): Likewise.
9009         * tree.c (build_string): Likewise.
9010
9011 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
9012
9013         * tree-flow-inline.h (is_exec_stmt): Remove.
9014         (is_label_stmt): Remove.
9015         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
9016         is_label_stmt.
9017
9018 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
9019
9020         * lower-subreg.c (resolve_shift_zext): Don't adjust
9021         src_reg_num for wordmode operands.
9022
9023 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
9024             David Ung  <davidu@mips.com>
9025
9026         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
9027         (TARGET_SCHED_REORDER2): Define.
9028         (mips_maybe_swap_ready): New.
9029         (mips_last_74k_agen_insn): New.
9030         (mips_74k_agen_init): New.
9031         (mips_74k_agen_reorder): New function to group loads and stores
9032         in the ready queue.
9033         (mips_sched_init): New.  
9034         (mips_sched_reorder): Don't do initialization here.  Call
9035         mips_74k_agen_reorder.
9036         (mips_variable_issue): Call mips_74k_agen_init.
9037
9038 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
9039
9040         * tree-flow-inline.h (get_filename): Remove.
9041
9042 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
9043
9044         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
9045         argument.
9046         (mips_fetch_insns): Delete in favor of...
9047         (mips_load_store_insns): ...this new function.
9048         * config/mips/mips.c (mips_address_insns): Add a boolean argument
9049         to say whether multiword moves _might_ be split.
9050         (mips_fetch_insns): Delete in favor of...
9051         (mips_load_store_insns): ...this new function.
9052         (mips_rtx_costs): Update the call to mips_address_insns.
9053         (mips_address_cost): Likewise.
9054         * config/mips/mips.md (length): Use mips_load_store_insns instead
9055         of mips_fetch_insns.
9056         * config/mips/constraints.md (R): Use mips_address_insns rather
9057         than mips_fetch_insns.  Assume that the move never needs to be split.
9058
9059 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
9060
9061         * config/mips/mips.opt (mhard-float, msoft-float): Make these
9062         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
9063         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
9064         * config/mips/mips.h (mips16_hard_float): Delete.
9065         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
9066         definitions, and replace with....
9067         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
9068         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
9069         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
9070         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
9071         (override_options): Replace MASK_SOFT_FLOAT references with
9072         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
9073         and mips16_hard_float when TARGET_MIPS16.
9074         
9075 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9076
9077         PR c/32796
9078         * c-typeck.c (build_binary_op): Check for non pointer types before
9079         calling int_fits_type_p.
9080
9081 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9082
9083         PR middle-end/32813
9084         * fold-const.c (omit_one_operand): Return only the ommitted expression
9085         if the result is an empty statement.
9086         (pedantic_omit_one_operand): Likewise.
9087
9088 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
9089
9090         * c-typeck.c (readonly_error): Improve error for assignment.
9091         
9092         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
9093         expression. 
9094         (pp_c_expression): Ditto.
9095
9096 2007-08-09  Simon Baldwin  <simonb@google.com>
9097
9098         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
9099         break that was preventing simplify_associative_operation() for xor.
9100
9101 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
9102             Nigel Stephens  <nigel@mips.com>
9103
9104         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
9105         Document change in interpretation of value from boolean to
9106         tri-state integer.
9107         * optabs.c (expand_ffs, expand_ctz): New functions to compute
9108         ffs and ctz using clz.
9109         (expand_unop): Call them.
9110         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
9111         result value.
9112         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
9113         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
9114         enable the new ffs expansion on this target.
9115
9116 2007-08-09  Jan Hubicka  <jh@suse.cz>
9117
9118         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
9119         (expand_ternary_op): Likewise.
9120         (expand_vec_shift_expr): Likewise.
9121         (expand_binop_directly): Likewise.
9122         (expand_binop): Likewise.
9123         (sign_expand_binop): Likewise.
9124         (expand_twoval_unop): Likewise.
9125         (expand_twoval_binop): Likewise.
9126         (expand_twoval_binop_libfunc): Likewise.
9127         (widen_clz): Likewise.
9128         (widen_bswap): Likewise.
9129         (expand_parity): Likewise.
9130         (expand_unop): Likewise.
9131         (expand_abs_nojump): Likewise.
9132         (expand_copysign): Likewise.
9133         (emit_no_conflict_block): Likewise.
9134         (emit_libcall_block): Likewise.
9135         (can_compare_p): Likewise.
9136         (prepare_cmp_insn): Likewise.
9137         (emit_cmp_and_jump_insn_1): Likewise.
9138         (prepare_float_lib_cmp): Likewise.
9139         (emit_conditional_add): Likewise.
9140         (gen_add2_insn): Likewise.
9141         (have_add2_insn): Likewise.
9142         (gen_sub2_insn): Likewise.
9143         (have_sub2_insn): Likewise.
9144         (can_extend_p): Likewise.
9145         (can_fix_p): Likewise.
9146         (can_float_p): Likewise.
9147         (expand_float): Likewise.
9148         (expand_fix): Likewise.
9149         (expand_sfix_optab): Likewise.
9150         (new_optab): Likewise.
9151         (new_convert_optab): Likewise.
9152         (init_libfuncs): Likewise.
9153         (init_interclass_conv_libfuncs): Likewise.
9154         (init_intraclass_conv_libfuncs): Likewise.
9155         (set_conv_libfunc): Likewise.
9156         (init_optabs): Likewise.
9157         (debug_optab_libfuncs): Likewise.
9158         (gen_cond_trap): Likewise.
9159         * optabs.h (optab_handler, convert_optab_hanlder): New.
9160         * genopinit.c: Update optabs generation table.
9161         * reload.c (find_reloads_address_1): Use optabs accestors.
9162         * builtins.c (expand_builtin_mathfn): Likewise.
9163         (expand_builtin_mathfn_2): Likewise.
9164         (expand_builtin_mathfn_3): Likewise.
9165         (expand_builtin_interclass_mathfn): Likewise.
9166         (expand_builtin_sincos): Likewise.
9167         (expand_builtin_cexpi): Likewise.
9168         (expand_builtin_powi): Likewise.
9169         (expand_builtin_strlen): Likewise.
9170         * dojump.c (do_jump): Likewise.
9171         * expr.c (convert_move): Likewise.
9172         (move_by_pieces): Likewise.
9173         (move_by_pieces_ninsns): Likewise.
9174         (can_store_by_pieces): Likewise.
9175         (store_by_pieces_1): Likewise.
9176         (emit_move_via_integer): Likewise.
9177         (emit_move_complex): Likewise.
9178         (emit_move_ccmode): Likewise.
9179         (emit_move_insn_1): Likewise.
9180         (emit_single_push_insn): Likewise.
9181         (store_constructor): Likewise.
9182         (expand_expr_real_1): Likewise.
9183         (do_store_flag): Likewise.
9184         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
9185         (enumerate_modes): Likewise.
9186         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
9187         (supportable_widening_operation): Likewise.
9188         (supportable_narrowing_operation): Likewise.
9189         * expmed.c (store_bit_field_1): Likewise.
9190         (extract_bit_field_1): Likewise.
9191         (expand_mult_highpart_optab): Likewise.
9192         (expand_smod_pow2): Likewise.
9193         (expand_divmod): Likewise.
9194         (emit_store_flag): Likewise.
9195         * tree-vect-patterns.c
9196         (vect_pattern_recog_1): Likewise.
9197         * tree-ssa-loop-prefetch.c
9198         (nontemporal_store_p): Likewise.
9199         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
9200         (vect_create_epilog_for_reduction): Likewise.
9201         (vectorizable_reduction): Likewise.
9202         (vectorizable_operation): Likewise.
9203         (vect_strided_store_supported): Likewise.
9204         (vectorizable_store): Likewise.
9205         (vect_strided_load_supported): Likewise.
9206         (vectorizable_load): Likewise.
9207         * combine.c (simplify_comparison): Likewise.
9208         * tree-vect-generic.c
9209         (type_for_widest_vector_mode): Likewise.
9210         (expand_vector_operations_1): Likewise.
9211         * config/spu/spu.c (spu_expand_mov): Likewise.
9212         (spu_emit_vector_compare): Likewise.
9213         * config/rs6000/rs6000.c
9214         (rs6000_emit_vector_compare): Likewise.
9215         * stmt.c (add_case_node): Likewise.
9216         * reload1.c (gen_reload):
9217
9218 2007-08-09  Michael Matz  <matz@suse.de>
9219
9220         * tree.h (fixed_zerop): Declare as taking a const_tree.
9221         * tree.c (fixed_zerop): Take a const_tree.
9222
9223 2007-08-09  Ira Rosen  <irar@il.ibm.com>
9224
9225         * tree-vect-transform.c (vectorizable_store): Remove call to
9226         copy_virtual_operands() and call mark_symbols_for_renaming() for
9227         the created vector store.
9228         (vect_setup_realignment): Don't call copy_virtual_operands() and
9229         update_vuses_to_preheader(). 
9230         (vectorizable_load): Don't call copy_virtual_operands(). 
9231         (update_vuses_to_preheader): Remove.
9232
9233 2007-08-08  Chao-ying Fu  <fu@mips.com>
9234
9235         * tree.def (FIXED_POINT_TYPE): New type.
9236         (FIXED_CST): New constant.
9237         (FIXED_CONVERT_EXPR): New expr.
9238         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
9239         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
9240         * tree.h (struct tree_base): Add saturating_flag.
9241         Remove one bit of spare for saturating_flag.
9242         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
9243         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
9244         FIXED_POINT_TYPE_P): Define.
9245         (TYPE_SATURATING): Define.
9246         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
9247         (struct tree_fixed_cst): New.
9248         (TYPE_IBIT, TYPE_FBIT): Define.
9249         (tree_node): Add fixed_cst.
9250         (enum tree_index): Add new enumeration values of
9251         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
9252         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
9253         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
9254         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
9255         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
9256         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
9257         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
9258         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
9259         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
9260         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
9261         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
9262         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
9263         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
9264         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
9265         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
9266         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
9267         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
9268         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
9269         (sat_short_fract_type_node, sat_fract_type_node,
9270         sat_long_fract_type_node, sat_long_long_fract_type_node,
9271         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
9272         sat_unsigned_long_fract_type_node,
9273         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
9274         fract_type_node, long_fract_type_node, long_long_fract_type_node,
9275         unsigned_short_fract_type_node, unsigned_fract_type_node,
9276         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
9277         sat_short_accum_type_node, sat_accum_type_node,
9278         sat_long_accum_type_node, sat_long_long_accum_type_node,
9279         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
9280         sat_unsigned_long_accum_type_node,
9281         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
9282         accum_type_node, long_accum_type_node, long_long_accum_type_node,
9283         unsigned_short_accum_type_node, unsigned_accum_type_node,
9284         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
9285         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
9286         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
9287         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
9288         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
9289         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
9290         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
9291         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
9292         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
9293         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
9294         sat_uda_type_node, sat_uta_type_node): New macro.
9295         (make_fract_type, make_accum_type): Declare.
9296         (make_signed_fract_type, make_unsigned_fract_type,
9297         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
9298         make_signed_accum_type, make_unsigned_accum_type,
9299         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
9300         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
9301         make_or_reuse_sat_signed_fract_type,
9302         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
9303         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
9304         make_or_reuse_sat_unsigned_accum_type): New macro.
9305         (fixed_zerop): Declare.
9306         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
9307         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
9308         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
9309         LONG_LONG_ACCUM_TYPE_SIZE): Define.
9310         * treestruct.def: Add TS_FIXED_CST.
9311         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
9312         (tree.o): Likewise.
9313         (tree-dump.o): Likewise.
9314         (print-tree.o): Likewise.
9315         (tree-pretty-print.o): Likewise.
9316         (fold-const.o): Likewise.
9317         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
9318         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
9319         (is_gimple_min_invariant): Handle FIXED_CST.
9320         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
9321         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
9322         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
9323         (layout_type): Handle FIXED_POINT_TYPE.
9324         (make_fract_type, make_accum_type): New functions.
9325         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
9326         * tree-dump.c (fixed-value.h): New include.
9327         (dump_fixed): New function.
9328         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
9329         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
9330         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
9331         * tree-pretty-print.c (fixed-value.h): New include.
9332         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
9333         FIXED_CONVERT_EXPR.
9334         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
9335         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
9336         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
9337         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
9338         for non-saturating fixed-point types.
9339         (reassociate_bb): Likewise.
9340         * emit-rtl.c (fixed-value.h): New include.
9341         (fconst0, fconst1): New array.
9342         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
9343         * tree-vect-generic.c expand_vector_operation): Support
9344         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
9345         MODE_VECTOR_UACCUM.
9346         (type_for_widest_vector_mode): Add one parameter for the 
9347         saturating flag.
9348         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
9349         vector mode.
9350         Pass the satp parameter to type_for_mode for fixed-point types.
9351         (expand_vector_operations_1): Pass the saturating flag to
9352         type_for_widest_vector_mode.
9353         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
9354         and MODE_VECTOR_UACCUM.
9355         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
9356         (vectorizable_condition): Likewise.
9357         * tree.c (fixed-value.h): New include.
9358         (tree_code_size): Support FIXED_CST.
9359         (build_fixed): New function.
9360         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
9361         (fixed_zerop): New function.
9362         (tree_node_structure): Support FIXED_CST.
9363         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
9364         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
9365         (type_hash_eq): Handle FIXED_POINT_TYPE.
9366         (simple_cst_equal): Support FIXED_CST.
9367         (iterative_hash_expr): Handle FIXED_CST.
9368         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
9369         (get_narrower): Likewise.
9370         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
9371         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
9372         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
9373         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
9374         nodes.
9375         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
9376         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
9377         (initializer_zerop): Support FIXED_CST.
9378         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
9379         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
9380         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
9381         (is_base_type): Handle FIXED_POINT_TYPE.
9382         (add_type_attribute): Handle FIXED_POINT_TYPE.
9383         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
9384         * print-tree.c (fixed-value.h): New include.
9385         (print_node_brief): Support FIXED_CST.
9386         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
9387         * c-pretty-print.c (fixed-value.h): New include.
9388         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
9389         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
9390         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
9391         Support fixed-point types for inner items in VECTOR_TYPE.
9392         (pp_c_direct_declarator): Likewise.
9393         (pp_c_declarator): Likewise.
9394         (pp_c_fixed_constant): New function.
9395         (pp_c_constant): Handle FIXED_CST.
9396         (pp_c_primary_expression): Likewise.
9397         (pp_c_expression): Likewise.
9398         * fold-const.c (fixed-value.h): New include.
9399         (negate_expr_p): Return true for FIXED_CST.
9400         (fold_negate_expr): Support FIXED_CST.
9401         (split_tree): Support FIXED_CST.
9402         (const_binop): Support FIXED_CST.
9403         (fold_convert_const_int_from_fixed): New function to convert from
9404         fixed to int.
9405         (fold_convert_const_real_from_fixed): New function to convert from
9406         fixed to real.
9407         (fold_convert_const_fixed_from_fixed): New function to convert from
9408         fixed to another fixed.
9409         (fold_convert_const_fixed_from_int): New function to convert from
9410         int to fixed.
9411         (fold_convert_const_fixed_from_real): New function to convert from
9412         real to fixed.
9413         (fold_convert_const): Support conversions from fixed to int, from
9414         fixed to real, from fixed to fixed, from int to fixed, and from real
9415         to fixed.
9416         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
9417         (operand_equal_p): Support FIXED_CST.
9418         (make_range): For fixed-point modes, we need to pass the
9419         saturating flag as the 2nd parameter.
9420         (tree_swap_operands_p): Handle FIXED_CST.
9421         (fold_plusminus_mult_expr): For fract modes, we cannot generate
9422         constant 1.
9423         (fold_unary): Support FIXED_CONVERT_EXPR.
9424         (fold_binary): Handle FIXED_CST.
9425         Make sure the type is not saturating, before associating operations.
9426         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
9427         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
9428         (fold_negate_const): Support FIXED_CST.
9429         (fold_relational_const): Support FIXED_CST.
9430         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
9431         (gimplify_expr): Handle FIXED_CST.
9432         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
9433         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
9434         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
9435         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
9436         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
9437         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
9438         LONG_LONG_ACCUM_TYPE_SIZE.
9439         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
9440         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
9441         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
9442         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
9443         MODE_ACCUM, and MODE_UACCUM.
9444         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
9445         fixed-point types to disable reduction.
9446         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
9447
9448 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
9449
9450         * config/rs6000/x-rs6000: New file.
9451         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
9452         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
9453         (EXTRA_SPEC_FUNCTIONS): Define.
9454         (HAVE_LOCAL_CPU_DETECT): Define.
9455         (CC1_CPU_SPEC): Define.
9456         * config/rs6000/driver-rs6000.c: New file.
9457         * config/rs6000/aix.h (CC1_SPEC): Define.
9458         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
9459         * config.host: Add x-rs6000 to host_xmake_file if host and target
9460         are rs6000 or powerpc.
9461
9462 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
9463
9464         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
9465
9466 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9467             Sandra Loosemore  <sandra@codesourcery.com>
9468             Chao-ying Fu  <fu@mips.com>
9469             Nigel Stephens  <nigel@mips.com>
9470             David Ung  <davidu@mips.com>
9471
9472         * doc/invoke.texi (-mcode-readable): Document.
9473         * config/mips/mips.opt (mcode-readable): New option.
9474         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
9475         * config/mips/mips.h (mips_code_readable_setting): New enum.
9476         (mips_code_readable): Declare.
9477         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
9478         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
9479         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
9480         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
9481         boiler-plate comments.
9482         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
9483         * config/mips/mips.c (mips_code_readable): New variable.
9484         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
9485         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
9486         context and -mcode-readable setting to restrict the use of
9487         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
9488         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
9489         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
9490         (mips_blocks_for_constant_p): Only return false for
9491         TARGET_MIPS16_PCREL_LOADS.
9492         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
9493         for MIPS16.  Handle SYMBOL_32_HIGH.
9494         (mips_const_insns): Allow HIGHs for MIPS16 too.
9495         (mips_unspec_address_offset): New function, split out from...
9496         (mips_unspec_address): ...here.
9497         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
9498         16-bit symbolic constants.  Assert approropiate conditions for
9499         using the "la" and "dla" macros.
9500         (mips_handle_option): Handle -mcode-readable=.
9501         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
9502         Set up mips_lo_relocs[SYMBOL_32_HIGH].
9503         (mips_strip_unspec_address): New function, split out from...
9504         (print_operand_reloc): ...here.
9505         (print_operand): Pass constants through mips_strip_unspec_address.
9506         (print_operand_address): Likewise.
9507         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
9508         (mips_select_rtx_section): Remove MIPS16 handling.
9509         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
9510         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
9511         (mips16_lay_out_constants): Do nothing unless
9512         TARGET_MIPS16_PCREL_LOADS.
9513         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
9514         * config/mips/mips.md: Split HIGHs for MIPS16.
9515         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
9516
9517 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9518
9519         * config/mips/mips-protos.h (mips_emit_move): Declare.
9520         * config/mips/mips.c (mips_emit_move): New function.
9521         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
9522         (mips_legitimize_const_move): Likewise.
9523         (mips_legitimize_move): Likewise.
9524         (mips_split_64bit_move): Likewise.
9525         (mips_restore_gp): Likewise.
9526         (mips_load_call_address): Likewise.
9527         (mips_emit_fcc_reload): Likewise.
9528         (mips_set_return_address): Likewise.
9529         (mips_block_move_straight): Likewise.
9530         (mips_block_move_loop): Likewise.
9531         (mips_setup_incoming_varargs): Likewise.
9532         (mips_save_reg): Likewise.
9533         (mips_expand_prologue): Likewise.
9534         (mips_restore_reg): Likewise.
9535         (mips_expand_epilogue): Likewise.
9536         (mips_output_mi_thunk): Likewise.
9537         (build_mips16_call_stub): Likewise.
9538         (mips_builtin_branch_and_move): Likewise.
9539         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
9540         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
9541         (fixuns_truncdfdi2): Likewise.
9542         (fixuns_truncsfsi2): Likewise.
9543         (fixuns_truncsfdi2): Likewise.
9544         (loadgp_absolute): Likewise.
9545         (builtin_setjmp_setup): Likewise.
9546         (builtin_longjmp): Likewise.
9547         (untyped_call): Likewise.
9548
9549 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9550
9551         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
9552         an "rtx *" argument.  Return a bool.
9553         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
9554         values and return true if they can be split.  Take the same kind of
9555         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
9556         and store the lo_sum there if nonnull.  Use the symbol type to
9557         determine whether a $gp or HIGH is needed.
9558         (mips_legitimize_address): Update call to mips_split_symbol and
9559         simplify accordingly.
9560         (mips_legitimize_const_move): Likewise.
9561         * config/mips/mips.md: In the combine define_split,
9562         check mips_split_symbol instead of splittable_symbolic_operand.
9563         Update use of mips_split_symbol in the generator code.
9564         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
9565
9566 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9567
9568         * config/mips/mips.c (mips_symbolic_address_p): Delete.
9569         (mips_symbol_insns_1): New function, split out from...
9570         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
9571         and stores separately from load addresses.
9572         (mips_classify_address): Replace uses of mips_symbolic_address_p
9573         with uses of mips_symbol_insns.
9574         (mips_address_insns): Update calls to mips_symbol_insns.
9575         (mips_const_insns): Likewise.
9576         (mips_legitimize_address): Likewise.
9577
9578 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9579
9580         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
9581         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
9582         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
9583         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
9584         non-call contexts if TARGET_MIPS16.
9585         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
9586         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
9587         code for SYMBOL_ABSOLUTE.
9588         (mips_symbol_insns): Likewise.
9589
9590 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9591
9592         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
9593         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
9594         (mips_symbolic_constant_p): Likewise.  Update the call to
9595         mips_classify_symbol.
9596         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
9597         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
9598         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
9599         (print_operand_reloc): Add a context argument.  Update the call to
9600         mips_symbolic_constant_p.
9601         (print_operand): Update the calls to print_operand_reloc.
9602         (print_operand_address): Use print_operand_reloc rather than
9603         print_operand.
9604         (mips_rewrite_small_data_p): Add a context argument.  Update the call
9605         to mips_symbolic_constant_p.
9606         (mips_small_data_pattern_1): Make DATA the containing mem.
9607         Update the call to mips_rewrite_small_data_p.
9608         (mips_rewrite_small_data_1): Likewise.
9609         (mips_use_anchors_for_symbol_p): Update the call to
9610         mips_symbolic_constant_p.
9611         * config/mips/predicates.md (const_call_insn_operand): Likewise.
9612         (splittable_symbolic_operand): Likewise.
9613         (move_operand): Likewise.
9614         (absolute_symbolic_operand): Likewise.
9615         (got_disp_operand): Likewise.
9616         (got_page_ofst_operand): Likewise.
9617
9618 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9619
9620         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
9621         (SYMBOL_ABSOLUTE): ...this.
9622         (SYMBOL_SMALL_DATA): Rename to...
9623         (SYMBOL_GP_RELATIVE): ...this.
9624         (SYMBOL_CONSTANT_POOL): Rename to...
9625         (SYMBOL_PC_RELATIVE): ...this.
9626         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
9627         (mips_symbolic_address_p, mips_symbol_insns, override_options)
9628         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
9629         after above changes.
9630         * config/mips/predicates.md (const_call_insn_operand): Likewise.
9631         (general_symbolic_operand): Rename to...
9632         (absolute_symbolic_operand): ...this.
9633         * config/mips/mips.md: Update after above changes.
9634
9635 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
9636             Revital Eres  <eres@il.ibm.com>
9637
9638         * ddg.c (print_ddg): Add dump information.
9639         * modulo-sched.c (print_node_sched_params): Add parameter and
9640         verbosity.
9641         (calculate_maxii): Remove function.
9642         (undo_generate_reg_moves): Likewise.
9643         (undo_permute_partial_schedule): Likewise.
9644         (kernel_number_of_cycles): Likewise.
9645         (MAXII_FACTOR): New definition to calculate the upper bound of II.
9646         (sms_schedule): Use it.  Remove profitability checks.
9647         (sms_schedule_by_order): Fix order of nodes within the cycle.
9648
9649 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
9650
9651         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
9652         -profile option, add pie support.
9653         (ENDFILE_SPEC): New spec.
9654         * config/gnu.h (LIB_SPEC): Add -profile option.
9655
9656 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
9657
9658         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
9659         * config/gnu.h (LIB_SPEC): Likewise.
9660
9661 2007-08-07  Yaz Saito  <saito@google.com>
9662             Ian Lance Taylor  <iant@google.com>
9663
9664         * common.opt (finstrument-functions-exclude-function-list): New
9665         option.
9666         (finstrument-functions-exclude-file-list): New option.
9667         * opts.c (char_p): Define and DEF_VEC.
9668         (flag_instrument_functions_exclude_functions): New static
9669         variable.
9670         (flag_instrument_functions_exclude_files): New static variable.
9671         (add_instrument_functions_exclude_list): New static function.
9672         (flag_instrument_functions_exclude_p): New function.
9673         (common_handle_option): Handle new options.
9674         * flags.h (flag_instrument_functions_exclude_p): Declare.
9675         * gimplify.c (gimplify_function_tree): Call
9676         flag_instrument_functions_exclude_p.
9677         * doc/invoke.texi (Option Summary): Mention new options.
9678         (Code Gen Options): Document new options.
9679
9680 2007-08-07  Ian Lance Taylor  <iant@google.com>
9681
9682         PR rtl-optimization/32776
9683         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
9684         (resolve_use): Likewise.
9685         (decompose_multiword_subregs): Remove "changed" local variable.
9686
9687 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
9688
9689         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
9690         * configure: Regenerate.
9691         * config.in: Regenerate.
9692         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
9693         spec string.
9694
9695 2007-08-07  Ian Lance Taylor  <iant@google.com>
9696
9697         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
9698         note, just delete the insn.
9699
9700 2007-08-07  Andreas Schwab  <schwab@suse.de>
9701
9702         PR bootstrap/32973
9703         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
9704         struct definition.
9705
9706 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
9707
9708         * lower-subreg.c (resolve_subreg_use): Remove assertion.
9709         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
9710         (decompose_multiword_subregs): Use the functions above to decompose
9711         multiword shifts and zero-extends.
9712
9713 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9714
9715         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
9716         "assemble" descriptions which were swapped.
9717
9718 2007-08-06  Chao-ying Fu  <fu@mips.com>
9719
9720         * fixed-value.h: New file.
9721         * fixed-value.c: New file.
9722         * Makefile.in (OBJS-common): Add fixed-value.o.
9723         (fixed-value.o): New rule.
9724         (GTFILES): Add fixed-value.h.
9725         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
9726         to compare a.low and b.low.
9727         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
9728
9729 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9730             Daniel Jacobowitz  <dan@codesourcery.com>
9731
9732         PR target/31868
9733         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
9734         tmake_file.
9735         (x86_64-*-netbsd*): Likewise.
9736         (x86_64-*-linux*): Likewise.
9737         (x86_64-*-kfreebsd*-gnu): Likewise.
9738         (x86_64-*-knetbsd*-gnu): Likewise.
9739         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
9740
9741         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
9742
9743         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
9744         Add -fno-asynchronous-unwind-tables.
9745
9746         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
9747         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
9748         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
9749         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
9750         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
9751
9752 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
9753
9754         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
9755         (TARGET_C_MODE_FOR_SUFFIX): New.
9756
9757 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
9758
9759         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
9760
9761 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
9762
9763         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
9764
9765 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9766
9767         * config/i386/i386.md: Check TARGET_ macros and optimize_size
9768         before checking function returns in conditional expressions.
9769
9770 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
9771
9772         PR pch/13676
9773         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
9774
9775 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9776
9777         PR middle-end/32988
9778         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
9779         for INTEGRAL_TYPE_P.
9780
9781 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
9782
9783         * configure.ac: Remove --enable-checking=df from default settings.
9784         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
9785         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
9786         if the parameter is true.
9787         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
9788         DF_VERIFY_SCHEDULED flag is true.
9789         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
9790         (df_finish_pass): Adjust prototype.
9791         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
9792         true.
9793
9794         * see.c (pass_see): Add TODO_df_verify.
9795         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
9796         * global.c (rest_of_handle_global_alloc): Schedule verification
9797         after the pass.
9798         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
9799         before the pass.
9800         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
9801         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
9802         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
9803
9804         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
9805         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
9806         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
9807
9808 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
9809             Revital Eres <eres@il.ibm.com>
9810
9811         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
9812         flag.
9813         * ddg.c (create_ddg_dependence): Rename to...
9814         (create_ddg_dep_from_intra_loop_link): This.  Do not check
9815         for interloop edges.  Do not create anti dependence edge when
9816         a true dependence edge exists in the opposite direction and
9817         -fmodulo-sched-allow-regmoves is set.
9818         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
9819         (add_cross_iteration_register_deps): Create anti dependence edge
9820         when -fno-modulo-sched-allow-regmoves is set.
9821         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
9822
9823 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
9824
9825         * config/arm/arm.md (movsi): Add braces.
9826
9827 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9828
9829         PR middle-end/32780
9830         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
9831         operands for the folding of "A - (A & B)" into "~B & A"; cast them
9832         to type.
9833
9834 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
9835
9836         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
9837         state accessor functions.
9838         * cfgloopmanip.c (remove_path, create_preheaders,
9839         force_single_succ_latches, fix_loop_structure): Ditto.
9840         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
9841         tree_duplicate_loop_to_header_edge): Ditto.
9842         * cfgloopanal.c (mark_irreducible_loops): Ditto.
9843         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
9844         Ditto.
9845         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
9846         cleanup_tree_cfg): Ditto.
9847         * tree-cfg.c (tree_merge_blocks): Ditto.
9848         * cfgloop.c (rescan_loop_exit, record_loop_exits,
9849         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
9850         loop_preheader_edge, single_exit): Ditto.
9851         (flow_loops_find): Do not clear loops->state.
9852         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
9853         loops_state_clear): New functions.
9854
9855 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9856
9857         PR middle-end/32399
9858         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
9859         when adding to the base and convert ELT to sizetype instead of type.
9860
9861 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9862
9863         PR middle-end/32304
9864         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
9865         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
9866
9867 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9868
9869         PR middle-end/32935
9870         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
9871          correct type the negate expression.
9872
9873 2007-08-03  Jan Hubicka  <jh@suse.cz>
9874
9875         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
9876         stack boundary.
9877
9878 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
9879
9880         * config/rs6000/rs6000.c (struct processor_cost): Change
9881         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
9882         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
9883         information.
9884         (rios1_costs, rios2_cost): Correct cache line size.
9885         (rs6000_override_options): Set l2-cache-size parameter.
9886
9887 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9888             Diego Novillo  <dnovillo@google.com>
9889
9890         PR 31521
9891         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
9892         if the range includes 0.
9893
9894 2007-08-03  Ben Elliston  <bje@au.ibm.com>
9895
9896         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
9897         mode to unspec expressions to silence a warning from the generator
9898         programs.
9899         
9900 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
9901
9902         * config/ia64/constraints.md ("U"): Make constraint vector only.
9903
9904 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
9905
9906         PR middle-end/25446
9907         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
9908         always_inline attribute on the function decl.
9909
9910 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
9911
9912         PR middle-end/25445
9913         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
9914         if we are compiling with -fPIC.
9915
9916 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
9917             Nigel Stephens  <nigel@mips.com>
9918
9919         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
9920         Define for MIPS32 and MIPS64.
9921
9922 2007-08-02  Nick Clifton  <nickc@redhat.com>
9923
9924         * config/host-hpux.c: Change copyright header to refer to version
9925         3 of the GNU General Public License and to point readers at the
9926         COPYING3 file and the FSF's license web page.
9927         * config/alpha/predicates.md, config/alpha/vms-ld.c,
9928         config/alpha/linux.h, config/alpha/alpha.opt,
9929         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
9930         config/alpha/vms-unwind.h, config/alpha/ev4.md,
9931         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
9932         config/alpha/alpha.h, config/alpha/sync.md,
9933         config/alpha/openbsd.h, config/alpha/alpha.md,
9934         config/alpha/alpha-modes.def, config/alpha/ev5.md,
9935         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
9936         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
9937         config/alpha/constraints.md, config/alpha/osf.h,
9938         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
9939         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
9940         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
9941         config/frv/frv-asm.h, config/frv/frv-protos.h,
9942         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
9943         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
9944         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
9945         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
9946         config/s390/s390.opt, config/s390/s390-modes.def,
9947         config/s390/fixdfdi.h, config/s390/constraints.md,
9948         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
9949         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
9950         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
9951         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
9952         config/m32c/prologue.md, config/m32c/m32c.abi,
9953         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
9954         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
9955         config/m32c/t-m32c, config/m32c/m32c-modes.def,
9956         config/m32c/jump.md, config/m32c/shift.md,
9957         config/m32c/m32c-protos.h, config/libgloss.h,
9958         config/spu/spu-protos.h, config/spu/predicates.md,
9959         config/spu/spu-builtins.h, config/spu/spu.c,
9960         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
9961         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
9962         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
9963         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
9964         config/sparc/hypersparc.md, config/sparc/predicates.md,
9965         config/sparc/linux.h, config/sparc/sp64-elf.h,
9966         config/sparc/supersparc.md, config/sparc/cypress.md,
9967         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
9968         config/sparc/niagara.md, config/sparc/sparc.md,
9969         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
9970         config/sparc/sparc.opt, config/sparc/sync.md,
9971         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
9972         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
9973         config/sparc/sparc.c, config/sparc/little-endian.opt,
9974         config/sparc/sysv4-only.h, config/sparc/sparc.h,
9975         config/sparc/linux64.h, config/sparc/freebsd.h,
9976         config/sparc/sol2.h, config/sparc/rtemself.h,
9977         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
9978         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
9979         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
9980         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
9981         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
9982         config/m32r/linux.h, config/m32r/constraints.md,
9983         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
9984         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
9985         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
9986         config/i386/i386.md, config/i386/netware-crt0.c,
9987         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
9988         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
9989         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
9990         config/i386/sol2.h, config/i386/constraints.md,
9991         config/i386/netware-libgcc.c, config/i386/sysv5.h,
9992         config/i386/predicates.md, config/i386/geode.md,
9993         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
9994         config/i386/freebsd64.h, config/i386/vxworksae.h,
9995         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
9996         config/i386/rtemself.h, config/i386/netbsd-elf.h,
9997         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
9998         config/i386/netware.h, config/i386/i386-modes.def,
9999         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
10000         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
10001         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
10002         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
10003         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
10004         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
10005         config/i386/xm-mingw32.h, config/i386/linux64.h,
10006         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
10007         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
10008         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
10009         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
10010         config/i386/cygwin2.c, config/i386/i386-protos.h,
10011         config/i386/sync.md, config/i386/openbsd.h,
10012         config/i386/host-mingw32.c, config/i386/i386-aout.h,
10013         config/i386/nto.h, config/i386/biarch64.h,
10014         config/i386/i386-coff.h, config/i386/freebsd.h,
10015         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
10016         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
10017         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
10018         config/darwin-protos.h, config/linux.opt, config/sol2.c,
10019         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
10020         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
10021         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
10022         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
10023         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
10024         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
10025         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
10026         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
10027         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
10028         config/sh/superh64.h, config/sh/rtemself.h,
10029         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
10030         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
10031         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
10032         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
10033         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
10034         config/avr/predicates.md, config/avr/constraints.md,
10035         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
10036         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
10037         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
10038         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
10039         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
10040         config/c4x/c4x-modes.def, config/c4x/rtems.h,
10041         config/c4x/predicates.md, config/c4x/c4x.h,
10042         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
10043         config/xtensa/predicates.md, config/xtensa/xtensa.c,
10044         config/xtensa/linux.h, config/xtensa/xtensa.h,
10045         config/xtensa/elf.h, config/xtensa/xtensa.md,
10046         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
10047         config/xtensa/xtensa-protos.h, config/dbx.h,
10048         config/stormy16/predicates.md, config/stormy16/stormy16.md,
10049         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
10050         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
10051         config/host-solaris.c, config/fr30/fr30.h,
10052         config/fr30/predicates.md, config/fr30/fr30-protos.h,
10053         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
10054         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
10055         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
10056         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
10057         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
10058         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
10059         config/host-linux.c, config/interix3.h, config/cris/cris.c,
10060         config/cris/predicates.md, config/cris/linux.h,
10061         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
10062         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
10063         config/cris/aout.opt, config/cris/cris-protos.h,
10064         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
10065         config/iq2000/iq2000.h, config/iq2000/predicates.md,
10066         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
10067         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
10068         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
10069         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
10070         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
10071         config/chorus.h, config/mn10300/mn10300.c,
10072         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
10073         config/mn10300/mn10300.h, config/mn10300/linux.h,
10074         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
10075         config/mn10300/mn10300.md, config/ia64/predicates.md,
10076         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
10077         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
10078         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
10079         config/ia64/freebsd.h, config/ia64/ia64.md,
10080         config/ia64/ia64-modes.def, config/ia64/constraints.md,
10081         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
10082         config/gofast.h, config/rtems.h, config/sol2-10.h,
10083         config/m68k/predicates.md, config/m68k/m68k.md,
10084         config/m68k/linux.h, config/m68k/m68k-modes.def,
10085         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
10086         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
10087         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
10088         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
10089         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
10090         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
10091         config/m68k/constraints.md, config/m68k/rtemself.h,
10092         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
10093         config/m68k/uclinux.h, config/rs6000/power4.md,
10094         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
10095         config/rs6000/linux.h, config/rs6000/eabi.h,
10096         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
10097         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
10098         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
10099         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
10100         config/rs6000/windiss.h, config/rs6000/603.md,
10101         config/rs6000/aix41.h, config/rs6000/cell.md,
10102         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
10103         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
10104         config/rs6000/darwin.md, config/rs6000/darwin64.h,
10105         config/rs6000/default64.h, config/rs6000/7xx.md,
10106         config/rs6000/darwin.opt, config/rs6000/spe.md,
10107         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
10108         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
10109         config/rs6000/7450.md, config/rs6000/linux64.h,
10110         config/rs6000/constraints.md, config/rs6000/440.md,
10111         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
10112         config/rs6000/rs6000.c, config/rs6000/aix52.h,
10113         config/rs6000/rs6000.h, config/rs6000/power6.md,
10114         config/rs6000/predicates.md, config/rs6000/altivec.md,
10115         config/rs6000/aix64.opt, config/rs6000/rios1.md,
10116         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
10117         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
10118         config/rs6000/darwin7.h, config/rs6000/dfp.md,
10119         config/rs6000/linux64.opt, config/rs6000/sync.md,
10120         config/rs6000/vxworksae.h, config/rs6000/power5.md,
10121         config/rs6000/lynx.h, config/rs6000/biarch64.h,
10122         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
10123         config/rs6000/eabispe.h, config/rs6000/e500.h,
10124         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
10125         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
10126         config/rs6000/aix.h, config/rs6000/vxworks.h,
10127         config/rs6000/40x.md, config/rs6000/aix51.h,
10128         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
10129         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
10130         config/arc/arc.h, config/mcore/mcore-elf.h,
10131         config/mcore/mcore-protos.h, config/mcore/predicates.md,
10132         config/mcore/mcore.md, config/mcore/mcore.c,
10133         config/mcore/mcore.opt, config/mcore/mcore.h,
10134         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
10135         config/score/predicates.md, config/score/score-version.h,
10136         config/score/score-protos.h, config/score/misc.md,
10137         config/score/elf.h, config/score/score.c, config/score/mac.md,
10138         config/score/score7.md, config/score/score.h,
10139         config/score/score-conv.h, config/score/score-mdaux.c,
10140         config/score/score.md, config/score/score.opt,
10141         config/score/score-modes.def, config/score/score-mdaux.h,
10142         config/score/mul-div.S, config/arm/uclinux-elf.h,
10143         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
10144         config/arm/symbian.h, config/arm/linux-elf.h,
10145         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
10146         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
10147         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
10148         config/arm/strongarm-pe.h, config/arm/arm.h,
10149         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
10150         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
10151         config/arm/arm-modes.def, config/arm/linux-eabi.h,
10152         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
10153         config/arm/arm-cores.def, config/arm/arm-protos.h,
10154         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
10155         config/arm/wince-pe.h, config/arm/neon.md,
10156         config/arm/constraints.md, config/arm/neon.ml,
10157         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
10158         config/arm/arm.opt, config/arm/arm926ejs.md,
10159         config/arm/predicates.md, config/arm/iwmmxt.md,
10160         config/arm/arm_neon.h, config/arm/unknown-elf.h,
10161         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
10162         config/arm/neon-testgen.ml, config/arm/arm.md,
10163         config/arm/xscale-coff.h, config/arm/pe.c,
10164         config/arm/arm-generic.md, config/arm/pe.h,
10165         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
10166         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
10167         config/arm/strongarm-elf.h, config/arm/cirrus.md,
10168         config/arm/netbsd-elf.h, config/arm/vxworks.h,
10169         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
10170         config/pa/predicates.md, config/pa/pa64-hpux.h,
10171         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
10172         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
10173         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
10174         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
10175         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
10176         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
10177         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
10178         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
10179         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
10180         config/pa/pa64-regs.h, config/pa/pa-modes.def,
10181         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
10182         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
10183         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
10184         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
10185         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
10186         config/mips/linux64.h, config/mips/elforion.h,
10187         config/mips/constraints.md, config/mips/generic.md,
10188         config/mips/predicates.md, config/mips/4300.md,
10189         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
10190         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
10191         config/mips/5k.md, config/mips/vr4120-div.S,
10192         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
10193         config/mips/mips-protos.h, config/mips/6000.md,
10194         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
10195         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
10196         config/mips/mips-modes.def, config/mips/vr.h,
10197         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
10198         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
10199         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
10200         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
10201         config/vax/openbsd1.h, config/vax/netbsd.h,
10202         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
10203         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
10204         config/h8300/rtems.h, config/h8300/predicates.md,
10205         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
10206         config/h8300/h8300.md, config/h8300/h8300.opt,
10207         config/h8300/coff.h, config/h8300/h8300-protos.h,
10208         config/v850/v850.md, config/v850/predicates.md,
10209         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
10210         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
10211         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
10212         config/mmix/mmix.h, config/mmix/predicates.md,
10213         config/mmix/mmix-protos.h, config/mmix/mmix.md,
10214         config/mmix/mmix.c, config/mmix/mmix.opt,
10215         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
10216         config/bfin/rtems.h, config/bfin/bfin-modes.def,
10217         config/bfin/predicates.md, config/bfin/bfin-protos.h,
10218         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
10219         Likewise.
10220
10221 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
10222
10223         * emit-rtl.c (reset_used_decls): Rename to...
10224         (set_used_decls): ...this.  Set the used flag rather than clearing it.
10225         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
10226         DECL_RTLs rather than resetting them.
10227
10228 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
10229
10230         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
10231
10232 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
10233
10234         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
10235         argument to find_reloads_address.
10236
10237 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
10238
10239         PR tree-optimization/32919
10240         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
10241         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
10242         (coalesce_ssa_name): Call it.
10243
10244 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
10245             David Ung  <davidu@mips.com>
10246
10247         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
10248         (__mips16_unorddf2, __mips16_floatunsidf): New.
10249         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
10250         above functions.
10251         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
10252
10253 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
10254
10255         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
10256         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
10257         * tree.h (OMP_SECTIONS_CONTROL): New macro.
10258         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
10259         * omp-low.c (get_ws_args_for, determine_parallel_type,
10260         expand_omp_for_generic, expand_omp_for_static_nochunk,
10261         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
10262         Work with more precise CFG.
10263         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
10264         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
10265         OMP_CONTINUE.
10266         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
10267         * gimple-low.c (lower_stmt): Ditto.
10268         * tree-inline.c (estimate_num_insns_1): Ditto.
10269         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
10270         (OMP_SECTIONS_SWITCH): New.
10271         * tree-cfgcleanup.c (cleanup_omp_return): New.
10272         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
10273         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
10274         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
10275         (tree_redirect_edge_and_branch): Handle omp constructs.
10276
10277         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
10278         with three arguments.
10279
10280 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
10281
10282         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
10283         in loop closed ssa.
10284
10285 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
10286
10287         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
10288         the loop structures may need fixing.
10289         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
10290         New functions.
10291         (cleanup_tree_cfg_loop): Removed.
10292         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
10293         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
10294         instead of running cleanup_tree_cfg_loop.
10295         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
10296         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
10297         (tree_predictive_commoning): Declaration changed.
10298         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
10299
10300 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
10301
10302         * doc/invoke.texi (l1-cache-size): Update documentation.
10303         (l2-cache-size): Document.
10304         * params.h (L2_CACHE_SIZE): New macro.
10305         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
10306         that L1_CACHE_SIZE is in kB now.
10307         (L2_CACHE_SIZE_BYTES): New macro.
10308         (tree_ssa_prefetch_arrays): Show size in kB.
10309         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
10310         and l2_cache_size fields.
10311         * config/i386/driver-i386.c (describe_cache): Detect cache size
10312         in kB.
10313         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
10314         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
10315         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
10316         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
10317         (override_options): Set l1-cache-size and l2-cache-size to default
10318         values if not specified otherwise.
10319         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
10320         (PARAM_L2_CACHE_SIZE): New.
10321
10322 2007-08-01  Nigel Stephens  <nigel@mips.com>
10323             David Ung  <davidu@mips.com>
10324             Thiemo Seufer  <ths@mips.com>
10325             Chris Dearman  <chris@mips.com>
10326             Richard Sandiford  <richard@codesourcery.com>
10327
10328         * config.gcc (mips*-sde-elf*): New stanza.
10329         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
10330         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
10331         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
10332         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
10333         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
10334         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
10335         to tmake_file.
10336         * config/mips/sde.h: New file.
10337         * config/mips/t-libgcc-mips16: Likewise.
10338         * config/mips/t-sde: Likewise.
10339         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
10340         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
10341         _MIPS_FPSET and _MIPS_SZINT.
10342         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
10343         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
10344         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
10345         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
10346         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10347         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10348         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
10349         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
10350         _MIPS_SZPTR and _MIPS_FPSET.
10351         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
10352         architecture is specified.
10353         (MIPS_32BIT_OPTION_SPEC): New macro.
10354
10355 2007-07-31  Dan Hipschman  <dsh@google.com>
10356
10357         * gcc.c (end_going_arg): New function.
10358         (do_spec_2): Use it.
10359         (do_spec_1): Use it.
10360
10361 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10362
10363         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
10364         only if ENABLE_CHECKING is defined.
10365
10366 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
10367
10368         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
10369         df_ru_add_problem, df_ru_get_bb_info): Removed.
10370         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
10371         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
10372         df_ru_free_bb_info, df_ru_alloc,
10373         df_ru_bb_local_compute_process_def,
10374         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
10375         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
10376         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
10377         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
10378         df_ru_add_problem): Removed.
10379
10380 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10381
10382         PR target/32847
10383         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
10384         (casesi32p, casesi64p): Likewise.
10385         (casesi): Adjust for above.
10386
10387 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
10388
10389         * mode-switching.c (create_pre_exit): Don't search past calls.
10390
10391 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
10392
10393         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
10394
10395 2007-07-31  Revital Eres  <eres@il.ibm.com>
10396
10397         * ddg.c (add_deps_for_def): Rename to...
10398         (add_cross_iteration_register_deps): This.  Change implementation
10399         to use only reaching def and def-use chains to construct the
10400         inter loop dependencies.
10401         (add_deps_for_use): Remove function.
10402         (build_inter_loop_deps): Call add_cross_iteration_register_deps
10403         function to build the inter loop dependencies.
10404         * modulo-sched.c (sms_schedule): Build only
10405         reaching def and def-use chains for the propose of the ddg
10406         construction.
10407
10408 2007-07-31  Julian Brown  <julian@codesourcery.com>
10409
10410         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
10411         New define_insns. Use correct RTL.
10412         (vec_set<mode>): Write as expander.
10413
10414 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
10415
10416         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
10417         to an unallocated space.
10418
10419 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
10420
10421         * tree-data-ref.c
10422         (split_constant_offset): Enable split_constant_offset to extract
10423         constants from other statements.
10424         * tree-vect-transform.c
10425         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
10426         to a temp var. Force base_offset to be simple.
10427
10428 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
10429
10430         * df-scan.c (df_scan_verify): Remove artificial limit on
10431         the number of blocks for verification.
10432         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
10433         df_simulate_defs): Avoid unnecessary insn checking for defs.
10434
10435 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
10436
10437         * config/m68k/lb1sf68.asm (FUNC): New macro.
10438         (__mulsi3): Use it.
10439         (__udivsi3): Likewise.
10440         (__divsi3): Likewise.
10441         (__umodsi3): Likewise.
10442         (__modsi3): Likewise.
10443         (__subdf3): Likewise.
10444         (__adddf3): Likewise.
10445         (__muldf3): Likewise.
10446         (__divdf3): Likewise.
10447         (__negdf2): Likewise.
10448         (__cmpdf2): Likewise.
10449         (__subsf3): Likewise.
10450         (__addsf3): Likewise.
10451         (__mulsf3): Likewise.
10452         (__divsf3): Likewise.
10453         (__negsf2): Likewise.
10454         (__cmpsf2): Likewise.
10455         (__eqdf2): Likewise.
10456         (__nedf2): Likewise.
10457         (__gtdf2): Likewise.
10458         (__gedf2): Likewise.
10459         (__ltdf2): Likewise.
10460         (__ledf2): Likewise.
10461         (__eqsf2): Likewise.
10462         (__nesf2): Likewise.
10463         (__gtsf2): Likewise.
10464         (__gesf2): Likewise.
10465         (__ltsf2): Likewise.
10466         (__lesf2): Likewise.
10467
10468 2007-07-30  Ollie Wild  <aaw@google.com>
10469
10470         * c-ppoutput.c (print_lines_directives_only): New function.
10471         (scan_translation_unit_directives_only): New function.
10472         (preprocess_file): Add call to scan_translation_unit_directives_only.
10473         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
10474         (sanitize_cpp_opts): Add default flag_dump_macros setting for
10475         -fdirectives-only.  Add errors for -fdirectives-only conflict with
10476         -Wunused-macros and -traditional.
10477         (finish_options): Add builtin macro initialization for
10478         -fdirectives-only + -fpreprocessed.
10479         * c.opt (fdirectives-only): New.
10480         * doc/cppopts.texi (fdirectives-only): New.
10481
10482 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10483
10484         * alias.c (record_set, memory_modified_1): Constify.
10485         * bt-load.c (note_btr_set): Likewise.
10486         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
10487         * combine.c (set_nonzero_bits_and_sign_copies,
10488         expand_field_assignment, record_dead_and_set_regs_1,
10489         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
10490         likely_spilled_retval_1): Likewise.
10491         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
10492         frv_io_handle_set): Likewise.
10493         * config/mips/mips.c (mips_sim_record_set,
10494         vr4130_true_reg_dependence_p_1): Likewise.
10495         * config/mt/mt.c (insn_dependent_p_1): Likewise.
10496         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
10497         * config/sh/sh.c (flow_dependent_p_1): Likewise.
10498         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
10499         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
10500         * ddg.c (mark_mem_store): Likewise.
10501         * df-problems.c (df_urec_mark_reg_change): Likewise.
10502         * function.c (update_epilogue_consts): Likewise.
10503         * gcse.c (record_set_info, record_last_set_info,
10504         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
10505         reg_clear_last_set): Likewise.
10506         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
10507         Likewise.
10508         * jump.c (reversed_comparison_code_parts): Likewise.
10509         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
10510         reg_is_set): Likewise.
10511         * loop-iv.c (mark_altered): Likewise.
10512         * mode-switching.c (reg_becomes_live): Likewise.
10513         * optabs.c (no_conflict_move_test): Likewise.
10514         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
10515         Likewise.
10516         * postreload.c (reload_combine_note_store, move2add_note_store):
10517         Likewise.
10518         * regmove.c (flags_set_1): Likewise.
10519         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
10520         Likewise.
10521         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
10522         Likewise. 
10523         * resource.c (update_live_status): Likewise.
10524         * rtl.h (set_of, note_stores): Likewise.
10525         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
10526         note_stores, parms_set): Likewise.
10527         * sched-rgn.c (sets_likely_spilled_1): Likewise.
10528         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
10529         Likewise. 
10530         * var-tracking.c (count_stores, add_stores): Likewise.
10531
10532 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10533
10534         * alias.c (mems_in_disjoint_alias_sets_p,
10535         fixed_scalar_and_varying_struct_p, aliases_everything_p,
10536         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
10537         write_dependence_p, mems_in_disjoint_alias_sets_p,
10538         read_dependence, true_dependence, canon_true_dependence,
10539         anti_dependence, output_dependence): Constify.
10540         * combine.c (extended_count): Likewise.
10541         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
10542         * cselib.c (get_value_hash, references_value_p,
10543         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
10544         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
10545         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
10546         * function.c (contains, prologue_epilogue_contains,
10547         sibcall_epilogue_contains): Likewise. 
10548         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
10549         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
10550         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
10551         reg_or_subregno): Likewise.
10552         * recog.c (asm_noperands): Likewise.
10553         * reload1.c (function_invariant_p): Likewise.
10554         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
10555         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
10556         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
10557         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
10558         true_regnum, reg_or_subregno, condjump_in_parallel_p,
10559         extended_count, prologue_epilogue_contains,
10560         sibcall_epilogue_contains, function_invariant_p, true_dependence,
10561         canon_true_dependence, read_dependence, anti_dependence,
10562         output_dependence): Likewise.
10563         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
10564
10565 2007-07-30  Julian Brown  <julian@codesourcery.com>
10566
10567         * config/arm/neon.md (V_ext): New mode attribute.
10568         (neon_vget_lane<mode>): Replace with define_expand.
10569         (neon_vget_lane<mode>_sext_internal)
10570         (neon_vget_lane<mode>_zext_internal): New define_insns for double
10571         and quad precision vectors.
10572         (neon_vget_lanedi): Add bounds check. Remove dead comment.
10573         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
10574         have typeless 32-bit result.
10575
10576 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10577
10578         PR tree-opt/32527
10579         * tree-affine.h (aff_tree): The type of rest is sizetype for types
10580         of pointers.
10581         * tree-affine.c (aff_combination_scale): If type is a pointer type,
10582         use sizetype for rest.
10583         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
10584         (aff_combination_convert): Don't convert rest for pointer types.
10585
10586 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
10587
10588         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
10589
10590         * tree-ssa-alias.c: Add alloc-pool.h.
10591         (init_alias_info): Free alias_bitmap_obstack.
10592         (delete_alias_info): Call delete_mem_ref_stats.
10593         (get_mem_sym_stats_for): Use alloc_pool.
10594         (init_mem_ref_stats): Do not delete mem_ref_stats here.
10595         (delete_mem_sym_stats): Removed.
10596         
10597 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
10598
10599         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
10600         functions cannot be represented as classical distance vectors.
10601
10602 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10603
10604         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
10605         * builtins.c (validate_arg, builtin_mathfn_code,
10606         validate_arglist): Likewise.
10607         * calls.c (call_expr_flags): Likewise.
10608         * combine.c (reg_nonzero_bits_for_combine,
10609         reg_num_sign_bit_copies_for_combine, get_last_value,
10610         reg_truncated_to_mode): Likewise.
10611         * emit-rtl.c (subreg_lowpart_p): Likewise.
10612         * expr.c (highest_pow2_factor_for_target,
10613         categorize_ctor_elements_1, categorize_ctor_elements,
10614         count_type_elements, contains_packed_reference,
10615         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
10616         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
10617         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
10618         native_encode_int, native_encode_real, native_encode_complex,
10619         native_encode_vector, native_encode_expr, native_interpret_int,
10620         native_interpret_real, native_interpret_complex,
10621         native_interpret_vector, native_interpret_expr): Likewise.
10622         * function.c (use_register_for_decl): Likewise.
10623         * gimplify.c (get_name): Likewise.
10624         * langhooks-def.h (lhd_return_null_const_tree): New.
10625         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
10626         * langhooks.c (lhd_return_null_const_tree): New.
10627         * langhooks.h (lang_get_callee_fndecl): Constify.
10628         * output.h (constructor_static_from_elts_p): Likewise.
10629         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
10630         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
10631         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
10632         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
10633         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
10634         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
10635         * rtlhooks-def.h (reg_nonzero_bits_general,
10636         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
10637         Likewise. 
10638         * rtlhooks.c (reg_num_sign_bit_copies_general,
10639         reg_nonzero_bits_general, reg_truncated_to_mode_general):
10640         Likewise. 
10641         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
10642         * stor-layout.c (mode_for_size_tree): Likewise.
10643         * tree-ssa-loop-im.c (memref_eq): Likewise.
10644         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
10645         * tree.c (contains_placeholder_p, type_list_equal,
10646         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
10647         Likewise. 
10648         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
10649         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
10650         contains_placeholder_p, contains_packed_reference,
10651         get_callee_fndecl, operand_equal_for_phi_arg_p,
10652         warn_if_unused_value, is_body_block, native_encode_expr,
10653         native_interpret_expr, fold_convertible_p, operand_equal_p,
10654         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
10655         validate_arglist, simple_cst_equal, type_list_equal,
10656         use_register_for_decl, call_expr_flags, get_name,
10657         highest_pow2_factor): Likewise.
10658         (const_call_expr_arg_iterator_d,
10659         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
10660         first_const_call_expr_arg, more_const_call_expr_args_p,
10661         FOR_EACH_CONST_CALL_EXPR_ARG): New.
10662         * varasm.c (constructor_static_from_elts_p): Constify.
10663
10664 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
10665
10666         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
10667         config/arm/neon-schedgen.ml, config/arm/neon.ml,
10668         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
10669         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
10670         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
10671         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
10672         spelling conventions.
10673         * doc/invoke.texi: Follow spelling conventions.
10674
10675 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
10676             Revital Eres  <eres@il.ibm.com>
10677
10678         * modulo-sched.c (sms_schedule): Avoid loops which includes
10679         auto-increment instructions.
10680
10681 2007-07-28  Richard Guenther  <rguenther@suse.de>
10682
10683         PR middle-end/32920
10684         * fold-const.c (fold_cond_expr_with_comparison): Convert
10685         operand zero of MIN/MAX_EXPR to correct type.
10686
10687 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10688
10689         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
10690         flags_from_decl_or_type): Constify.
10691         * gcc.c (do_spec_1): Likewise.
10692         * print-tree.c (dump_addr, print_node_brief): Likewise.
10693         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
10694         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
10695         tree_purge_all_dead_eh_edges): Likewise.
10696         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
10697         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
10698         Likewise. 
10699         * tree.c (expr_location, expr_has_location, expr_locus,
10700         expr_filename, expr_lineno, get_inner_array_type,
10701         fields_compatible_p): Likewise.
10702         * tree.h (get_inner_array_type, fields_compatible_p,
10703         expr_location, expr_has_location, expr_locus, expr_filename,
10704         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
10705         setjmp_call_p, alloca_call_p): Likewise.
10706
10707 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
10708
10709         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
10710         TV_FLOW_INSENSITIVE.
10711
10712         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
10713         TV_CALL_CLOBBER.
10714         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
10715         (compute_flow_insensitive_aliasing): Ditto for
10716         TV_FLOW_INSENSITIVE.    
10717
10718 2007-07-27  Jan Hubicka  <jh@suse.cz>
10719
10720         * config/i386/i386.c (register_move_cost): Remove accidentally
10721         comitted #if 0 block.
10722
10723         * attribs.c: Include hashtab.h
10724         (attribute_hash): New.
10725         (substring): New structure.
10726         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
10727         New function.
10728         (init_attributes): Initialize attribute hash.
10729         (decl_attributes): Use attribute hash.
10730         * Makefile.in (attribs.c): Depend on hashtab.h.
10731
10732 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
10733
10734         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
10735
10736 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
10737
10738         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
10739         __mips_dspr2 and __mips_dsp_rev macros.
10740         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
10741
10742 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
10743         
10744        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
10745
10746 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
10747
10748         PR middle-end/32749
10749         
10750         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
10751         and the updating of the live and do_not_gen sets.
10752         (df_note_bb_compute): Added updating of live and do_not_gen sets
10753         for regular defs so that the case of clobber inside conditional
10754         call is processed correctly.
10755         
10756 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
10757
10758         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
10759         operands with compatible type.
10760
10761 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
10762
10763         * expr.h (store_bit_field): Don't return a value.
10764         * expmed.c (check_predicate_volatile_ok): New function.
10765         (store_bit_field_1): New function, extracted from store_bit_field.
10766         Take a fallback_p argument and return true if the operation succeeded.
10767         Only use store_fixed_bit_field if fallback_p.  Don't recompute
10768         mode_for_extraction; use op_mode instead.  Try forcing memories
10769         into registers if the insv expander fails.
10770         (store_bit_field): Use store_bit_field_1 with fallback_p true.
10771         Don't return a value.
10772         (convert_extracted_bit_field): New function, extracted from
10773         store_bit_field.
10774         (extract_bit_field_1): Likewise.  Take a fallback_p argument
10775         and return NULL if the operation succeeded.  Only use
10776         extract_fixed_bit_field if fallback_p.  Only calculate one
10777         extraction mode.  Combine code for extv and extzv.  Try forcing
10778         memories into registers if the ext(z)v expander fails.
10779         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
10780
10781 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
10782
10783         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
10784         into bitfields.
10785         (df_ref): Likewise.  Put regno with other integer fields.
10786
10787 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
10788
10789         * df.h (df_mw_hardreg): Remove "loc" field.
10790         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
10791         local variable.
10792         * df-problems.c (df_whole_mw_reg_unused_p): New function,
10793         split out from df_set_unused_notes_for_mw.  Return false for
10794         partial references.  Assert that mw_reg is a REG when returning true.
10795         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
10796         (df_whole_mw_reg_dead_p): New function, split out from
10797         df_set_dead_notes_for_mw.  Return false for partial references.
10798         Assert that mw_reg is a REG when returning true.
10799         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
10800         Remove redundant bitmap check.
10801
10802 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
10803
10804         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
10805         ($(T)crtend.o): Likwise.
10806         ($(T)crtbeginS.o): Likwise.
10807         ($(T)crtendS.o): Likwise.
10808         ($(T)crtfastmath.o): Likwise.
10809
10810 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
10811
10812         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
10813         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
10814         * basic-block.h (struct control_flow_graph): Added x_dom_computed
10815         and x_n_bbs_in_dom_tree fields.
10816
10817 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
10818
10819         PR tree-optimization/32087
10820         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
10821         Do not call scale_bbs_frequencies_int with prob of zero.
10822
10823 2007-07-26  Julian Brown  <julian@codesourcery.com>
10824
10825         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
10826         (neon_element_bits): Add prototypes.
10827         * config/arm/arm.c (bounds_check, neon_lane_bounds)
10828         (neon_const_bounds, neon_element_bits): New functions.
10829         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
10830         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
10831         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
10832         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
10833         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
10834         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
10835         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
10836         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
10837         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
10838         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
10839         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
10840         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
10841         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
10842
10843 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
10844
10845         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
10846         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
10847
10848 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
10849             Julian Brown  <julian@codesourcery.com>
10850
10851         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
10852         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
10853         * config/arm/cortex-a8.md: New.
10854         * config/arm/cortex-a8-neon.md: New.
10855         * config/arm/neon-schedgen.ml: New.
10856         * config/arm/neon.md (vqh_mnem): New.
10857         (neon_type): New.
10858         (Is_float_mode): New.
10859         (Scalar_mul_8_16): New.
10860         (Is_d_reg): New.
10861         (V_mode_nunits): New.
10862         (All instruction patterns): Annotate with neon_type attribute
10863         values.
10864         * config/arm/arm.md: Include cortex-a8.md.
10865         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
10866         values.
10867         Annotate instruction patterns accordingly.
10868         (generic_sched): Do not use generic scheduling for Cortex-A8.
10869         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
10870
10871 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
10872
10873         * fold-const.c (fold_read_from_constant_string): Use
10874         build_int_cst_type.
10875         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
10876
10877 2007-07-26  Nick Clifton  <nickc@redhat.com>
10878
10879         * tree-ssa-operands.h: Change copyright header to refer to version
10880         3 of the GNU General Public License and to point readers at the
10881         COPYING3 file and the FSF's license web page.
10882         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
10883         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
10884         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
10885         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
10886         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
10887         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
10888         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
10889         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
10890         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
10891         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
10892         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
10893         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
10894         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
10895         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
10896         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
10897         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
10898         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
10899         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
10900         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
10901         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
10902         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
10903         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
10904         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
10905         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
10906         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
10907         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
10908         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
10909         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
10910         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
10911         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
10912         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
10913         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
10914         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
10915         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
10916         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
10917         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
10918         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
10919         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
10920         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
10921         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
10922         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
10923         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
10924         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
10925         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
10926         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
10927         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
10928         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
10929         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
10930         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
10931         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
10932         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
10933         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
10934         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
10935         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
10936         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
10937         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
10938         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
10939         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
10940         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
10941         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
10942         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
10943         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
10944         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
10945         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
10946         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
10947         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
10948         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
10949         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
10950         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
10951         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
10952         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
10953         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
10954         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
10955         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
10956         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
10957         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
10958         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
10959         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
10960         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
10961         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
10962         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
10963         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
10964         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
10965         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
10966         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
10967         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
10968         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
10969         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
10970         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
10971         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
10972         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
10973         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
10974         vecprim.h, basic-block.h, tree-ssa-structalias.c,
10975         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
10976         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
10977         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
10978         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
10979         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
10980         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
10981         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
10982         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
10983         convert.c, convert.h, langhooks-def.h, reload1.c,
10984         tree-ssa-operands.c: Likewise.
10985
10986 2007-07-26  Jan Hubicka  <jh@suse.cz>
10987
10988         * tree-ssa-live.c: Include debug.h and flags.h.
10989         (mark_scope_block_unused): New function.
10990         (remove_unused_scope_block_p): New function.
10991         (remove_unused_locals): Remove unused blocks too.
10992
10993 2007-07-25  Ian Lance Taylor  <iant@google.com>
10994
10995         * combine.c (combine_max_regno): Remove.  Remove all uses.
10996         (struct reg_stat_struct): Rename from struct reg_stat.
10997         (reg_stat_type): Define, and declare VECs.
10998         (reg_stat): Change from pointer to VEC.  Change all uses.
10999         (combine_split_insns): New static function.
11000         (try_combine, find_split_point): Call it instead of split_insns.
11001
11002 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11003
11004         * cfghooks.c (split_block): Fix the information about loop latch.
11005
11006 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11007
11008         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
11009
11010 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11011
11012         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
11013         Scan the new edge for loop exit info.
11014
11015 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
11016
11017         * config/darwin.c: Include debug.h.
11018
11019 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
11020
11021         PR target/32218
11022         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
11023
11024 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
11025
11026         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
11027         (HARD_REGNO_MODE_OK): Ditto.
11028         (MODES_TIEABLE_P): Ditto.
11029         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
11030         (CLASS_MAX_NREGS): Ditto.
11031         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
11032         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
11033         (divdf3_internal_thr): Removed.
11034         * config/ia64/div.md: New file.
11035         * config/ia64/constraints.md: Add H constraint.
11036
11037 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11038
11039         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
11040         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
11041         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
11042         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
11043         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
11044         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
11045         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
11046         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
11047         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
11048         dump_sbitmap_file, debug_sbitmap, popcount_table,
11049         sbitmap_popcount): Constify.
11050         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
11051         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
11052         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
11053         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
11054         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
11055         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
11056         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
11057         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
11058         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
11059         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
11060         sbitmap_popcount, sbitmap_verify_popcount): Constify.
11061
11062 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11063
11064         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
11065         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
11066         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
11067         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
11068         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
11069         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
11070         bitmap_intersect_p, bitmap_intersect_compl_p,
11071         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
11072         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
11073         Constify.
11074         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
11075         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
11076         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
11077         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
11078         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
11079         debug_bitmap, debug_bitmap_file, bitmap_print,
11080         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
11081         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
11082
11083 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
11084
11085         * config/darwin.c (darwin_override_options): Additional fix for
11086         debug info formats that don't support var tracking.
11087
11088 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11089
11090         * cselib.c (entry_and_rtx_equal_p): Constify.
11091         * gengtype.c (output_mangled_typename, write_types, write_local):
11092         Likewise.
11093         * gengtype.h (const_type_p): New.
11094         * see.c (eq_descriptor_extension, hash_descriptor_extension):
11095         Constify.
11096         * tlink.c (scan_linker_output): De-constify.
11097         * tree-ssa-loop-im.c (memref_eq): Constify.
11098         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
11099         (shared_bitmap_hash, shared_bitmap_eq): Constify.
11100
11101 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11102
11103         * c-common.c (fname_as_string, c_type_hash): Constify.
11104         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
11105         * cgraph.c (edge_hash, edge_eq): Likewise.
11106         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
11107         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
11108         reg_attrs_htab_eq): Likewise.
11109         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
11110         Likewise.
11111         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
11112         const_decl_t, const_state_t, const_automata_list_el_t): New.
11113         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
11114         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
11115         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
11116         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
11117         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
11118         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
11119         compare_max_occ_cycle_nums, out_state_arcs_num,
11120         compare_transition_els_num, units_cmp, state_reservs_cmp):
11121         Constify.
11122         * genmodes.c (cmp_modes): Likewise.
11123         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
11124         * gimplify.c (compare_case_labels): Likewise.
11125         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
11126         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
11127         * matrix-reorg.c (mtt_info_hash): Likewise.
11128         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
11129         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
11130         (htab_hash_bucket, htab_hash_elem): Constify.
11131         * tree-browser.c (TB_parent_eq): Likewise.
11132         * tree-scalar-evolution.c (hash_scev_info): Likewise.
11133         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
11134         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
11135         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
11136         Constify.
11137         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
11138         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
11139         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
11140         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
11141         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
11142         New.
11143         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
11144         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
11145         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
11146         * tree-ssa-threadupdate.c (redirection_data_hash,
11147         redirection_data_eq): Likewise. 
11148         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
11149         * tree-ssa.c (var_ann_eq): Likewise.
11150         * tree-vrp.c (compare_case_labels): Likewise.
11151         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
11152         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
11153         tree_not_check_failed, tree_class_check_failed,
11154         tree_range_check_failed, tree_not_class_check_failed,
11155         omp_clause_check_failed, omp_clause_range_check_failed,
11156         tree_contains_struct_check_failed, tree_operand_check_failed):
11157         Likewise. 
11158         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
11159         tree_not_check_failed, tree_class_check_failed,
11160         tree_range_check_failed, tree_not_class_check_failed,
11161         tree_operand_check_failed, omp_clause_operand_check_failed,
11162         tree_operand_length): Likewise. 
11163         * var-tracking.c (const_variable): New.
11164         (variable_htab_hash, variable_htab_eq): Constify.
11165         * varasm.c (const_desc_hash): Likewise.
11166
11167 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11168
11169         * expr.c (handled_component_p): Constify.
11170         * fold-const.c (fit_double_type): Likewise.
11171         * real.h (real_value_from_int_cst): Likewise.
11172         * tree-flow-inline.h (gimple_in_ssa_p,
11173         gimple_aliases_computed_p, gimple_addressable_vars,
11174         gimple_call_clobbered_vars, gimple_referenced_vars,
11175         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
11176         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
11177         may_aliases, end_readonly_imm_use_p, has_zero_uses,
11178         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
11179         is_label_stmt, is_global_var, phi_ssa_name_p,
11180         factoring_name_p, is_call_clobbered, tree_common_ann,
11181         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
11182         unmodifiable_var_p, array_ref_contains_indirect_ref,
11183         ref_contains_array_ref, lookup_subvars_for_var,
11184         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
11185         gimple_mem_ref_stats): Likewise.
11186         * tree-flow.h (tree_common_ann, var_ann, function_ann,
11187         may_aliases, is_exec_stmt, is_label_stmt,
11188         ref_contains_array_ref, array_ref_contains_indirect_ref,
11189         var_can_have_subvars, overlap_subvar, is_call_clobbered,
11190         unmodifiable_var_p): Likewise.
11191         * tree-gimple.c (is_gimple_min_invariant): Likewise.
11192         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
11193         * tree.c (type_hash_list, attribute_hash_list, tree_size,
11194         cst_and_fits_in_hwi, real_value_from_int_cst,
11195         build_real_from_int_cst, integer_zerop, integer_onep,
11196         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
11197         tree_floor_log2, real_zerop, real_onep, real_twop,
11198         real_minus_onep, really_constant_p, purpose_member, chain_member,
11199         list_length, fields_length, int_size_in_bytes, bit_position,
11200         int_bit_position, byte_position, int_byte_position, expr_align,
11201         array_type_nelts, tree_node_structure,
11202         type_contains_placeholder_1, iterative_hash_pointer,
11203         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
11204         tree_map_base_eq, type_hash_list, type_hash_eq,
11205         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
11206         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
11207         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
11208         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
11209         int_fits_type_p, get_containing_scope, decl_function_context,
11210         decl_type_context, omp_clause_operand_check_failed,
11211         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
11212         * tree.h (omp_clause_operand_check_failed, tree_size,
11213         build_real_from_int_cst, array_type_nelts, purpose_member,
11214         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
11215         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
11216         is_attribute_p, check_qualified_type, expr_align,
11217         int_size_in_bytes, bit_position, int_bit_position, byte_position,
11218         int_byte_position, list_length, fields_length, initializer_zerop,
11219         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
11220         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
11221         tree_node_structure, handled_component_p, get_containing_scope,
11222         decl_function_context, decl_type_context, real_zerop,
11223         type_num_arguments, fit_double_type, really_constant_p,
11224         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
11225         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
11226         real_twop, real_minus_onep, int_cst_value): Likewise.
11227
11228 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11229
11230         * cfglayout.c (insn_scope, insn_line): Constify.
11231         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
11232         const_double_htab_hash, const_double_htab_eq,
11233         mem_attrs_htab_hash): Likewise.
11234         * loop-iv.c (biv_eq): Likewise.
11235         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
11236         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
11237         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
11238         Likewise. 
11239         * rtl-error.c (location_for_asm, diagnostic_for_asm,
11240         error_for_asm, warning_for_asm, _fatal_insn,
11241         _fatal_insn_not_found): Likewise. 
11242         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
11243         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
11244         rtl_check_failed_type2, rtl_check_failed_code1,
11245         rtl_check_failed_code2, rtl_check_failed_code_mode,
11246         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
11247         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
11248         rtl_check_failed_type2, rtl_check_failed_code1,
11249         rtl_check_failed_code2, rtl_check_failed_code_mode,
11250         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
11251         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
11252         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
11253         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
11254         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
11255         rtx_unstable_p, get_integer_term, get_related_value,
11256         offset_within_block_p, reg_mentioned_p, count_occurrences,
11257         reg_referenced_p, reg_used_between_p, no_labels_between_p,
11258         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
11259         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
11260         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
11261         find_constant_src, find_reg_fusage, find_regno_fusage,
11262         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
11263         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
11264         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
11265         computed_jump_p, auto_inc_p, in_expr_list_p,
11266         remove_node_from_expr_list, loc_mentioned_in_p,
11267         label_is_jump_target_p, reversed_comparison_code_parts,
11268         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
11269         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
11270         print_inline_rtx): Likewise.
11271         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
11272         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
11273         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
11274         get_integer_term, get_related_value, offset_within_block_p,
11275         count_occurrences, reg_mentioned_p, no_labels_between_p,
11276         reg_used_between_p, reg_referenced_p, single_set_2,
11277         multiple_sets, set_noop_p, refers_to_regno_p,
11278         reg_overlap_mentioned_p, dead_or_set_p,
11279         covers_regno_no_parallel_p, covers_regno_p,
11280         dead_or_set_regno_p, find_reg_note, find_regno_note,
11281         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
11282         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
11283         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
11284         side_effects_p, may_trap_p_1, may_trap_p,
11285         may_trap_after_code_motion_p, may_trap_or_fault_p,
11286         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
11287         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
11288         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
11289         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
11290         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
11291         Likewise. 
11292         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
11293         warning_for_asm): Likewise.
11294         * tree.h (print_rtl): Likewise.
11295         * varasm.c (get_pool_mode): Likewise.
11296
11297 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11298
11299         * c-lex.c (c_lex_with_flags, lex_string): Constify.
11300         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
11301         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
11302         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
11303         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
11304         * ddg.c (compare_sccs): Likewise.
11305         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
11306         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
11307         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
11308         decimal_do_fix_trunc, decimal_real_to_integer,
11309         decimal_real_to_integer2, decimal_real_maxval): Likewise.
11310         * dse.c (const_group_info_t): New.
11311         (invariant_group_base_eq, invariant_group_base_hash): Constify.
11312         * dwarf2out.c (const_dw_die_ref): New.
11313         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
11314         * tree-browser.c (TB_parent_eq): Likewise.
11315         * unwind-dw2-fde.c (__register_frame_info_bases,
11316         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
11317         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
11318         Likewise.
11319         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
11320         * unwind-dw2.c (uw_frame_state_for): Likewise.
11321         * value-prof.c (histogram_hash, histogram_eq): Likewise.
11322         * value-prof.h (const_histogram_value): New.
11323
11324 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
11325
11326         * config/mips/mips.c (machine_function): Add
11327         initialized_mips16_gp_pseudo_p.
11328         (mips16_gp_pseudo_reg): Do not emit the initialization of
11329         mips16_gp_pseudo_rtx when being called from the gimple cost-
11330         calculation routines; emit it on the first use outside those
11331         routines.
11332
11333 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11334
11335         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
11336         New.
11337         
11338         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
11339         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
11340         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
11341         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
11342         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
11343         Preserve const-ness of parameters through use of __typeof(),
11344         also constify and tidy.
11345         
11346         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
11347         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
11348         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
11349         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
11350         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
11351         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
11352         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
11353         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
11354         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
11355
11356 2007-07-25  Julian Brown  <julian@codesourcery.com>
11357             Mark Shinwell  <shinwell@codesourcery.com>
11358
11359         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
11360         (alpha_mangle_type): This.
11361         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11362         (TARGET_MANGLE_TYPE): Define this instead.
11363         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
11364         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
11365         (arm_init_neon_builtins): Fix comment.
11366         (arm_mangle_map_entry): New.
11367         (arm_mangle_map): New.
11368         (arm_mangle_type): New.
11369         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
11370         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
11371         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
11372         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11373         (TARGET_MANGLE_TYPE): Define this instead.
11374         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
11375         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
11376         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
11377         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11378         (TARGET_MANGLE_TYPE): Define this instead.
11379         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
11380         to...
11381         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
11382         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11383         (TARGET_MANGLE_TYPE): Define this instead.
11384         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
11385         (s390_mangle_type): This.
11386         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11387         (TARGET_MANGLE_TYPE): Define this instead.
11388         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
11389         (sparc_mangle_type): This.
11390         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11391         (TARGET_MANGLE_TYPE): Define this instead.
11392         * cp/mangle.c (write_type): Call mangle_type target hook on all
11393         types before mangling.  Use original type, not main variant, as
11394         argument.
11395         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
11396         (TARGET_MANGLE_TYPE): This.
11397         * target.h (gcc_target): Rename mangle_fundamental_type to
11398         mangle_type.
11399         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
11400         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
11401
11402 2007-07-25  Julian Brown  <julian@codesourcery.com>
11403             Paul Brook  <paul@codesourcery.com>
11404             Joseph Myers  <joseph@codesourcery.com>
11405             Mark Shinwell  <shinwell@codesourcery.com>
11406
11407         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
11408         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
11409         (with_fpu): Allow --with-fpu=neon.
11410         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
11411         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
11412         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
11413         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
11414         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
11415         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
11416         (neon_emit_pair_result_insn, neon_disambiguate_copy)
11417         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
11418         (output_move_neon): Add prototypes.
11419         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
11420         (all_fpus): Add FPUTYPE_NEON.
11421         (fp_model_for_fpu): Add NEON field.
11422         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
11423         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
11424         in registers.
11425         (arm_legitimate_address_p): Don't support fancy addressing for NEON
11426         structure moves.
11427         (thumb2_legitimate_address_p): Likewise.
11428         (neon_valid_immediate): Recognize and prepare constants suitable for
11429         NEON instructions.
11430         (neon_immediate_valid_for_move): New function. Recognize and prepare
11431         immediates for NEON move instructions.
11432         (neon_immediate_valid_for_logic): New function. Recognize and
11433         prepare immediates for NEON logic instructions.
11434         (neon_output_logic_immediate): New function. Create asm string
11435         suitable for outputting immediate logic instructions.
11436         (neon_pairwise_reduce): New function. Implement reduction using
11437         pairwise operations.
11438         (neon_expand_vector_init): New function. Expand a (possibly
11439         non-constant) vector initialization.
11440         (neon_vector_mem_operand): New function. Memory operands supported
11441         for quad-word loads/stores to/from ARM or NEON registers. Don't
11442         allow base+offset addressing for core regs.
11443         (neon_struct_mem_operand): New function. Valid mems for NEON
11444         structure moves.
11445         (coproc_secondary_reload_class): Enable NEON registers to be loaded
11446         from neon_vector_mem_operand addresses without a secondary register.
11447         (add_minipool_forward_ref): Handle >8-byte minipool entries.
11448         (add_minipool_backward_ref): Likewise.
11449         (dump_minipool): Likewise.
11450         (push_minipool_fix): Likewise.
11451         (output_move_quad): New function. Output quad-word moves, loads and
11452         stores using ARM registers.
11453         (output_move_vfp): Add support for vectors in VFP (NEON) D
11454         registers.
11455         (output_move_neon): Output a NEON load/store to/from a quadword
11456         register.
11457         (arm_print_operand): Implement new codes:
11458         - 'c' for unadorned integers (without a # sign).
11459         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
11460         mode.
11461         - 'e', 'f' for the low and high D parts of a NEON Q register.
11462         - 'q' outputs a NEON Q register.
11463         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
11464         - 'T' prints NEON opcode features from a coded bitmask.
11465         - 'F' is similar to T, but signed/unsigned codes both print as
11466         'i'.
11467         - 't' is similar to T, but 'u' is printed instead of 'p'.
11468         - 'O' prints 'r' if NEON instruction should perform rounding (as
11469         specified by bitmask), else prints nothing.
11470         - '#' is a punctuation character to stop operand numbers from
11471         running together with following digits in the assembler
11472         strings for instructions (when using mode attributes).
11473         (arm_assemble_integer): Handle extra NEON vector modes. Permute
11474         constant vectors in big-endian mode, where necessary.
11475         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
11476         Handle EI, OI, CI, XI modes.
11477         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
11478         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
11479         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
11480         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
11481         (neon_builtin_type_bits): Add enumeration, one bit for each vector
11482         type.
11483         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
11484         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
11485         to turn v8qi, etc. into bits defined above.
11486         (neon_itype): New enumeration. Classifications of NEON builtins.
11487         (neon_builtin_datum): Define struct. Contains information about
11488         a single builtin (with multiple modes).
11489         (CF): Define helper macro for...
11490         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
11491         modes.
11492         (neon_builtin_data): New array. Define information about builtins
11493         for use during initialization/expansion.
11494         (arm_init_neon_builtins): New function.
11495         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
11496         true.
11497         (neon_builtin_compare): New function.
11498         (locate_neon_builtin_icode): New function. Find an insn code for a
11499         builtin given a function code for that builtin. Also return type of
11500         builtin (NEON_BINOP, NEON_UNOP etc.).
11501         (builtin_arg): New enumeration. Types of arguments for builtins.
11502         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
11503         Takes a variable argument list of builtin_arg types, terminated by
11504         NEON_ARG_STOP.
11505         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
11506         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
11507         (neon_emit_pair_result_insn): New function. Support returning pairs
11508         of vectors via a pointer.
11509         (neon_disambiguate_copy): New function. Set up operands for a
11510         multi-word copy such that registers do not get clobbered.
11511         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
11512         ARM_BUILTIN_NEON_BASE.
11513         (arm_file_start): Set float-abi attribute for NEON.
11514         (arm_vector_mode_supported_p): Enable NEON vector modes.
11515         (arm_mangle_map_entry): New.
11516         (arm_mangle_map): New.
11517         (arm_mangle_vector_type): New.
11518         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
11519         when appropriate.
11520         (TARGET_NEON): New macro. Target supports NEON.
11521         (fputype): Add FPUTYPE_NEON.
11522         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
11523         for vectorization based on command-line arg.
11524         (NEON_REGNO_OK_FOR_NREGS): Define.
11525         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
11526         (VALID_NEON_STRUCT_MODE): Define.
11527         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
11528         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
11529         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
11530         (consttable_16): Add pattern for outputting 16-byte minipool
11531         entries.
11532         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
11533         vec-common.md).
11534         (vec-common.md, neon.md): Include md files.
11535         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
11536         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
11537         (memory_constraint "Ut", "Un", "Us"): Define.
11538         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
11539         (MMX_char): New mode attribute.
11540         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
11541         (*add<mode>3_iwmmxt): New insn pattern.
11542         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
11543         (*sub<mode>3_iwmmxt): New insn pattern.
11544         (mulv4hi3): Rename to...
11545         (*mulv4hi3_iwmmxt): This.
11546         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
11547         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
11548         (uminv4hi3, uminv2si3): Remove. Replace with...
11549         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
11550         (*umin<mode>3_iwmmxt): These.
11551         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
11552         (ashr<mode>3_iwmmxt): This new pattern.
11553         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
11554         (lshr<mode>3_iwmmxt): This new pattern.
11555         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
11556         (ashl<mode>3_iwmmxt): This new pattern.
11557         * config/arm/neon-docgen.ml: New file. Generate documentation for
11558         intrinsics.
11559         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
11560         * config/arm/arm_neon.h: New (autogenerated).
11561         * config/arm/neon-testgen.ml: New file. Generate NEON tests
11562         automatically.
11563         * config/arm/neon.md: New file. Define NEON instructions.
11564         * config/arm/neon.ml: New file. Abstract description of NEON
11565         instructions, used to generate arm_neon.h header, documentation and
11566         tests.
11567         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
11568         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
11569         support.
11570         * doc/extend.texi (ARM Built-in Functions): Rename and remove
11571         extraneous comma.
11572         (ARM NEON Intrinsics): New subsection.
11573         * doc/arm-neon-intrinsics.texi: New (autogenerated).
11574
11575 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
11576
11577         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
11578         prototype.
11579
11580 2007-07-24  Jan Hubicka  <jh@suse.cz>
11581
11582         * regclass.c (move_table): New type.
11583         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
11584         (init_move_cost): Break out from ...
11585         (init_reg_sets_1): ... here; simplify computation of
11586         have_regs-of_mode and contains_reg_of_mode.
11587         (record_reg_classes): Unswitch internal loops.
11588         (copy_cost): Trigger lazy initialization of move cost
11589         (record_address_regs): Likewise.
11590
11591 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
11592
11593         * config/darwin.c (darwin_override_options): Don't force on
11594         flag_var_tracking_uninit when no debug info is requested.
11595
11596 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11597
11598         * cfgloop.c (init_loops_structure): New function.
11599         (flow_loops_find): Create root of the loop tree unconditionally.
11600
11601 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
11602
11603         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
11604
11605 2007-07-24  Jan Hubicka  <jh@suse.cz>
11606
11607         * caller-save.c: Include ggc.h, gt-caller-save.h
11608         (reg_save_code, reg_restore_code): Rename to ...
11609         (cached_reg_save_code, cached_reg_restore_code): ... those.
11610         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
11611         (reg_save_code, reg_restore_code): New functions.
11612         (init_caller_save): Do not intialize
11613         reg_save_code/reg_restore_code tables.
11614         * Makefile.in: (gt-caller-save.h): New.
11615
11616 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
11617
11618         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
11619         with the mode of the original operand instead of
11620         integer_one_node.
11621
11622 2007-07-23  Jan Hubicka  <jH@suse.cz>
11623
11624         * i386.c (ix86_secondary_memory_needed): Break out to...
11625         (inline_secondary_memory_needed): ... here.
11626         (ix86_memory_move_cost): Break out to ...
11627         (inline_memory_move_cost): ... here; add support for IN value of 2 for
11628         maximum of input and output; fix handling of Q_REGS on 64bit.
11629         (ix86_secondary_memory_needed): Microoptimize.
11630
11631 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
11632
11633         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
11634         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
11635         stmts_from_loop, known_dependences_p, build_rdg): New.
11636         * tree-data-ref.h: Depends on graphds.h.
11637         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
11638         (build_rdg): Declared.
11639         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
11640
11641 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
11642
11643         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
11644         ccp_min_invariant.
11645
11646 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
11647             Jakub Jelinek  <jakub@redhat.com>
11648
11649         PR middle-end/PR28690
11650         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
11651         EQ compares.
11652         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
11653         and MEM_POINTER operands over REG and MEM operands.
11654         (swap_commutative_operands_p): Change return value to bool.
11655         * rtl.h: Update the corresponding prototype.
11656         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
11657         instead of gen_rtx_PLUS.
11658         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
11659         value to bool.  Change function arguments to rtx's and update code
11660         to match.
11661         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
11662         calls to match the new declaration.
11663         * simplify-rtx.c (simplify_associative_operation): Don't
11664         reorder simplify_binary_operation arguments.
11665
11666 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
11667
11668         * config/mips/mips.c (override_options): Use mips_costs to derive
11669         the default branch cost.
11670         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
11671         than mips_costs.
11672         * config/mips/mips.opt (mbranch-cost=): New option.
11673         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
11674
11675 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
11676
11677         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
11678         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
11679         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
11680         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
11681
11682 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
11683
11684         * config/mips/constraints.md (ks): New constraint.
11685         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
11686         (*add<mode>3_mips16): ...here.
11687
11688 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
11689
11690         * optabs.h (enum optab_index): Add new OTI_signbit.
11691         (signbit_optab): Define corresponding macro.
11692         (enum insn_code signbit_optab[]): Remove array.
11693         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
11694         (expand_copysign_absneg): If back end provides signbit insn, use it
11695         instead of bit operations on floating point argument.
11696         * builtins.c (enum insn_code signbit_optab[]): Remove array.
11697         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
11698         for availability of signbit insn.
11699
11700         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
11701         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
11702         SSE mode is not active.
11703         (isinf<mode>2): Disable for mfpmath=sse,387.
11704
11705 2007-07-22  Ben Elliston  <bje@au.ibm.com>
11706
11707         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
11708         `class' parameter.
11709         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
11710
11711 2007-07-20  Richard Guenther  <rguenther@suse.de>
11712
11713         * tree-cfg.c (verify_expr): COND_EXPRs can have any
11714         integral typed condition.
11715         * tree-ssa.c (useless_type_conversion_p): Do not preserve
11716         booleanness.  Only preserve conversions from a non-base
11717         type to a base type, not in general between types with
11718         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
11719         * tree.def (COND_EXPR): Document that the condition
11720         can be of any integral type.
11721
11722 2007-07-20  Nigel Stephens  <nigel@mips.com>
11723             Richard Sandiford  <richard@codesourcery.com>
11724
11725         * config/mips/mips.h (mips_dwarf_regno): Declare.
11726         (DBX_REGISTER_NUMBER): Remove redundant brackets.
11727         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
11728         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
11729         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
11730         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
11731         (REG_CLASS_NAMES): Update accordingly.
11732         * config/mips/mips.c (mips_dwarf_regno): New array.
11733         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
11734         (mips_subword): Remove special handling for accumulator registers.
11735         (override_options): Initiailize mips_dwarf_regno.  Remove use
11736         of ACC_HI_REG_P.
11737         (mips_swap_registers): New function.
11738         (mips_conditional_register_usage): Swap accumulator registers
11739         around if TARGET_LITTLE_ENDIAN.
11740         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
11741         * config/mips/constraints.md (h, l): Use the endianness to choose
11742         between MD0_REG and MD1_REG.
11743         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
11744         alternative-dependent template.
11745
11746 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
11747
11748         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
11749         no_new_pseudos.
11750
11751 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
11752
11753         * function.c (thread_prologue_and_epilogue_insns): Fix exit
11754         predecessor fallthru flags.
11755
11756 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
11757
11758         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
11759         of compare to the same type.
11760         * cfgloopmanip.c (add_loop): Update information about loop exits.
11761         (loop_version): Remove the innermost loop requirement.
11762         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
11763         to sizetype for pointers.
11764
11765 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11766
11767         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
11768         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
11769         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
11770
11771         * config/dfp-bit.c: Empty for TFmode conversions.
11772
11773 2007-07-18  Caroline Tice  <ctice@apple.com>
11774         
11775         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
11776         and handle them correctly; check that src is not NULL before
11777         trying to use it.
11778         (find_src_set_src): Likewise.
11779         
11780 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
11781         
11782         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
11783         (struct alignment_context, init_alignment_context): New.
11784         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
11785         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
11786         (XCHAL_HAVE_S32C1I): Likewise.
11787         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
11788         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
11789         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
11790         (ATOMIC, HQI): New macros.
11791         (memory_barrier, *memory_barrier): New.
11792         (sync_lock_releasesi): New.
11793         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
11794         (sync_lock_test_and_set<mode>): New.
11795         (sync_<atomic><mode>): New.
11796         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
11797         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
11798         (xtensa_expand_atomic): New.
11799         
11800 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11801
11802         PR target/30652
11803
11804         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
11805         transformation for builtin ISNORMAL.
11806         (expand_builtin): Handle BUILT_IN_ISNORMAL.
11807         * builtins.def (BUILT_IN_ISNORMAL): New.
11808         * doc/extend.texi: Document isnormal.
11809
11810 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11811
11812         PR target/30652
11813
11814         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
11815         optabs infrastructure.  Provide generic implementation for
11816         FINITE/ISFINITE.
11817         (expand_builtin): Handle FINITE/ISFINITE.
11818         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
11819         (fold_builtin_1): Likewise.
11820
11821         * builtins.def (BUILT_IN_ISFINITE): New.
11822
11823         * doc/extend.texi: Document isfinite.
11824
11825 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11826
11827         PR target/30652
11828         PR middle-end/20558
11829
11830         * builtins.c (expand_builtin_interclass_mathfn): Provide a
11831         generic fallback for isinf.
11832         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
11833         calculation code ...
11834         * real.c (get_max_float): ... to here.
11835         * real.h (get_max_float): New.
11836
11837 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11838
11839         PR middle-end/32668
11840
11841         * builtin-attrs.def (ATTR_TYPEGENERIC,
11842         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
11843
11844         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
11845         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
11846         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
11847         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
11848
11849         * c-common.c (handle_type_generic_attribute): New.
11850         (c_common_attribute_table): Add "type generic".
11851
11852         * c-typeck.c (convert_arguments): Handle "type generic" functions.
11853
11854 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
11855
11856         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
11857         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
11858         properly.
11859
11860 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
11861
11862         PR target/32808
11863         * config/cris/cris.c (cris_print_index): Don't use XEXP before
11864         checking that the operand is an expression.
11865
11866 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
11867             Danny Smith  <dannysmith@users.sourceforge.net>
11868
11869         PR/other 30335
11870         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
11871         file mapping object in local namespace if Windows version later
11872         than NT4
11873
11874 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
11875
11876         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
11877         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
11878         arm_cannot_force_const_mem.
11879         (arm_cannot_force_const_mem): New function.
11880         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
11881         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
11882         of arm_tls_referenced_p.
11883         * config/arm/arm.md (movsi): Split out-of-section constants when
11884         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
11885         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
11886
11887 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
11888
11889         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
11890
11891 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
11892
11893         * config/mips/mips.md (*extendqihi2): Convert the destination
11894         to SImode.
11895
11896 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11897
11898         * config/pa/fptr.c: Update license header.
11899         * config/pa/milli64.S: Likewise.
11900
11901 2007-07-17  Nick Clifton  <nickc@redhat.com>
11902
11903         * COPYING_v3: New file.  Contains version 3 of the GNU General
11904         Public License.
11905         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
11906         Lesser General Public License.
11907         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
11908         the GNU General Public License.
11909
11910 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
11911
11912         PR rtl-optimization/32773
11913         * cfglayout.c (force_one_exit_fallthru): New function.
11914         (cfg_layout_finalize): Use it.
11915
11916 2007-07-16  Richard Guenther  <rguenther@suse.de>
11917             Uros Bizjak  <ubizjak@gmail.com>
11918
11919         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
11920         before forcing it to gimple operand.
11921
11922 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
11923             David Ung  <davidu@mips.com>
11924
11925         * config/mips/mips.h (TUNE_24K): Define.
11926         (TUNE_MACC_CHAINS): Add TUNE_24K.
11927         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
11928         imadd.
11929         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
11930         (r74k_int_madd): .. this new reservation.
11931         (define_bypass): Fixed bypasses for r74k_int_madd to use
11932         mips_linked_madd_p.
11933         * config/mips/24k.md (define_bypass): Define new
11934         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
11935
11936 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
11937             Nigel Stephens  <nigel@mips.com>
11938
11939         * config/mips/mips.md: Include 20kc.md.
11940         * config/mips/20kc.md: New file.
11941         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
11942         (mips_adjust_cost): Tweak for 20Kc.
11943         (mips_issue_rate): Likewise.
11944         * config/mips/mips.h (TUNE_20KC): Define.
11945
11946 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
11947
11948         * config/rs6000/rs6000.c (struct processor_cost): Add
11949         cache_line_size, l1_cache_lines, and simultaneous_prefetches
11950         fields.
11951         (*_cost): Add cache information.
11952         (rs6000_override_options): Set cache parameters.
11953
11954 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
11955
11956         PR bootstrap/3456
11957         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
11958         * doc/install.texi (mips-sgi-irix6): pthread support works now.
11959
11960 2007-07-16  Paul Brook  <paul@codesourcery.com>
11961
11962         PR target/32753
11963         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
11964         (cirrus_thumb2_movsi_insn): Ditto.
11965
11966 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
11967
11968         * config/rs6000/darwin-fallback.c (interpret_libc): Change
11969         CR2_REGNO to R_CR2.
11970
11971 2007-07-15  Andrew Haley  <aph@redhat.com>
11972
11973         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
11974         before looking in the context.
11975
11976 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11977
11978         PR middle-end/32398
11979         PR middle-end/32769
11980         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
11981         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
11982         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
11983         (pa_output_function_prologue): Use rp_saved and
11984         current_function_is_leaf to generate .CALLINFO statement.
11985         (hppa_expand_prologue): Set rp_saved.
11986         (hppa_expand_epilogue): Use rp_saved.
11987         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
11988         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
11989
11990 2007-07-14  Dirk Mueller  <dmueller@suse.de>
11991
11992         * omega.c (coalesce): Fix memory leak on early exit.
11993         * matrix-reorg.c (check_allocation_function): Likewise.
11994         * tree-vect-transform.c (vect_get_new_vect_var): free result
11995         of concat().
11996         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
11997         pass pointer to edge vector
11998         (partition_hot_cold_basic_blocks): Fix memory leak.
11999         * collect2.c (prefix_from_string): Free temporary storage.
12000         * reload1.c (fixup_abnormal_edges): Free sbitmap.
12001
12002 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
12003
12004         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
12005         (DO_GLOBAL_DTORS_BODY): Likewise.
12006
12007 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
12008             Nigel Stephens  <nigel@mips.com>
12009
12010         * config/mips/mips.c (mips_classify_symbol): Don't return
12011         SYMBOL_SMALL_DATA for constant pool addresses if
12012         TARGET_EMBEDDED_DATA is true.
12013
12014 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
12015
12016         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
12017         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
12018         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
12019         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
12020         __builtin_ia32_storehps, __builtin_ia32_storelps,
12021         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
12022         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
12023         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
12024         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
12025         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
12026         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
12027         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
12028         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
12029         using def_builtin_const.
12030
12031 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
12032
12033         PR tree-optimization/32705
12034         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
12035         (simplify_binary_expression): Use SSA_VAL consistently.
12036
12037 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
12038
12039         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
12040         (SPEFSCR_REGNO): Delete definition.
12041         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
12042         COUNT_REGISTER_REGNUM -> CTR_REGNO.
12043         * config/rs6000/rs6000.h: Do not define *_REGNO.
12044         LINK_REGISTER_REGNUM -> LR_REGNO.
12045         COUNT_REGISTER_REGNUM -> CTR_REGNO.
12046         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
12047         COUNT_REGISTER_REGNUM -> CTR_REGNO.
12048         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
12049         R_VRSAVE, R_VSCR. Use them.
12050         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
12051         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
12052         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
12053         * config/rs6000/aix.h: Define R_LR.  Use it.
12054         
12055 2007-07-13  Caroline Tice  <ctice@apple.com>
12056         
12057         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
12058         flag_var_tracking is explicitly turned off (i.e. when variable
12059         tracking is not feasible); otherwise, turn flag_var_tracking on when
12060         flag_var_tracking_uninit is on.
12061         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
12062         note definitions, to allow recording of initialization status in the
12063         notes.
12064         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
12065         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
12066         determine if two note locations are equal.
12067         (output_loc_list): Don't output list entries whose start & end labels
12068         are the same.
12069         (reg_loc_descriptor): Add parameter for initialization status; pass it
12070         to other loc descriptor functions.
12071         (one_reg_loc_descriptor): Add parameter for initialization status;
12072         check its value and add DW_OP_GNU_uninit to returned loc descr if
12073         appropriate.
12074         (multiple_reg_loc_descriptor): Add parameter for initialization
12075         status;
12076         pass init status argument to other loc descriptor functions; check
12077         value of intialization parameter and add DW_OP_GNU_uninit to returned
12078         loc descr if appropriate.
12079         (based_loc_descr): Add parameter for initialization status; add new
12080         variable for return value; check value of initialization parameter and
12081         add DW_OP_GNU_uninit to returned loc descr if appropriate.
12082         (concatn_mem_loc_descriptor): Add parameter for initialization status;
12083         pass init status argument to other loc descriptor functions; check
12084         value of intialization parameter and add DW_OP_GNU_uninit to returned
12085         loc descr if appropriate.
12086         (mem_loc_descriptor): Likewise.
12087         (concat_loc_descriptor): Likewise.
12088         (concatn_loc_descriptor): Likewise.
12089         (loc_descriptor): Add parameter for initialization status; pass it as
12090         argument to other loc descriptor function calls.
12091         (loc_descriptor_from_tree_1): Add appropriate initialization status
12092         to loc descriptor function calls.
12093         (add_location_or_const_value_attribute): Get initialization status
12094         from VAR_LOCATION note; add initialization status to loc descriptor
12095         function calls.
12096         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
12097         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
12098         status is uninitialized, add "[uninint]" to output.
12099         * common.opt (fvar-tracking-uninit): New option, similar to
12100         fvar-tracking, to turn on tracking of uninitialized variables; creates
12101         a new global flag, flag_var_tracking_uninit.
12102         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
12103         (enum var_init_status): New type, for var initialization status field.
12104         * var-tracking.c (struct location_chain_def): Two new fields, init,
12105         for initialization status, and set_src for the assignment value expr.
12106         (unshare_variable): New parameter for initialization status;
12107         initialize new init and set_src fields.
12108         (var_reg_set): New parameters for initialization status and value;
12109         pass them to set_variable_part.
12110         (var_mem_set): Likewise.
12111         (get_init_value): New function.
12112         (var_reg_delete_and_set): New initialization status & value
12113         parameters; add call to get_init_value if status is unknown; pass new
12114         parameters to clobber_variable_part and var_reg_set.
12115         (var_mem_delete_and_set): Likewise.
12116         (var_reg_delete): Pass null set_src value to clobber_variable_part.
12117         (var_mem_delete): Likewise.
12118         (variable_union): Pass status to unshare_variable; initialize new init
12119         and set_src fields. If flag_var_tracking_uninit is not set, force
12120         status to initialized.
12121         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
12122         used later to get the set_src value.
12123         (find_src_status): New function.
12124         (find_src_set_src): New function.
12125         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
12126         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
12127         MO_SET, get set_src value and pass it to var_reg_delete_and_set
12128         and var_mem_delete_and_set.
12129         (dump_variable): Print out "[uninit]" if appropriate.
12130         (set_variable_part): Add new initialization and set_src parameters;
12131         pass status to unshare_variable; set node->init and node- >set_src
12132         fields and modify slot in hash table appropriately; save the init and
12133         set_src values if appropriate and assign to the new node.
12134         (clobber_variable_part): New set_src parameter; if two nodes have
12135         same variable and same location but different set_src (assignment)
12136         values, clobber old node.
12137         (delete_variable_part): Pass init status to unshare_variable.
12138         (emit_note_insn_var_location): Add initialized var; assign var's init
12139         status to new 'initialized'; pass new init status field to calls to
12140         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
12141         status to initialized.
12142         (emit_notes_in_bb): Pass initialization status to calls to
12143         var_reg_set, var_mem_set, var_reg_delete_and_set and
12144         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
12145         var_reg_delete_and_set and var_mem_delete_and_set; call
12146         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
12147         make up for change in add_stores.
12148         (vt_add_function_parameters): Add status to calls to
12149         set_variable_part.
12150         * config/darwin.c (darwin_override_options): Turn on uninitialized
12151         tracking automatically, if var_tracking is on and the system is
12152         10.5 or higher.
12153         
12154 2007-07-13  Sa Liu  <saliu@de.ibm.com>
12155
12156         * config.gcc: Add options for arch and tune on SPU.
12157         * config/spu/predicates.md: Add constant operands 0 and 1.
12158         * config/spu/spu-builtins.def: Add builtins for double precision 
12159         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
12160         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
12161         spu_testsv.
12162         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
12163         a CELLEDP target.
12164         * config/spu/spu-protos.h: Add new function prototypes. 
12165         * config/spu/spu.c (spu_override_options): Check options -march and
12166         -mtune.
12167         (spu_comp_icode): Add comparison code for DFmode and vector mode.
12168         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
12169         mode comparison.
12170         (spu_const_from_int): New.  Create a vector constant from 4 ints.
12171         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
12172         (spu_emit_vector_compare): New.  Emit vector compare.
12173         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
12174         * config/spu/spu.h: Add options -march and -mtune.  Define processor
12175         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
12176         CANONICALIZE_COMPARISON.
12177         * config/spu/spu.md: Add new insns for double precision compare
12178         and double precision vector compare.  Add vcond and smax/smin patterns
12179         to enable DFmode vector conditional expression.
12180         * config/spu/spu.opt: Add options -march and -mtune.
12181         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
12182         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
12183         both CELL and CELLEDP targets: spu_testsv.
12184         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
12185         values.
12186
12187 2007-07-13  Richard Guenther  <rguenther@suse.de>
12188
12189         PR tree-optimization/32721
12190         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
12191         TREE_THIS_VOLATILE on the folded reference.
12192         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
12193         if the array reference has TREE_THIS_VOLATILE set.
12194
12195 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
12196
12197         PR other/32188
12198         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
12199
12200 2007-07-13  Andreas Schwab  <schwab@suse.de>
12201
12202         * gengtype-lex.l: Allow declarations to be indented.
12203
12204 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
12205
12206         * ginclude/tgmath.h: New.
12207         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
12208         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
12209         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
12210         * configure: Regenerate.
12211
12212 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
12213
12214         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
12215         correct index when setting register save state for xd
12216         registers.
12217
12218 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
12219
12220         * config/sh/sh.c (mark_use): Remove.
12221
12222 2007-07-12  Paul Brook  <paul@codesourcery.com>
12223
12224         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
12225         reg does not overlap return value.
12226
12227 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
12228
12229         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
12230         (set_expression_vuses): Ditto.
12231         (init_pre): Initialize expression_vuses.
12232
12233 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
12234
12235         * config/i386/sse.md (storentdf, storentsf): New.
12236
12237 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
12238
12239         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
12240         FUNCTION_DECL.
12241         * tree.c (build_decl_stat): Move code from here...
12242         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
12243         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
12244         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
12245         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
12246         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
12247         FUNCTION_BOUNDARY.
12248
12249 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
12250             Devang Patel  <dpatel@apple.com>
12251
12252         PR tree-optimization/25413
12253         * targhooks.c (default_builtin_vector_alignment_reachable): New.
12254         * targhooks.h (default_builtin_vector_alignment_reachable): New.
12255         * tree.h (contains_packed_reference): New.
12256         * expr.c (contains_packed_reference): New.
12257         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
12258         (vect_enhance_data_refs_alignment): Call
12259         vector_alignment_reachable_p.
12260         * target.h (vector_alignment_reachable): New builtin.
12261         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
12262         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
12263         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
12264
12265 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
12266
12267         * target.h (builtin_vectorization_cost): Add new target builtin.
12268         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
12269         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
12270         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
12271         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
12272         uninitialized variables.
12273         * tree-vect-transform.c (cost_for_stmt): New function.
12274         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
12275         using cost 1 for all scalar stmts. Be less conservative when
12276         estimating the number of prologue/epulogue iterations. Call
12277         targetm.vectorize.builtin_vectorization_cost. Return
12278         min_profitable_iters-1.
12279         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
12280         initialization cost instead of TARG_VEC_STMT_COST. Use
12281         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
12282         epilogue code. Fix epilogue cost computation.
12283         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
12284         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
12285         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
12286         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
12287         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
12288         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
12289
12290 2007-07-12  Richard Guenther  <rguenther@suse.de>
12291
12292         * gimplify.c (gimplify_conversion): Make sure that the result
12293         from maybe_fold_offset_to_reference is trivially convertible
12294         to the desired type before doing the simplification.
12295         (gimplify_expr): Likewise.
12296         * fold-const.c (fold_binary): Use the correct types for
12297         building the simplified expression.
12298
12299 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
12300
12301         PR rtl-optimization/32729
12302         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
12303         that fallthru to exit.
12304
12305 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12306
12307         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
12308         (symDTPOFF2reg): Likewise.
12309
12310 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
12311
12312         PR tree-optimization/32663
12313         
12314         * tree.h (VALUE_HANDLE_VUSES): Remove.
12315         (struct tree_value_handle): Remove vuses.
12316
12317         * tree-vn.c (create_value_handle_for_expr): Don't set
12318         VALUE_HANDLE_VUSES. 
12319
12320         * tree-ssa-pre.c (expression_vuses): New.
12321         (alloc_expression_id): Set up expression_vuses.
12322         (get_expression_vuses): New.
12323         (set_expression_vuses): Ditto.
12324         (clear_expression_ids): Modify for expression_vuses.
12325         (phi_translate_1): Ditto.
12326         (phi_translate_set): Ditto.
12327         (value_dies_in_block_x): Ditto
12328         (valid_in_sets): Ditto.
12329         (add_to_sets): Ditto.
12330         (find_existing_value_expr): Ditto.
12331         (create_value_handle_for_expr): Ditto.
12332         (make_values_for_stmt): Ditto.
12333         (vuse_equiv): Remove.
12334
12335 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
12336
12337         * Makefile.in (mostlyclean): Remove object files.
12338
12339 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
12340
12341         * toplev.c (no_new_pseudos): Deleted.
12342         * rtl.h (no_new_pseudos): Deleted.
12343         * tree-pass.h (pass_no_new_pseudos): Deleted. 
12344         * passes.c (pass_no_new_pseudos): Deleted.
12345         * final.c (rest_of_clean_state): Removed no_new_pseudos.
12346         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
12347         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
12348         reload_completed.
12349         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
12350         * rtlhooks.c (gen_lowpart_general): Ditto.
12351         * optabs.c (prepare_operand): Ditto.
12352         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
12353         no_new_pseudos.
12354         * modulo-sched.c (rest_of_handle_sms): Ditto.
12355         * see.c (rest_of_handle_see): Ditto.
12356         * ifcvt.c (if_convert): Ditto.
12357         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
12358         reload_completed.
12359         * init-regs.c (gate_initialize_regs): Deleted set of
12360         no_new_pseudos.
12361         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
12362         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
12363         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
12364         
12365 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
12366
12367         PR target/32661
12368         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
12369         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
12370         (*vec_extractv2di_1_rex64): New insn pattern.
12371
12372 2007-07-11  David Daney  <ddaney@avtrex.com>
12373
12374         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
12375         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
12376         for SIGNAL_UNWIND_RETURN_COLUMN.
12377         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
12378         (DWARF_FRAME_REGNUM): Rewrite.
12379         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
12380
12381 2007-07-11  Nick Clifton  <nickc@redhat.com>
12382
12383         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
12384         delta and use gen_int_mode in place of GET_INT instead.
12385
12386 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
12387
12388         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
12389         and letter field.
12390
12391 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
12392
12393         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
12394         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
12395         types or not.
12396         * params.h (VERIFY_CANONICAL_TYPES): Remove.
12397         (USE_CANONICAL_TYPES): New.
12398         * doc/invoke.texi (verify-canonical-types): Remove.
12399         (use-canonical-types): Add.
12400
12401 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
12402
12403         * config/spu/spu.c (spu_optimization_options): Remove setting of
12404         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
12405         (spu_override_options): Move it here.
12406
12407 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
12408
12409         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
12410         * config/mips/mips.c (mips_cpu_info_table): Mention
12411         MIPS_ISA_LEVEL_SPEC in the comment.
12412
12413 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
12414
12415         PR tree-optimization/32713
12416         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
12417
12418 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
12419
12420         PR middle-end/30482
12421         * c-opts.c (c_common_post_options): Do not change flag_complex_method
12422         conditional to flag_isoc99.
12423         (c_common_init_options): Do it here, unconditionally.
12424
12425 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
12426
12427         PR tree-optimization/32589
12428         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
12429         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
12430         * tree-ssa-propagate.c (valid_gimple_expression_p): New
12431         predicate, extracted from...
12432         (set_rhs): ...here.  Call it for the expression on entry.
12433         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
12434         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
12435         (simplify_binary_expression): Use valid_gimple_expression_p
12436         to validate the simplification.
12437         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
12438
12439 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
12440
12441         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
12442         DWARF2_DEBUG on 32 bit target too.
12443         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
12444
12445 2007-07-11  Nick Clifton  <nickc@redhat.com>
12446
12447         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
12448         version for 64-bit hosts.
12449
12450 2007-07-10  David Daney  <ddaney@avtrex.com>
12451
12452         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
12453         predicate.
12454         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
12455         call.
12456         * config/mips/mips.c (mips_expand_synci_loop): New function.
12457         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
12458         (UNSPEC_RDHWR): Same.
12459         (UNSPEC_SYNCI): Same.
12460         (UNSPEC_SYNC): Same.
12461         (clear_cache): New expand.
12462         (sync): New insn.
12463         (synci): Same.
12464         (rdhwr): Same.
12465         (clear_hazard): Same.
12466         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
12467         function.
12468         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
12469         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
12470
12471 2007-07-10  Ian Lance Taylor  <iant@google.com>
12472
12473         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
12474         no_new_pseudos.
12475
12476 2007-07-10  David Daney  <ddaney@avtrex.com>
12477
12478         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
12479         * builtins.c (expand_builtin___clear_cache): New function.
12480         (expand_builtin): Call expand_builtin___clear_cache for
12481         BUILT_IN_CLEAR_CACHE case.
12482         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
12483         * doc/md.texi (clear_cache): Document new instruction pattern.
12484         * testsuite/gcc.dg/builtins-64.c: New test.
12485
12486 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
12487
12488         * config/cris/cris.md ("movsi"): Fix typo in last change.
12489
12490 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
12491
12492         PR 32617
12493         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
12494         FUNCTION_DECLs.
12495         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
12496         * varasm.c (assemble_start_function): Honor DECL_ALIGN
12497         for FUNCTION_DECLs.  Don't use align_functions_log if
12498         DECL_USER_ALIGN.
12499         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
12500         even for FUNCTION_DECLs.
12501         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
12502         FUNCTION_DECLs.
12503         * tree.h (DECL_ALIGN): Update for new location of 'align'.
12504         (DECL_FUNCTION_CODE): Update for new location and name of
12505         'function_code'.
12506         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
12507         (struct tree_decl_common): Move 'align' and 'off_align' out
12508         of union, ensure they're still on a 32-bit boundary.  Remove
12509         other fields in union 'u1'.
12510         (struct tree_function_decl): Add field 'function_code' replacing
12511         'u1.f' in tree_decl_common.
12512         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
12513         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
12514         (Variable Attributes): Cross-reference 'aligned' attribute
12515         to Function Attributes.
12516         * flags.h (force_align_functions_log): Delete.
12517         * toplev.c (force_align_functions_log): Delete.
12518
12519 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
12520
12521         PR target/32708
12522         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
12523         (*vec_concatv2di_rex): New insn pattern.
12524
12525 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12526
12527         PR target/32538
12528         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
12529
12530 2007-07-10  Ian Lance Taylor  <iant@google.com>
12531
12532         Replace no_new_pseudos in backends.
12533         * rtl.h (can_create_pseudo_p): Define.
12534         * config/darwin.c (machopic_indirect_data_reference): Use
12535         can_create_pseudo_p () instead of no_new_pseudos.
12536         (machopic_indirect_data_reference): Likewise.
12537         (machopic_legitimize_pic_address): Likewise.
12538         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
12539         (alpha_emit_set_const_1): Likewise.
12540         (alpha_emit_set_const): Likewise.
12541         (alpha_emit_conditional_move): Likewise.
12542         (alpha_split_conditional_move): Likewise.
12543         * config/alpha/alpha.md (various splitters): Likewise.
12544         (movti): Likewise.
12545         * config/arm/arm.c (legitimize_pic_address): Likewise.
12546         (arm_load_pic_register): Likewise.
12547         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
12548         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
12549         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
12550         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
12551         * config/cris/cris.md (movsi): Likewise.
12552         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
12553         (symGOTOFF2reg_hilo): Likewise.
12554         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
12555         * config/h8300/h8300.md (insv, extzv): Likewise.
12556         * config/i386/i386.c (ix86_expand_move): Likewise.
12557         (ix86_expand_vector_move): Likewise.
12558         (ix86_prepare_fp_compare_args): Likewise.
12559         (ix86_expand_carry_flag_compare): Likewise.
12560         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
12561         (tls_dynamic_gnu2_combine_32): Likewise.
12562         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
12563         * config/ia64/ia64.c (ia64_expand_move): Likewise.
12564         (ia64_expand_movxf_movrf): Likewise.
12565         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
12566         (m32c_split_move): Likewise.
12567         (m32c_expand_insv): Likewise.
12568         * config/m68k/m68k.md (movsi): Likewise.
12569         * config/mips/mips.c (mips_force_temporary): Likewise.
12570         (mips_split_symbol): Likewise.
12571         (mips_move_integer): Likewise.
12572         (mips_legitimize_const_move): Likewise.
12573         * config/mn10300/mn10300.md (movsi): Likewise.
12574         * config/pa/pa.c (emit_move_sequence): Likewise.
12575         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
12576         (rs6000_got_register): Likewise.
12577         (create_TOC_reference): Likewise.
12578         (rs6000_machopic_legitimize_pic_address): Likewise.
12579         * config/rs6000/rs6000.md (add<mode>3): Likewise.
12580         (various splitters): Likewise.
12581         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
12582         (movsi_got): Likewise.
12583         * config/s390/s390.c (emit_symbolic_move): Likewise.
12584         * config/s390/s390.md (movhi, movqi): Likewise.
12585         (load_multiple, store_multiple): Likewise.
12586         * config/score/score.c (score_force_temporary): Likewise.
12587         * config/sh/sh.c (prepare_move_operands): Likewise.
12588         (prepare_cbranch_operands): Likewise.
12589         (emit_fpu_switch): Likewise.
12590         (fpscr_set_from_mem): Likewise.
12591         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
12592         (adddi3, subsi3): Likewise.
12593         (various splitters): Likewise.
12594         (divsi_inv_fp_combine): Likewise.
12595         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
12596         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
12597         (sne): Likewise.
12598         * config/sh/predicates.md (xor_operand): Likewise.
12599         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
12600         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
12601         (movdi_pic_label_ref): Likewise.
12602         * config/spu/spu.c (spu_split_immediate): Likewise.
12603         * config/alpha/alpha.md (various splitters): Remove test
12604         !no_new_pseudos || reload_completed.
12605         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
12606         no_new_pseudos.
12607         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
12608         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12609         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
12610         * config/score/score.c (th_output_mi_thunk): Likewise.
12611         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
12612         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12613
12614 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
12615
12616         PR rtl-optimization/32664
12617         * mode-switching.c (create_pre_exit): Skip barrier insns.
12618
12619 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
12620
12621         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
12622         force_gimple_operand_bsi.
12623         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
12624         rewrite_use_compare): Ditto.
12625         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
12626         Ditto.
12627         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
12628         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
12629         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
12630         * tree-profile.c (prepare_instrumented_value,
12631         tree_gen_interval_profiler, tree_gen_pow2_profiler,
12632         tree_gen_one_value_profiler, tree_gen_ic_profiler,
12633         tree_gen_ic_func_profiler, tree_gen_average_profiler,
12634         tree_gen_ior_profiler): Ditto.
12635         * tree-ssa-reassoc.c (negate_value): Ditto.
12636         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
12637         Use force_gimple_operand_bsi.
12638         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
12639         * tree-if-conv.c (add_to_dst_predicate_list,
12640         find_phi_replacement_condition): Ditto.
12641         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
12642         Call mark_symbols_for_renaming for new statements.
12643         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
12644
12645 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
12646
12647         * cfghooks.c (remove_edge): New function.
12648         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
12649         loop exit rescans.
12650         * cfghooks.h (remove_edge): Declare.
12651         * cfg.c (remove_edge): Renamed to remove_edge_raw.
12652         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
12653
12654 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
12655
12656         * optabs.h: Added declaration for signbit_optab.  
12657         * optabs.c: (init_optabs): Added initialization for signbit_optab.
12658         * genoptinit.c (optabs): Added entry for signbit insns.  
12659         * builtins.c (expand_builtin_signbit): Added code to use a signbit
12660         insn, if available.  
12661         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
12662         * config/s390/s390.md (signbit<mode>2): New expander.  
12663
12664 2007-07-09  Richard Guenther  <rguenther@suse.de>
12665
12666         PR middle-end/32698
12667         * fold-const.c (fold_plusminus_mult_expr): Move constant
12668         arguments second to allow decomposing.
12669
12670 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
12671
12672         Revert:
12673         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
12674         PR debug/23551
12675         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
12676         Disregard DECL_FROM_INLINE.
12677
12678 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
12679
12680         PR target/27855
12681         * doc/invoke.texi: Add ftree-reassoc flag.
12682         * common.opt (ftree-reassoc): New flag.
12683         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
12684         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
12685
12686 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
12687
12688         PR tree-optimization/32681
12689         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
12690         saved in second_edge->aux when first_bb is a loop header.
12691
12692 2007-07-09  Jan HUbicka  <jh@suse.cz>
12693
12694         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
12695
12696 2007-07-09  Richard Guenther  <rguenther@suse.de>
12697
12698         * c-decl.c (start_function): Do not promote return type.
12699
12700 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
12701
12702         * function.c (do_warn_unused_parameter): Do not warn if
12703         TREE_NO_WARNING is set.
12704
12705 2007-07-08  Andreas Schwab  <schwab@suse.de>
12706
12707         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
12708
12709 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
12710
12711         Revert this patch:
12712         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
12713
12714         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
12715         apply to assembly language, too.
12716         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
12717
12718 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
12719
12720         Revert (note the sccvn portions are *not* reverted)
12721         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
12722
12723         Fix PR tree-optimization/23488
12724
12725         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
12726         handles.
12727         * tree-flow-inline.h (get_value_handle): Ditto.
12728         * tree-ssa-pre.c (decl_vh_map): New.
12729         (decl_node_pool): New.
12730         (can_value_number_operation): Support DECL_P.
12731         (can_PRE_operation): Ditto.
12732         (create_expression_by_pieces): Ditto.
12733         (find_existing_value_expr): Modify to differnetiate between
12734         addressing and top level.
12735         (create_value_handle_for_expr): Handle DECL's.
12736         (poolify_tree): Ditto.
12737         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
12738         (make_values_for_stmt): Handle DECL's properly.
12739         (init_pre): Reorg to not init useless things during FRE.
12740         (fini_pre): Ditto.
12741         * tree-flow.h: Include pointer-set.h.
12742         (decl_vh_map): Declare.
12743         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
12744
12745 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
12746
12747         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
12748         the constraint description.
12749         * doc/md.texi: Update documentation of AVR constraints.
12750
12751 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
12752
12753         * auto-inc-dec.c, config/arm/arm.c,
12754         config/m32r/constraints.md, config/mips/mips.md,
12755         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
12756         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
12757         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
12758         typos.  Follow spelling conventions.
12759         * doc/invoke.texi, doc/rtl.texi: Fix typos.
12760
12761         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
12762         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
12763
12764         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
12765         realloc_vuse): Remove.
12766         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
12767         and realloc_vuse.
12768
12769 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
12770
12771         Fix PR tree-optimization/23488
12772
12773         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
12774         (try_to_simplify): Ditto.
12775         (visit_use): Ditto.
12776         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
12777         handles.
12778         * tree-flow-inline.h (get_value_handle): Ditto.
12779         * tree-ssa-pre.c (decl_vh_map): New.
12780         (decl_node_pool): New.
12781         (can_value_number_operation): Support DECL_P.
12782         (can_PRE_operation): Ditto.
12783         (create_expression_by_pieces): Ditto.
12784         (find_existing_value_expr): Modify to differnetiate between
12785         addressing and top level.
12786         (create_value_handle_for_expr): Handle DECL's.
12787         (poolify_tree): Ditto.
12788         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
12789         (make_values_for_stmt): Handle DECL's properly.
12790         (init_pre): Reorg to not init useless things during FRE.
12791         (fini_pre): Ditto.
12792         * tree-flow.h: Include pointer-set.h.
12793         (decl_vh_map): Declare.
12794         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
12795                 
12796 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
12797
12798         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
12799         apply to assembly language, too.
12800         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
12801
12802 2007-07-06  Ian Lance Taylor  <iant@google.com>
12803             Zack Weinberg  <zackw@panix.com>
12804
12805         PR middle-end/32441
12806         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
12807
12808 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
12809
12810         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
12811         (prefetch): Likewise if "pref" would be used.
12812
12813 2007-07-06  Josh Conner  <jconner@apple.com>
12814
12815         PR middle-end/32602
12816         PR middle-end/32603
12817         * calls.c (store_one_arg): Handle arguments which are partially
12818         on the stack when detecting argument overlap.
12819
12820 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
12821
12822         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
12823         chosen during find_reloads.
12824
12825 2007-07-06  Richard Guenther  <rguenther@suse.de>
12826
12827         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
12828         TYPE_ARG_TYPES for verification of argument types.  Use
12829         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
12830         parameters as variable arguments.
12831
12832 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
12833
12834         * libgcc2.h (word_type): Type definition removed.
12835         (cmp_return_type, shift_count_type): Type definitions added.
12836         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
12837         replaced with shift_count_type.
12838         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
12839         cmp_return_type.
12840         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
12841         changed from word_type to Wtype.
12842         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
12843         replaced with shift_count_type.
12844         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
12845         cmp_return_type.
12846         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
12847         and libgcc_shift_count attribute added.
12848         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
12849         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
12850         (TARGET_INITIALIZER): New target hooks added.
12851         * targhooks.c (default_libgcc_cmp_return_mode,
12852         default_libgcc_shift_count_mode): Default implementations for the new
12853         target hooks added.
12854         * targhooks.h (default_libgcc_cmp_return_mode,
12855         default_libgcc_shift_count_mode): Function prototypes added.
12856         * target.h (struct gcc_target): Fields for the new target hooks added.
12857         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
12858         as library call.
12859         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
12860         library call.
12861
12862         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
12863         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
12864
12865         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
12866         s390_libgcc_shift_count_mode): Functions added.
12867         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
12868         Target hooks defined.
12869
12870 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
12871
12872         * config/mips/mips.c (compute_frame_size): Restore the original
12873         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
12874         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
12875         Document why the difference is needed.
12876
12877 2007-07-06  Richard Guenther  <rguenther@suse.de>
12878
12879         * c-common.c (boolean_increment): Use correctly typed
12880         constant.
12881
12882 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
12883
12884         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
12885         the topmost argument register is not also included in the save mask.
12886         (mips16e_collect_argument_save_p): Take a pointer to the argument
12887         register, rather than a pointer to the number of arguments.
12888         (mips16e_collect_argument_saves): Only include argument saves
12889         that aren't in the register mask.
12890
12891 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
12892
12893         PR rtl-optimization/32450
12894         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
12895         to ensure that instructions are not moved into the prologue when
12896         profiling is on.  Remove unused prologue_end variable.
12897         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
12898         as a scheduling barrier.
12899
12900 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
12901
12902         PR debug/23551
12903         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
12904         Disregard DECL_FROM_INLINE.
12905
12906 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
12907
12908         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
12909         IORing with a constant.
12910
12911 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
12912
12913         PR rtl-optimization/32475
12914         * df-scan.c (df_def_record_1): Add a use of the stack pointer
12915         for every definition of the stack pointer.
12916
12917 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
12918
12919         * arm.c (vfp3_const_double_index): Copy signed results of
12920         REAL_VALUE_TO_INT into unsigned vars.
12921
12922 2007-07-05  Richard Guenther  <rguenther@suse.de>
12923
12924         PR middle-end/32639
12925         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
12926         FUNCTION_TYPE.
12927         * tree-ssa.c (useless_type_conversion_p): Check canonical
12928         types early.
12929
12930 2007-07-05 Anatoly Sokolov <aesok@post.ru>
12931
12932         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
12933         zero_extendhisi2): Change to define_insn_and_split. 
12934         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
12935
12936 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
12937
12938         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
12939         pass_match_asm_constraints): New.
12940         * passes.c (init_optimization_passes): Add new pass.
12941         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
12942         * function.h (struct function): Add has_asm_statement bit.
12943         (current_function_has_asm_statement): New.
12944         * tree-pass.h (pass_match_asm_constraints): New.
12945
12946 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
12947
12948         * config/mips/mips.c (mips_file_start): Avoid declaration
12949         after code.
12950
12951 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
12952
12953         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
12954
12955 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
12956
12957         * rtl.def (NOTE): Change print format string to print
12958         operand 5 as a note insn name.
12959
12960 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
12961             David Ung  <davidu@mips.com>
12962
12963         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
12964         * doc/invoke.texi: (MIPS Options): Document them.
12965
12966 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
12967             David Ung  <davidu@mips.com>
12968
12969         Add support for SmartMIPS ASE.
12970
12971         * optabs.c (expand_binop_directly): New, broken out from...
12972         (expand_binop): Here.  Make it try rotating in the other
12973         direction even when the second operand isn't constant.
12974         * config/mips/mips.md (*lwxs): New.
12975         * config/mips/mips.opt (msmartmips): New.
12976         * config/mips/mips.c (mips_lwxs_address_p): New.
12977         (mips_rtx_costs): Make it recognize scaled indexed addressing.
12978         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
12979         __mips_smartmips when compiling for TARGET_SMARTMIPS.
12980         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
12981         (ISA_HAS_LWXS): New.
12982         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
12983         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
12984         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
12985         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
12986         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
12987         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
12988         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
12989
12990 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
12991
12992         * tree-vectorizer.c (new_loop_vec_info): Initialize
12993         LOOP_VINFO_COST_MODEL_MIN_ITERS.
12994         * tree-vectorizer.h (_loop_vec_info): Added new filed
12995         min_profitable_iters.
12996         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
12997         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
12998         * tree-vect-analyze.c (vect_analyze_operations): Set
12999         LOOP_VINFO_COST_MODEL_MIN_ITERS.
13000         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
13001         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
13002         Fix calculation of peel_iters_prologue. Move consideration of epilogue
13003         and prologue cost to after they are computed.
13004         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
13005         TARG_VEC_STMT_COST.
13006         (vect_model_simple_cost): Takes additional argument dt. Consider cost
13007         of creating vectors from scalars according to dt.
13008         (vect_model_store_cost): Likewise.
13009         (vectorizable_call): Use dt array instead of scalar dt. Call
13010         vect_model_simple_cost with additional argument dt.
13011         (vectorizable_assignment): Likewise.
13012         (vectorizable_operation): Likewise.
13013         (vectorizable_type_demotion): Likewise.
13014         (vectorizable_type_promotion): Likewise.
13015         (vectorizable_store): Use dt array instead of scalar dt. Call
13016         vect_model_store_cost with additional argument dt.
13017         (vect_do_peeling_for_loop_bound): Don't call
13018         vect_estimate_min_profitable_iters. Instead, lookup
13019         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
13020         "may not be profitable".
13021
13022 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
13023
13024         PR testsuite/32014
13025         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
13026         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
13027         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
13028         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
13029
13030 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
13031
13032         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
13033         addressing modes cheaper.
13034
13035 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
13036
13037         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
13038         (dw_ranges_struct): Rename block_num to num.  Adjust.
13039         (dw_ranges_by_label_struct): New.
13040         (ranges_by_label, ranges_by_label_allocated,
13041         ranges_by_label_in_use): New variables.
13042         (add_ranges_num): Factored most of the code out of...
13043         (add_ranges): ... this one.  Rewrite in terms of the former.
13044         (add_ranges_by_labels): New.
13045         (output_ranges): Output by-label ranges.
13046         (dwarf2out_finish): Output range for multiple-section
13047         compile_unit.  Output standard DW_AT_low_pc in addition to
13048         unexpected DW_AT_entry_pc.
13049
13050 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
13051
13052         PR tree-optimization/32604
13053         PR tree-optimization/32606
13054
13055         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
13056         (compute_antic_safe): Removed.
13057         (ANTIC_SAFE_LOADS): Ditto.
13058         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
13059         (execute_pre): Don't call compute_antic_safe.
13060         (vuse_equiv): New function.
13061         (make_values_for_stmt): Use it
13062         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
13063         not always true.
13064
13065 2007-07-04 Anatoly Sokolov <aesok@post.ru>
13066
13067         PR target/31331
13068         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
13069         rather than a decl. 
13070         (avr_attribute_table): Make "naked" attribute apply to function types
13071         rather than to decls.
13072         (avr_handle_fntype_attribute): New function.
13073
13074 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
13075
13076         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
13077         after \.
13078
13079 2007-07-04  David Ung  <davidu@mips.com>
13080             Joseph Myers  <joseph@codesourcery.com>
13081
13082         * config/mips/mips.md (type): Add logical, signext and move.
13083         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
13084         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
13085         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
13086         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
13087         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
13088         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
13089         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
13090         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
13091         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
13092         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
13093         movv2sf_hardfloat_64bit): Use the new types.
13094         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
13095         *movdf_softfloat, *movdf_mips16): Use "multi".
13096         (extendqihi2): Replace with a define_expand.
13097         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
13098         Based on extend<SHORT:mode><GPR:mode>2 patterns.
13099         * config/mips/74k.md (r74k_int_logical): New reservation and
13100         bypasses.
13101         (r74k_int_arith): Remove "slt".
13102         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
13103         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
13104         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
13105         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
13106         reservations for "arith".
13107
13108 2007-07-04  Richard Guenther  <rguenther@suse.de>
13109
13110         * tree-ssa.c (useless_type_conversion_p): Add handling for
13111         scalar float and vector types.  Only call the types_compatible_p
13112         langhook for aggregate types as last resort.  Follow the
13113         rules.
13114
13115 2007-07-04  Richard Guenther  <rguenther@suse.de>
13116
13117         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
13118         the same as NOP_EXPR.
13119
13120 2007-07-04  Nick Clifton  <nickc@redhat.com>
13121
13122         * target.h (struct gcc_target): Add target_help field.
13123         * target-def.h (TARGET_HELP): New.
13124         (TARGET_INITIALIZER): Use TARGET_HELP.
13125         * opts.c (command_handle_option): Invoke target_help function, if
13126         defined, when the user has specified --target-help on the command
13127         line.
13128         * doc/invoke.texi: Mention that --target-help might print
13129         additional information.
13130         * doc/tm.texi: Document TARGET_HELP hook.
13131
13132         * arm.c (TARGET_HELP): Override default definition.
13133         (arm_target_help): New - display a wrapped list of cores and
13134         architectures supported.
13135
13136 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13137
13138         * config/v850/v850.c (expand_prologue): Make sure
13139         GEN_INT() argument is sign extended rather than zero extended.
13140         (expand_epilogue): Likewise.
13141         (output_move_double): Delete.
13142         * config/v850/v850-protos.h (output_move_double): Delete.
13143         * config/v850/v850.md (movdi): Delete.
13144         (*movdi_internal): Delete.
13145         (movdf): Delete.
13146         (*movdf_internal): Delete.
13147
13148 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
13149
13150         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
13151         unless compiling RTP PIC.
13152
13153 2007-07-04  Richard Guenther  <rguenther@suse.de>
13154
13155         PR tree-optimization/32482
13156         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
13157         original ssa name if we didn't find a shift expression.
13158         Fix shift constant for bit zero test.
13159
13160 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
13161
13162         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
13163
13164 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
13165
13166         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
13167         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
13168         * config/arm/vxworks.h (ASM_SPEC): Delete.
13169         (SUBTARGET_EXTRA_ASM_SPEC): Define.
13170
13171 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
13172
13173         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
13174         (DDR_REVERSED_P): New.
13175         * tree-data-ref.c (initialize_data_dependence_relation,
13176         build_classic_dist_vector): Set DDR_REVERSED_P.
13177
13178 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
13179
13180         PR middle-end/32457
13181         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
13182         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
13183         init_omega_for_ddr_1): Use non conservative number of iterations
13184         estimations.
13185         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
13186         (analyze_siv_subscript): Remove FIXME and reinitialization of 
13187         last_conflicts to chrec_dont_know.
13188         * testsuite/gfortran.dg/vect/pr32457.f90: New.
13189
13190 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
13191
13192         * tree.c (maybe_canonicalize_argtypes): Improve description.
13193
13194 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
13195
13196         * tree.c (maybe_canonicalize_argtypes): New.
13197         (build_function_type): Set canonical type.
13198         (build_method_type_directly): Ditto.
13199         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
13200         properly.
13201
13202 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13203
13204         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
13205         like PLUS_EXPR.
13206         (rewrite_use_nonlinear_expr): Likewise.
13207
13208 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
13209
13210         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
13211
13212 2007-07-04  Ben Elliston  <bje@au.ibm.com>
13213
13214         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
13215         of this file.
13216
13217         * c-objc-common.c (c_types_compatible_p): Fix indentation.
13218
13219         * doc/tm.texi (Run-time Target): Capitalise "CPU".
13220         (Exception Handling): Likewise.
13221
13222 2007-07-03  Jan Hubicka  <jh@suse.cz>
13223
13224         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
13225
13226 2007-07-03  Eric Christopher  <echristo@apple.com>
13227
13228         * doc/cppopts.texi: Add conflicting option note to -dM.
13229         * doc/invoke.texi: Add note about possible conflicts with
13230         -E for -dCHARS and note that -dM will not produce
13231         any results if there is no machine dependent reorg.
13232         
13233 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
13234
13235         * tree.h (DECL_ALIGN): Back out previous change.
13236
13237 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
13238
13239         * configure.ac: Test for .dtprelword support on MIPS.
13240         * configure, config.in: Regenerate.
13241         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
13242         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
13243
13244 2007-07-03  Julian Brown  <julian@codesourcery.com>
13245
13246         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
13247         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
13248         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
13249         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
13250         capability.
13251         (all_fpus): Add FPUTYPE_VFP3.
13252         (fp_model_for_fpu): Add VFPv3 field.
13253         (arm_rtx_costs_1): Give cost to VFPv3 constants.
13254         (vfp3_const_double_index): New function. Return integer index of
13255         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
13256         isn't suitable.
13257         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
13258         and argument represents a valid RTX for a VFPv3 constant.
13259         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
13260         two instructions.
13261         (vfp_emit_fstmd): Similar, for fstmd.
13262         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
13263         constants, represented as integer indices.
13264         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
13265         VFP_REGNO_OK_FOR_DOUBLE macros.
13266         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
13267         (arm_file_start): Set float-abi attribute for VFPv3, and output
13268         correct ".fpu" assembler directive.
13269         (arm_dbx_register_numbering): Add FIXME.
13270         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
13271         (fputype): Add FPUTYPE_VFP3.
13272         (FIXED_REGISTERS): Add 32 registers for D16-D31.
13273         (CALL_USED_REGISTERS): Likewise.
13274         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
13275         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
13276         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
13277         (D7_VFP_REGNUM): New.
13278         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
13279         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
13280         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
13281         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
13282         (REG_ALLOC_ORDER): Adjust for VFPv3.
13283         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
13284         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
13285         VFP_LO_REGS, VFP_HI_REGS.
13286         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
13287         (IS_VFP_CLASS): Define macro.
13288         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
13289         IS_VFP_CLASS.
13290         (REGISTER_MOVE_COST): Likewise.
13291         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
13292         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
13293         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
13294         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
13295         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
13296         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
13297         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
13298         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
13299         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
13300         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
13301         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
13302         where appropriate for single-word registers.
13303         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
13304         As above. Fix type attributes.
13305         * config/arm/constraints.md (register_contraint "t"): Define.
13306         (register_constraint "w"): Change to D0-D15, or D0-D31 for
13307         VFPv3/NEON.
13308         (register_constraint "x"): Define.
13309         (constraint "Dv"): Define.
13310
13311 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
13312
13313         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
13314
13315 2007-07-03  Tom Tromey  <tromey@redhat.com>
13316
13317         * c-parser.c (objc_pq_context): Removed.
13318         (objc_need_raw_identifier): Likewise.
13319         (c_parser) <objc_pq_context>: New field.
13320         <objc_need_raw_identifier>: Likewise.
13321         (OBJC_NEED_RAW_IDENTIFIER): Removed.
13322         (c_lex_one_token): Update.
13323         (c_parser_objc_protocol_definition): Update.
13324         (c_parser_objc_method_definition): Update.
13325         (c_parser_objc_methodproto): Update.
13326         (c_parser_declspecs): Update.
13327
13328 2007-07-03  David Ung  <davidu@mips.com>
13329
13330         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
13331
13332 2007-07-03  David Ung  <davidu@mips.com>
13333             Richard Sandiford  <richard@codesourcery.com>
13334
13335         * doc/invoke.texi: Document -march=74kf3_2.
13336         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
13337         (TUNE_74K): Check for it.
13338         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
13339         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
13340         * config/mips/mips.md (cpu): Add 74kf3_2.
13341         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
13342         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
13343         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
13344         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
13345         74kf3_2 to the CPU list.
13346         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
13347         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
13348         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
13349         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
13350         (r74kf3_2_fxfer_from_c1): New insn reservations.
13351
13352 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
13353             David Ung  <davidu@mips.com>
13354
13355         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
13356         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
13357         and 74k[fx].  Document aliases for the new options.
13358         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
13359         (PROCESSOR_24KF2_1): ...this.
13360         (PROCESSOR_24KX): Rename to...
13361         (PROCESSOR_24KF1_1): ...this.
13362         (PROCESSOR_74KF): Rename to...
13363         (PROCESSOR_74KF2_1): ...this.
13364         (PROCESSOR_74KX): Rename to...
13365         (PROCESSOR_74KF1_1): ...this.
13366         (TUNE_74K): Update PROCESSOR_* names.
13367         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
13368         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
13369         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
13370         (mips_rtx_cost_data): Update processor names in comments.
13371         (mips_issue_rate): Update PROCESSOR_* names.
13372         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
13373         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
13374         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
13375         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
13376         Update cpu attribute names.
13377         (r24k_fpu_iss): Rename this reservation to...
13378         (r24kf2_1_fpu_iss): ...this and update all uses.
13379         (r24kx_fpu_iss): Rename this reservation to...
13380         (r24kf1_1_fpu_iss): ...this and update all uses.
13381         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
13382         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
13383         Update cpu attribute names.
13384
13385 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
13386
13387         * config/m32r/constraints.md: New file.
13388         * config/m32r/m32r.c: Include tm-constrs.h.
13389         (small_data_operand): Use satisfies_constraint_* instead of macro.
13390         (addr24_operand, gen_compare): Likewise.
13391         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
13392         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
13393         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
13394         EXTRA_CONSTRAINT): Likewise.
13395         * config/m32r/m32r.md: Include constraints.md.
13396         (*movsi_insn): Use satisfies_constraint_* instead of macro.
13397         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
13398         * config/m32r/predicates.md (conditional_move_operand): Likewise.
13399         (two_insn_const_operand, int8_operand, uint16_operand,
13400         reg_or_int16_operand, reg_or_uint16_operand,
13401         reg_or_cmp_int16_operand, cmp_int16_operand,
13402         seth_add3_operand): Likewise.
13403
13404 2007-07-03  Eric Christopher  <echristo@gmail.com>
13405
13406         * libgcc2.h: Conditionally declare __bswapsi2 and
13407         __bswapdi2.
13408         
13409 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
13410
13411         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
13412         defined.
13413
13414 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13415
13416         PR target/28307
13417         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
13418         (__gthrw_pragma): Provide default definition.
13419         (__gthrw2): Use it.
13420         * gthr-posix.c (__gthrw_pragma): Define.
13421
13422 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
13423
13424         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
13425         before declaring inequality.
13426
13427 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13428
13429         * combine.c (recog_for_combine): Log the success or failure of
13430           matching new insn patterns against the machine description in
13431           detailed dumps.
13432
13433 2007-07-03  Revital Eres  <eres@il.ibm.com>
13434
13435         * ddg.c (print_sccs): New function.
13436         (check_sccs): New function.
13437         (create_ddg_all_sccs): Use it.
13438         * ddg.h (print_sccs): Declare.
13439         * modulo-sched.c (sms_order_nodes): Call print_sccs.
13440
13441 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
13442
13443         * targhooks.h (default_mode_for_suffix): New function declaration.
13444         * targhooks.c (default_mode_for_suffix): New default target hook.
13445         * target.h (struct c): New structure in the targetm struct.
13446         (mode_for_suffix): New target hook as part of struct c.
13447         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
13448         default_mode_for_suffix.
13449         (TARGET_C): New define.
13450         * c-lex.c: Include "target.h".
13451         (interpret_float): Use targetm.c.mode_for_suffix to determine
13452         the mode for a given non-standard suffix.
13453         Makefile.in (c-lex.o): Depend on $(TARGET_H).
13454
13455         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
13456         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
13457
13458         * doc/extend.texi (Floating Types): New node.  Document __float80 and
13459         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
13460
13461 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
13462
13463         PR target/32506
13464         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
13465         predicate instead of target_operand.
13466         (divsi3_i1_media, divsi3_media_2): Likewise.
13467
13468 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
13469
13470         * tree.h (alias_sets_might_conflict_p): Rename into
13471         alias_sets_must_conflict_p.
13472         * alias.c (alias_sets_might_conflict_p): Likewise.
13473         (alias_sets_conflict_p): Use it.
13474         (objects_must_conflict_p): Likewise.
13475         * c-common.c (strict_aliasing_warning): Adjust.
13476
13477 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13478
13479         * rtlhooks.c (gen_lowpart_if_possible): Check for
13480         invalid subreg before calling gen_lowpart_SUBREG.
13481
13482 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
13483
13484         * config/darwin9.h: Add copyright notice.
13485         (LINK_COMMAND_SPEC): Add comment.
13486         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
13487         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
13488         DARWIN_LIBSYSTEM_HAS_UNWIND.
13489
13490 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
13491
13492         PR libgomp/32468
13493         * omp-low.c (check_combined_parallel): New function.
13494         (lower_omp_parallel): Call it via walk_stmts, set
13495         OMP_PARALLEL_COMBINED if appropriate.
13496         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
13497         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
13498         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
13499         don't consider it as combined parallel.
13500
13501 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
13502
13503         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
13504         (gcc_tooldir): Likewise.
13505         * configure: Regenerate.
13506         * Makefile.in (libsubdir_to_prefix): New variable, based on the
13507         old configure.ac gcc_tooldir setting.
13508         (prefix_to_exec_prefix): New variable.
13509         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
13510         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
13511
13512 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
13513
13514         Fix PR tree-optimization/32583
13515         Fix PR tree-optimization/32584
13516         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
13517         (phi_translate_set): Use phi_translate directly now.
13518         (make_values_for_stmt): Don't value number RHS if we already know
13519         it is constant.
13520
13521 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
13522             Jim Wilson <wilson@specifix.com>
13523
13524         PR target/31684
13525         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
13526         copy_insn.
13527
13528 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
13529             Richard Sandiford  <richard@codesourcery.com>
13530             Nigel Stephens  <nigel@mips.com>
13531
13532         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
13533         (mips16e_output_save_restore): Declare.
13534         (mips16e_save_restore_pattern_p): Likewise.
13535         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
13536         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
13537         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
13538         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
13539         (BITSET_P): New global macro, extracted from...
13540         (mips_for_each_saved_reg): ...here.
13541         (mips16e_save_restore_info): New struct.
13542         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
13543         (mips16e_save_restore_regs): New variable.
13544         (mips_split_plus, mips16e_find_first_register): New functions.
13545         (mips16e_mask_registers): New function.
13546         (compute_frame_size): Expand the commentary before the function.
13547         Enforce the MIPS16e save and restore register range restrictions.
13548         Pad the general register save area at the low end.
13549         (mips16e_save_restore_reg, mips16e_build_save_restore)
13550         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
13551         (mips16e_output_save_restore, mips16e_collect_propagate_value)
13552         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
13553         New functions.
13554         (mips_expand_prologue, mips_expand_epilogue): Handle
13555         GENERATE_MIPS16E_SAVE_RESTORE.
13556         * config/mips/mips.md (*mips16e_save_restore): New pattern.
13557
13558 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
13559
13560         PR tree-optimization/31966
13561         PR tree-optimization/32533
13562         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
13563         "basic_block" description as its third argument.  Update function
13564         calls to get destination bb from "edge" argument.  Save "cond" into
13565         aux field of the edge.  Update prototype for changed arguments.
13566         (if_convertible_loop_p): Clear aux field of incoming edges if bb
13567         contains phi node.
13568         (find_phi_replacement_condition): Operate on incoming edges, not
13569         on predecessor blocks.  If there is a condition saved in the
13570         incoming edge aux field, AND it with incoming bb predicate.
13571         Return source bb of the first edge.
13572         (clean_predicate_lists): Clean aux field of outgoing node edges.
13573         (tree_if_conversion): Do not initialize cond variable. Move
13574         variable declaration into the loop.
13575         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
13576         initializations of new_stmt, arg0 and arg1 variables.
13577
13578 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
13579
13580         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
13581         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
13582
13583 2007-07-02  Richard Guenther  <rguenther@suse.de>
13584
13585         * tree-ssa.c (useless_type_conversion_p): Document
13586         future intent as defining the middle-end type system.
13587         Re-structure to call langhook last, group by type class,
13588         mark questionable parts.
13589
13590 2007-07-02  Richard Guenther  <rguenther@suse.de>
13591
13592         * tree-flow.h (types_compatible_p): Declare.
13593         * tree-ssa.c (types_compatible_p): New function.
13594         * ipa-type-escape.c (discover_unique_type): Use
13595         types_compatible_p instead of lang_hooks.types_compatible_p.
13596         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
13597         * tree-vn.c (expressions_equal_p): Likewise.
13598         * tree.c (fields_compatible_p): Likewise.
13599         * tree-ssa-dom.c (avail_expr_eq): Likewise.
13600         (cprop_operand): Use useless_type_conversion_p instead of
13601         lang_hooks.types_compatible_p.
13602         * tree-inline.c (setup_one_parameter): Likewise.
13603         (declare_return_variable): Likewise.
13604         * tree-nrv.c (tree_nrv): Likewise.
13605         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
13606         (maybe_fold_offset_to_component_ref): Likewise.
13607         (maybe_fold_offset_to_reference): Likewise.
13608         * tree-ssa-copy.c (may_propagate_copy): Likewise.
13609         (merge_alias_info): Likewise.
13610         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
13611         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
13612         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
13613         * tree-tailcall.c (find_tail_calls): Likewise.
13614         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
13615         * gimplify.c (canonicalize_addr_expr): Likewise.
13616         (fold_indirect_ref_rhs): Likewise.
13617         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
13618         (cpt_same_type): Likewise.
13619         (check_pointer_types_r): Swap parameters to cpt_same_type
13620         where appropriate.
13621         * fold-const.c (fold_convert): Revert fix for PR15988.
13622         * tree-inline.c (setup_one_parameter): Instead fix it here by
13623         using fold_build1 instead of fold_convert and checking for
13624         error_mark_node.  Convert only if the conversion is necessary.
13625
13626 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
13627
13628         * configure.ac: Check for .gnu_attribute on Power.
13629         * configure: Regenerate.
13630         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
13631         attribute for floating-point ABI.
13632
13633 2007-07-02  Ira Rosen  <irar@il.ibm.com>
13634
13635         PR tree-optimization/32230
13636         PR tree-optimization/32477
13637         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
13638         address is a constant.
13639
13640 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
13641
13642         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
13643         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
13644         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
13645         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
13646         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
13647         64-bit targets.  Add support for *-elfoabi*.
13648         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
13649         different settings if $(tm_defines) does not select the EABI.
13650         (MULTILIB_EXCLUSIONS): Define in those circumstances.
13651         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
13652         (MIPS_ARCH_OPTION_SPEC): Likewise.
13653         (MIPS_ISA_LEVEL_SPEC): Likewise.
13654         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
13655         * config/mips/elfoabi.h: New file.
13656
13657 2007-07-02  Richard Guenther  <rguenther@suse.de>
13658
13659         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
13660         (useless_type_conversion_p): ... this.
13661         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
13662         (useless_type_conversion_p): ... this.
13663         * builtins.c (fold_builtin_memory_op): Rename
13664         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
13665         * tree-cfg.c (verify_expr): Likewise.
13666         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
13667         * tree-ssa-ccp.c (ccp_fold): Likewise.
13668         * tree-ssa-copy.c (may_propagate_copy): Likewise.
13669         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
13670         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
13671         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
13672         * tree-ssa-pre.c (eliminate): Likewise.
13673         * tree-ssa.c (delete_tree_ssa): Likewise.
13674         (tree_ssa_useless_type_conversion): Likewise.
13675         * tree.c (build2_stat): Likewise.
13676
13677 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
13678
13679         Fix PR tree-optimization/32571
13680         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
13681         simplifying them.
13682
13683 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
13684
13685         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
13686         and other expected operations explicitly, change default to
13687         gcc_unreachable. 
13688
13689 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13690
13691         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
13692         PARALLEL.
13693         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
13694         (tls_load_dot_plus_eight): Move the label number into the unspec.
13695         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
13696
13697 2007-07-01  Andreas Schwab  <schwab@suse.de>
13698
13699         * dwarf2out.c (initial_return_save): Define only if used.
13700
13701 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
13702
13703         Unreverting Richard's Revert of:
13704
13705         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
13706
13707         * dce.c (deletable_insn_p_1): New function, split out from...
13708         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
13709         specially, not those inside PARALLELs.  Remove BODY argument
13710         and adjust recursive call accordingly.
13711         (prescan_insns_for_dce): Update call to delete_insn_p.
13712
13713 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
13714             Revital Eres  <eres@il.ibm.com>
13715
13716         * ddg.c (create_ddg_all_sccs): Fix missed
13717         initialization of scc_nodes.
13718
13719 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
13720
13721         PR middle-end/32559
13722         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
13723         X + ~X to 1 only for INTEGRAL_TYPE_P type.
13724
13725 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
13726
13727         * configure.ac: Check for .gnu_attribute on MIPS.
13728         * configure, config.in: Regenerate.
13729         * config/mips/mips.c (mips_file_start): If supported, output
13730         attribute for floating-point ABI.
13731
13732 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
13733
13734         PR target/32433
13735         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
13736         (ffs_cmove): New expander to expand using ctz pattern.
13737         (*ffs_cmove): Remove pattern.
13738         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
13739         (ffsdi2): Expand using ctz pattern.
13740         (*ffs_rex64): Remove pattern.
13741
13742 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13743
13744         PR rtl-optimization/32296
13745         * pa.md (return): Delete pattern.
13746         (return_internal): Remove "(const_int 1)" from pattern.
13747         (epilogue): Use return_internal pattern for trivial returns.
13748         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
13749         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
13750
13751 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
13752
13753         * tree-ssa-pre.c (is_exception_related): New function
13754         (can_value_number_operation): Use it.
13755
13756 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
13757         
13758         Fix PR tree-optimization/32540
13759         Fix PR tree-optimization/31651
13760
13761         * tree-ssa-sccvn.c: New file.
13762
13763         * tree-ssa-sccvn.h: Ditto.
13764         
13765         * tree-vn.c: Include tree-ssa-sccvn.h
13766         (val_expr_paid_d): Removed.
13767         (value_table): Ditto.
13768         (vn_compute): Ditto.
13769         (val_expr_pair_hash): Ditto.
13770         (val_expr_pair_expr_eq): Ditto.
13771         (copy_vuses_from_stmt): Ditto.
13772         (vn_delete): Ditto.
13773         (vn_init): Ditto.
13774         (shared_vuses_from_stmt): Ditto.
13775         (print_creation_to_file): Moved up.
13776         (sort_vuses): Ditto.
13777         (sort_vuses_heap): Ditto.
13778         (set_value_handle): Make non-static.
13779         (make_value_handle): Ditto.
13780         (vn_add): Rewritten to use sccvn lookups.
13781         (vn_add_with_vuses): Ditto.
13782         (vn_lookup): Ditto (and second argument removed).
13783         (vn_lookup_with_vuses): Ditto.
13784         (vn_lookup_or_add): Ditto (and second argument removed);
13785         (vn_lookup_or_add_with_vuses): Ditto.
13786         (vn_lookup_with_stmt): New.
13787         (vn_lookup_or_add_with_stmt): Ditto.
13788         (create_value_handle_for_expr): Ditto.
13789
13790         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
13791         (seen_during_translate): New function.
13792         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
13793         (phi_trans_add): Ditto.
13794         (constant_expr_p): FIELD_DECL is always constant.
13795         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
13796         Use constant_expr_p.
13797         Avoid infinite recursion on mutually valued expressions.
13798         Change callers of vn_lookup_or_add.
13799         (phi_translate): New function.
13800         (compute_antic_safe): Allow phi nodes.
13801         (create_component_ref_by_pieces): Update for FIELD_DECL change.
13802         (find_or_generate_expression): Rewrite slightly.
13803         (create_expression_by_pieces): Updated for vn_lookup_or_add
13804         change.
13805         Update VN_INFO for new names.
13806         (insert_into_preds_of_block): Update for new names.
13807         (add_to_exp_gen): New function.
13808         (add_to_sets): Use vn_lookup_or_add_with_stmt.
13809         (find_existing_value_expr): Rewrite to changed vn_lookup.
13810         (create_value_expr_from): Ditto, and use add_to_exp_gen.
13811         (try_look_through_load): Removed.
13812         (try_combine_conversion): Ditto.
13813         (get_sccvn_value): New function.
13814         (make_values_for_phi): Ditto.
13815         (make_values_for_stmt): Ditto.
13816         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
13817         SCCVN.
13818         (init_pre): Update for SCCVN changes.
13819         (fini_pre): Ditto.
13820         (execute_pre): Ditto.
13821
13822         * tree-flow.h (make_value_handle): Declare.
13823         (set_value_handle): Ditto.
13824         (sort_vuses_heap): Ditto.
13825         (vn_lookup_or_add_with_stmt): Ditto.
13826         (vn_lookup_with_stmt): Ditto.
13827         (vn_compute): Remove.
13828         (vn_init): Ditto.
13829         (vn_delete): Ditto.
13830         (vn_lookup): Update arguments.
13831
13832         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
13833         (tree-vn.o): Ditto.
13834         (tree-ssa-sccvn.o): New.
13835         (OBJS-common): Add tree-ssa-sccvn.o
13836         
13837 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13838
13839         PR c/4076
13840         * c-typeck.c (build_external_ref): Don't mark as used if called
13841         from itself.
13842         * calls.c (rtx_for_function_call): Likewise.
13843         
13844 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
13845
13846         Revert:
13847
13848         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
13849
13850         * dce.c (deletable_insn_p_1): New function, split out from...
13851         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
13852         specially, not those inside PARALLELs.  Remove BODY argument
13853         and adjust recursive call accordingly.
13854         (prescan_insns_for_dce): Update call to delete_insn_p.
13855
13856 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
13857
13858         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
13859         (try_combine): Move potential calls to undo_all() so they happen
13860         before we commit to using the combined insns.
13861
13862 2006-06-30  Jan Hubicka  <jh@suse.cz>
13863
13864         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
13865         code.
13866
13867 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
13868
13869         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
13870         (cgraph_remove_unreachable_nodes): Likewise.
13871         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
13872         * ipa-inline.c (update_caller_keys): Cast according to the coding
13873         conventions.
13874         (cgraph_decide_recursive_inlining): Likewise.
13875         (cgraph_decide_inlining_of_small_function): Likewise.
13876         (try_inline): Likewise.
13877         (cgraph_decide_inlining_incrementally): Likewise.
13878         * ipa-pure-const.c (get_function_state): Likewise.
13879         (scan_function): Likewise.
13880         (analyze_function): Likewise.
13881         (static_execute): Likewise.
13882         * ipa-reference.c (scan_for_static_refs): Likewise.
13883         (merge_callee_local_info): Likewise.
13884         (analyze_function): Use type safe memory macros.
13885         (static_execute): Likewise. Cast according to the coding conventions.
13886         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
13887         conventions.
13888         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
13889         names.
13890         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
13891         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
13892         variable names.
13893
13894 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13895
13896         PR middle-end/30024
13897         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
13898         for complex modes (both int and real).
13899
13900 2007-06-29  Jan Hubicka  <jh@suse.cz>
13901
13902         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
13903
13904 2007-06-29  Jan Hubicka  <jh@suse.cz>
13905
13906         PR middle-end/32372
13907         * cse.c (cse_insn): Avoid invalid sharing in between register note and
13908         the insn pattern.
13909
13910 2007-06-29  Anatoly Sokolov <aesok@post.ru>
13911
13912         PR target/32335
13913         * config/avr/avr.c: Include dataflow header file.
13914         (expand_prologue): Adjust for prologue insn change.
13915         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
13916         inside a insn.
13917
13918 2007-06-29  Richard Guenther  <rguenther@suse.de>
13919
13920         PR middle-end/32493
13921         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
13922         during type verification.
13923
13924 2007-06-29  Jan Hubicka  <jh@suse.cz>
13925
13926         * recog.c (validate_change_rtx_1): Unshare TO argument.
13927
13928 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
13929
13930         PR tree-optimization/24659
13931         * tree-vect-transform.c (vectorizable_call): Handle
13932         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
13933
13934         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
13935         * config/i386/i386.c (enum ix86_builtins)
13936         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
13937         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
13938         description.
13939         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
13940         const using def_builtin_const.
13941         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
13942         input operands in the same modes as the result.
13943         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
13944
13945 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
13946
13947         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
13948         (df_set_dead_notes_for_mw): Likewise.
13949
13950 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
13951
13952         * c-common.c (pointer_int_sum): Do the negation in sizetype.
13953
13954 2007-06-28  DJ Delorie  <dj@redhat.com>
13955
13956         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
13957
13958 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
13959
13960         * doc/invoke.texi (C++ Dialect Options): Document
13961         fvisibility-ms-compat.
13962         * c.opt (fvisibility-ms-compat): New.
13963
13964 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13965
13966         PR tree-opt/32417
13967         * tree-affine.c (aff_combination_add_elt): Handle
13968         pointer addition specially.
13969
13970 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
13971
13972         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
13973         decl is non-external for AIX ABI.
13974
13975 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
13976
13977         * config/rs6000/predicates.md (current_file_function_operand):
13978         Ensure the symbol is non-external for AIX ABI.
13979
13980 2007-06-28  Nick Clifton  <nickc@redhat.com>
13981
13982         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
13983         (fdce, fdse, fpredictive-commoning): Likewise.
13984
13985 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
13986
13987         PR other/31400
13988         * gcc.c (process_command): Recognize the new -static-libgfortran
13989         option.
13990
13991 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13992
13993         PR target/32418
13994         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
13995         Use a call clobbered hard reg instead of a pseudo reg.
13996
13997 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
13998
13999         * config/sh/sh.md (load_gbr): Use correct operand constraint.
14000
14001 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
14002
14003         PR target/32479
14004         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
14005         REG_LIBCALL and REG_RETVAL notes.
14006         (divsi3, mulsi3): Likewise.
14007         (mulhisi3): Likewise.  Use emit_libcall_block.
14008         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
14009
14010 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
14011
14012         PR rtl-optimization/32481
14013         * combine.c (adjust_for_new_dest): Rescan the changed insn.
14014
14015 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
14016
14017         * dce.c (deletable_insn_p_1): New function, split out from...
14018         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
14019         specially, not those inside PARALLELs.  Remove BODY argument
14020         and adjust recursive call accordingly.
14021         (prescan_insns_for_dce): Update call to delete_insn_p.
14022
14023 2007-06-27  Richard Guenther  <rguenther@suse.de>
14024
14025         PR middle-end/32492
14026         * tree.h (fold_convertible_p): Declare.
14027         * fold-const.c (fold_convertible_p): New function.
14028         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
14029         instead of lang_hooks.types_compatible_p.
14030
14031 2007-06-26  Jan Hubicka  <jh@suse.cz>
14032
14033         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
14034         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
14035         early use validate_unshare_change.
14036         (reload_combine): Likewise.
14037         * recog.c (change_t): New field unshare.
14038         (validate_change_1): Rename from validate_change; add argument unshare.
14039         (validate_change): Turn into wrapper of validate_change_1; update
14040         prototype for bools.
14041         (validate_unshare_change): New.
14042         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
14043         calls of df_insn_rescan.
14044         * recog.h (validate_change): Replace ints by bools.
14045         (validate_unshare_change): Declare.
14046
14047 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
14048
14049         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
14050         
14051 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
14052
14053         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
14054
14055 2007-06-25  Jan Hubicka  <jh@suse.cz>
14056
14057         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
14058         uninlinable call.
14059         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
14060         cgraph_decide_inlining_incrementally): Move uninlinability checks to
14061         places other call site specific checks are performed.
14062
14063 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14064
14065         PR tree-opt/32421
14066         * tree-vect-transform.c (vectorizable_operation): Convert
14067         POINTER_PLUS_EXPR over to PLUS_EXPR.
14068
14069 2007-06-25  Chao-ying Fu  <fu@mips.com>
14070
14071         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
14072         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
14073         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
14074         Document GET_MODE_IBIT, and GET_MODE_FBIT.
14075
14076         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
14077         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
14078         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
14079         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
14080         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
14081         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
14082         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
14083         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
14084         ALL_FIXED_POINT_MODE_P): New define.
14085         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
14086         MODE_UACCUM.
14087         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
14088
14089         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
14090         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
14091         MODE_VECTOR_UACCUM): New mode classes.
14092
14093         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
14094         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
14095         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
14096         USA, UDA, and UTA.
14097
14098         * genmodes.c (struct mode_data): Add ibit and fbit fields.
14099         (blank_mode): Initialize ibit and fbit.
14100         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
14101         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
14102         MODE_UACCUM.
14103         (new_adjust): Change required_class to required_class_from and
14104         required_class_to for testing within a range.
14105         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
14106         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
14107         MODE_VECTOR_UACCUM.
14108         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
14109         (make_fixed_point_mode): New.
14110         (_ADD_ADJUST): Change C to C1 and C2.
14111         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
14112         use a range for machine classes.
14113         (ADJUST_IBIT, ADJUST_FBIT): New.
14114         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
14115         CONST_MODE_FBIT.
14116         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
14117         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
14118         Emit adjustment for ibit and fbit.
14119         (emit_mode_ibit, emit_mode_fbit): New.
14120         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
14121
14122 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
14123
14124         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
14125         as the source of the set.
14126
14127 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
14128
14129         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
14130         FP_REGNO_P): Use IN_RANGE.
14131         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
14132         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
14133         (DATA_REG_P): Use DATA_REGNO_P.
14134         (FP_REG_P): Use FP_REGNO_P.
14135         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
14136         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
14137         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
14138
14139 2007-06-24  Jan Hubicka  <jh@suse.cz>
14140
14141         PR middle-end/30563
14142         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
14143
14144 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
14145
14146         PR middle-end/32461
14147         * fold-const.c (fold_binary): Strip nops of operand 0
14148         of BIT_NOT_EXPR before calling operand_equal_p.
14149         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
14150         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
14151
14152 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
14153
14154         * doc/extend.texi: Document that dllimport and dllexport imply
14155         default visibility.
14156         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
14157         imported or exported declaration, including type declarations.
14158         * c-common.c (handle_visibility_attribute): Check for conflicts
14159         with dllimport/dllexport.
14160         (c_determine_visibility): Handle dllimport/dllexport as an
14161         explicit visibility atttribute.
14162
14163 2007-06-23  Richard Guenther  <rguenther@suse.de>
14164
14165         PR tree-optimization/16876
14166         PR middle-end/29478
14167         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
14168         for CALL_EXPRs.
14169         * tree-inline.c (initialize_inlined_parameters): Do not call
14170         lang_hooks.tree_inlining.convert_parm_for_inlining.
14171         * cgraphbuild.c (initialize_inline_failed): Set inline failed
14172         reason for mismatched types.
14173         * gimplify.c (gimplify_call_expr): Verify the call expression
14174         arguments match the called function type signature.  Otherwise
14175         mark the call expression to be not considered for inlining
14176         using CALL_CANNOT_INLINE_P flag.
14177         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
14178         edges call expression.
14179         (cgraph_decide_inlining_of_small_function): Likewise.
14180         (cgraph_decide_inlining): Likewise.
14181         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
14182         Remove define.
14183         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
14184         * c-typeck.c (c_convert_parm_for_inlining): Remove.
14185         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
14186         Remove declaration.
14187         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
14188         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
14189         Remove.
14190         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
14191         convert_parm_for_inlining member.
14192
14193 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
14194
14195         PR target/31152
14196         * arm.md (negscc): Match the correct operand for optimized LT0 test.
14197         Remove optimization for GT.
14198
14199 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
14200
14201         PR middle-end/32437
14202         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
14203         is a PARALLEL.
14204         (prescan_insns_for_dce): Add extra parameter.
14205         
14206 2007-06-23  Jan Hubicka  <jh@suse.cz>
14207
14208         PR middle-end/31541
14209         * gimplify.c (mark_addressable): New function.
14210         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
14211
14212 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
14213
14214         PR middle-end/32374
14215         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
14216
14217 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
14218
14219         PR target/32413
14220         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
14221         moves between MMX/SSE registers to at least 8 units to prevent
14222         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
14223
14224 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
14225
14226         * config/i386/i386.c (override_options): Correct x86_sahf
14227         setting condition.
14228
14229 2007-06-21  David Daney  <ddaney@avtrex.com>
14230
14231         PR target/32406
14232         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
14233         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
14234         (exception_receiver): Renamed to ...
14235         (nonlocal_goto_receiver): ... this.
14236
14237 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
14238
14239         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
14240         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
14241         partial register accesses.
14242
14243 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
14244
14245         * fold-const.c (debug_fold_checksum): Move it under
14246         ENABLE_FOLD_CHECKING.
14247
14248 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
14249
14250         PR middle-end/20623
14251         * tree.h (debug_fold_checksum): Declared.
14252         * fold-const.c (build_fold_addr_expr_with_type_1): New.
14253         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
14254         build_fold_addr_expr_with_type_1.
14255         (fold_addr_expr, debug_fold_checksum): New.
14256         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
14257         (fold_unary, fold_comparison, split_address_to_core_and_offset):
14258         Use fold_addr_expr.
14259         
14260 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
14261
14262         PR tree-optimization/19590
14263         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
14264         of scev is a constant.
14265
14266 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
14267
14268         * df-problems.c (df_note_bb_compute): Made computation of live
14269         info consistent with df_lr.
14270
14271 2007-06-21  Richard Guenther  <rguenther@suse.de>
14272
14273         PR tree-optimization/32453
14274         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
14275         for pointer anti-range.
14276
14277 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
14278
14279         * config/i386/i386.c (processor_target_table): Increase maximum
14280         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
14281         default 64bit.
14282
14283         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
14284         byte alignment if > 8 byte alignment is preferred.
14285         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
14286
14287 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
14288
14289         PR tree-optimization/31866
14290         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
14291         if ASM_EXPR's input is not a SSA_NAME.
14292
14293         PR middle-end/32362
14294         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
14295         but decl is a global var, instead return decl.
14296         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
14297         even for is_global_var decls, if they are private in some outer
14298         context.
14299
14300 2007-06-21  Richard Guenther  <rguenther@suse.de>
14301
14302         PR tree-optimization/32451
14303         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
14304
14305 2007-06-21  Christian Bruel  <christian.bruel@st.com>
14306
14307         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
14308         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
14309         (push_regs): Changed saving order or banked registers.
14310         (sh_expand_epilogue): Likewise.
14311         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
14312         (FIRST_BANKED_REG): Likewise.
14313         (LAST_BANKED_REG): Likewise.
14314         * config/sh/sh.md (banked) New attribute.
14315         (in_delay_slot): Check banked attribute.
14316         
14317 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
14318
14319         PR tree-optimization/32075
14320         * tree-data-ref.c (subscript_dependence_tester_1, 
14321         analyze_miv_subscript, analyze_overlapping_iterations,
14322         add_distance_for_zero_overlaps, build_classic_dist_vector,
14323         subscript_dependence_tester_1, analyze_overlapping_iterations,
14324         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
14325         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
14326         to evolution_function_is_affine_multivariate_p.
14327
14328 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
14329
14330         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
14331
14332 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14333
14334         PR target/32335
14335         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
14336         for TARGET_A16.
14337         * config/m32c/prologue.md (epilogue_exitd_16): New.
14338         (epilogue_reit_16): New.
14339         (epilogue_exitd): Rename to epilogue_exitd_24.
14340         (epilogue_reit): Rename to epilogue_reit_24.
14341
14342 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
14343             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14344
14345         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
14346         New counters.
14347         * haifa-sched.c (queue_to_ready): Don't requeue next insn
14348         if dbg_cnt (sched_insn) reaches the limit.
14349         (choose_ready): New parameter INSN_PTR and new return value.
14350         (schedule_block): Handle dbg_cnt (sched_insn). Handle
14351         the new return value from choose_ready.
14352         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
14353         (rest_of_handle_global_alloc): New global_alloc_at_func.
14354
14355 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
14356
14357         PR tree-optimization/25737
14358         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
14359         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
14360         * tree-flow.h (struct fieldoff): Add new field alias_set.
14361         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
14362         argument addressable_type.  Set alias_set of fieldoff.
14363         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
14364         (create_overlap_variables_for): Pass alias_set from fieldoff to
14365         create_sft.
14366         * alias.c (get_alias_set): Use alias_set from SFT if set.
14367
14368 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
14369
14370         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
14371         of a variable as an unsigned HOST_WIDE_INT integer.
14372
14373 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
14374
14375         PR rtl-optimization/32405
14376         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
14377
14378 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
14379
14380         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
14381
14382         PR middle-end/31959
14383         * builtins.c: Include diagnostic.h.
14384         (expand_builtin_expect): Make gcc_assert more permissive.
14385         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
14386
14387         PR inline-asm/32109
14388         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
14389         and !allows_mem.
14390
14391         PR middle-end/32285
14392         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
14393         if ACCUMULATE_OUTGOING_ARGS.
14394
14395 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14396
14397         * config/m68hc11/m68hc11.c: Include dataflow header file.
14398         (m68hc11_reorg): Port to dataflow.
14399
14400 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
14401
14402         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
14403         (struct df_problem.free_blocks_on_set_blocks): New field.
14404         (struct dataflow.optional_p): New field.
14405         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
14406         (df_live_set_all_dirty): New function.
14407         * df-scan.c (df_scan_alloc): Initialize optional_p.
14408         (problem_SCAN): Initialize free_blocks_on_set_blocks.
14409         * df-core.c (df_set_blocks): Removed use of
14410         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
14411         df_problem.free_blocks_on_set_blocks to determine which blocks are
14412         recycled.
14413         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
14414         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
14415         uses dataflow.optional_p to determine if problem should be
14416         deleted.
14417         (rest_of_handle_df_initialize): Only start live problem if 
14418         -02 or above.
14419         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
14420         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
14421         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
14422         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
14423         problem_NOTE): Initialize free_blocks_on_set_blocks.
14424         (df_lr_bb_local_compute): Recompute luids if df_live problem is
14425         not active.
14426         (df_live_set_all_dirty, df_note_alloc): New function.
14427         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
14428         df_get_live_*.
14429         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
14430         * postreload.c (reload_combine): Ditto.
14431         * cse.c (cse_extended_basic_block): Ditto.
14432         * regmove.c (mark_flags_life_zones): Ditto.
14433         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
14434         erase_matching_seqs): Ditto.
14435         * bt-load.c (compute_defs_uses_and_gen): Ditto.
14436         * integrate (allocate_initial_values): Ditto.
14437         * combine.c (reg_dead_at_p): Ditto.
14438         * resource.c (mark_target_live_regs): Ditto.
14439         * sched-rgn.c (check_live_1, update_live_1): Ditto.
14440         * config/sh/sh.c (find_r0_life_regions): Ditto.
14441         * global.c (rest_of_handle_global_alloc): Only add back df_live
14442         for -O > 1.
14443         * local-alloc.c (rest_of_handle_local_alloc): Only remove
14444         df_live for -O > 1.
14445         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
14446         df_get_live_*.
14447         (if_convert): Make sure df_live is there at -O == 1.
14448         (pass_if_after_combine): Cleanup flags.
14449         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
14450         is there at -O == 1.
14451         
14452 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
14453
14454         * config/arm/arm.c (arm_get_frame_offsets): Set
14455         offsets->locals_base to avoid negative stack size.
14456         (thumb1_expand_prologue): Assert on negative stack size.
14457
14458 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
14459
14460         PR tree-optimization/32367
14461         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
14462         of the chrec has no evolution in that loop.
14463         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
14464
14465 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
14466
14467         * config/xtensa/xtensa.c: Include "df.h".
14468         (xtensa_builtin_saveregs): Use adjust_address instead of
14469         change_address.
14470         (xtensa_va_start): Invoke make_tree with sizetype for
14471         expand_builtin_saveregs and then convert the result to a pointer.
14472         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
14473         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
14474         Subtract argument size from index value as integers and then use
14475         POINTER_PLUS_EXPR to add the result to the array address.
14476         
14477 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14478
14479         PR target/32335
14480         * config/m32c/m32c.c: Include dataflow header file.
14481         (m32c_emit_prologue): Adjust for prologue insn change.
14482         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
14483         once inside a PARALLEL. Assume frame size passed in operand 0
14484         includes space to save the fb register.
14485         (prologue_enter_24): Likewise.
14486         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
14487
14488 2007-06-19  David Daney  <ddaney@avtrex.com
14489
14490         PR target/32313
14491         * config/mips/mips.md (cprestore): Mark $gp as used.
14492
14493 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14494
14495         PR target/32369
14496         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
14497         (frv_ifcvt_modify_insn): Likewise.
14498
14499 2007-06-19  Richard Guenther  <rguenther@suse.de>
14500
14501         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
14502         only handle positive offsets that fit in a HOST_WIDE_INT.
14503
14504 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
14505
14506         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
14507         result of rsqrt insn for zero input argument to avoid NaN.
14508
14509 2007-06-19  Richard Guenther  <rguenther@suse.de>
14510
14511         PR middle-end/31950
14512         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
14513
14514 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
14515
14516         PR tree-optimization/32353
14517         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
14518
14519 2007-06-19  Nick Clifton  <nickc@redhat.com>
14520
14521         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
14522
14523 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
14524
14525         PR target/32389
14526         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
14527         * config/i386/i386.c (assign_386_stack_local): Assert that
14528         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
14529         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
14530         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
14531         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
14532
14533 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
14534
14535         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
14536
14537 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
14538
14539         PR rtl-optimization/32321
14540         * gcse.c (replace_store_insn): Update the note before
14541         calling emit_insn_after.
14542
14543 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
14544
14545         PR middle-end/32355
14546         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
14547         cse_main.
14548         * df-problems.c (df_note_bb_compute): Fix dumping info.
14549         
14550 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
14551
14552         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
14553         insn with emit_jump_insn.
14554
14555 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
14556
14557         PR tree-optimization/32383
14558         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
14559         * targhooks.h (default_builtin_reciprocal): Update prototype.
14560         * target.h (struct gcc_target): Update builtin_reciprocal.
14561         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
14562         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
14563         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
14564         when fndecl is in BUILT_IN_MD class.
14565         (execute_convert_to_rsqrt): Ditto.
14566
14567         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
14568         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
14569         Convert BUILT_IN_SQRTF code only  when md_fn is false.
14570
14571 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14572
14573         * bt-load.c (move_btr_def): Fix the order of arguments
14574         to validate_replace_rtx.
14575
14576 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
14577
14578         * config/m68k/m68k-devices.def: Add 54450..54455.
14579
14580 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
14581
14582         PR rtl-optimization/32366
14583         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
14584         FLOAT_EXTEND]: Prevent non-scalar modes from entering
14585         significand_size.
14586
14587 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
14588
14589         PR middle-end/32349
14590         * modulo-sched (generate_reg_moves): Added rescan parameter and if
14591         this is true, rescan insn being modified.
14592         (sms_schedule): Added rescan parameter.
14593         (rest_of_handle_sms): Moved freeing of dominance info to before
14594         getting out of cfg_layout.
14595         
14596 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
14597
14598         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
14599         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
14600         appropriate.
14601
14602         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
14603         FL_CF_EMAC from the entry for isac.
14604
14605         * config/m68k/predicates.md (const_call_operand): Adjust comment.
14606         (const_sibcall_operand): New.
14607         (sibcall_operand): Use it.
14608         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
14609         (m68k_isas): ISAC does not imply FPU or EMAC.
14610         (override_options): Add ISA_C logic for symbolic jump & call.
14611
14612 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
14613
14614         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
14615         return mode from the builtin itself.
14616         (sparc_fold_builtin): Fix cast of zero constant.
14617
14618 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
14619
14620         * targhooks.c (default_builtin_reciprocal): New default target hook.
14621         * targhooks.h (default_builtin_reciprocal): Add prototype.
14622         * hooks.c (hook_tree_tree_bool_null): Remove hook.
14623         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
14624         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
14625         default_builtin_reciprocal.
14626
14627 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
14628
14629         PR middle-end/31723
14630         * hooks.c (hook_tree_tree_bool_null): New hook.
14631         * hooks.h (hook_tree_tree_bool_null): Add prototype.
14632         * tree-pass.h (pass_convert_to_rsqrt): Declare.
14633         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
14634         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
14635         and convert it to reciprocal a*rfunc(b).
14636         (execute_convert_to_rsqrt): New function.
14637         (gate_convert_to_rsqrt): New function.
14638         (pass_convert_to_rsqrt): New pass definition.
14639         * target.h (struct gcc_target): Add builtin_reciprocal.
14640         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
14641         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
14642         TARGET_BUILTIN_RECIPROCAL.
14643         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
14644
14645         * config/i386/i386.h (TARGET_RECIP): New define.
14646         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
14647         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14648         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14649         and not optimizing for size.
14650         (*rcpsf2_sse): New insn pattern.
14651         (*rsqrtsf2_sse): Ditto.
14652         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
14653         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14654         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14655         and not optimizing for size.
14656         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
14657         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14658         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14659         and not optimizing for size.
14660         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
14661         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14662         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14663         and not optimizing for size.
14664         (*sse_rsqrtv4sf2): Do not export.
14665         (sqrtv4sf2): Ditto.
14666         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
14667         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14668         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14669         and not optimizing for size.
14670         (sqrtv4sf2): Ditto.
14671         * config/i386/i386.opt (mrecip): New option.
14672         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
14673         (ix86_emit_swsqrtsf): Ditto.
14674         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
14675         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
14676         builtin definition.
14677         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
14678         ix86_expand_unop1_builtin.
14679         (ix86_emit_swdivsf): New function.
14680         (ix86_emit_swsqrtsf): Ditto.
14681         (ix86_builtin_reciprocal): New function.
14682         (TARGET_BUILTIN_RECIPROCAL): Use it.
14683         (ix86_vectorize_builtin_conversion): Rename from
14684         ix86_builtin_conversion.
14685         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
14686         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
14687         "i386 and x86_64 Options" section.
14688         (Intel 386 and AMD x86_64 Options): Document -mrecip.
14689
14690 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
14691             Zdenek Dvorak <dvorakz@suse.cz>
14692             Richard Guenther  <rguenther@suse.de>
14693             Kaz Kojima  <kkojima@gcc.gnu.org>
14694
14695         * tree-vrp.c (compare_values_warnv): Convert val2 to
14696         the type of val1.
14697         (extract_range_from_assert): Create
14698         POINTER_PLUS_EXPR for pointer types.
14699         (extract_range_from_binary_expr): Handle
14700         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
14701         for pointer types.
14702         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
14703         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
14704         POINTER_PLUS_EXPR as PLUS_EXPR.
14705         (number_of_iterations_lt_to_ne):
14706         For pointer types, use sizetype when
14707         creating MINUS_EXPR/PLUS_EXPRs.
14708         (assert_loop_rolls_lt): For pointer types, use sizetype when
14709         creating MINUS_EXPR/PLUS_EXPRs.
14710         (number_of_iterations_le): Likewise.
14711         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
14712         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
14713         like PLUS_EXPR and MINUS_EXPR.
14714         * tree-pretty-print.c (dump_generic_node): Handle
14715         POINTER_PLUS_EXPR.
14716         (op_prio): Likewise.
14717         (op_symbol_1): Likewise.
14718         * optabs.c (optab_for_tree_code): Likewise.
14719         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
14720         specially.
14721         * tree-tailcall.c (process_assignment): Mention
14722         POINTER_PLUS_EXPR in a TODO comment.
14723         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
14724         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
14725         not used with a pointer and an integer type.
14726         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
14727         increment using chrec_convert_rhs instead of chrec_convert.
14728         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
14729         PLUS_EXPR except for the right hand side's type will be
14730         sizetype.
14731         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
14732         (fold_used_pointer_cast): Kill.
14733         (pointer_offset_p): Kill.
14734         (fold_used_pointer): Kill.
14735         (pointer_used_p): Kill.
14736         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
14737         call fold_used_pointer.
14738         (instantiate_parameters_1): Convert the increment
14739         using chrec_convert_rhs instead of chrec_convert.
14740         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
14741         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
14742         instead of PLUS_EXPR.
14743         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
14744         PLUS_EXPR for pointers.
14745         (std_gimplify_va_arg_expr): Likewise.
14746         (fold_builtin_memory_op): Likewise.
14747         (fold_builtin_strstr): Likewise.
14748         (fold_builtin_strchr): Likewise.
14749         (fold_builtin_strrchr): Likewise.
14750         (fold_builtin_strpbrk): Likewise.
14751         (expand_builtin_memory_chk): Likewise.
14752         (fold_builtin_memory_chk): Likewise.
14753         (std_expand_builtin_va_start): Use
14754         sizetype for the call to make_tree and then convert
14755         to the pointer type.
14756         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
14757         instead of PLUS_EXPR for adding to a pointer.
14758         (std_gimplify_va_arg_expr): Use fold_build2 for
14759         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
14760         the operands to sizetype first and then cast the BIT_AND_EXPR
14761         back to the pointer type.
14762         * fold-const.c (build_range_check): Handle pointer types
14763         specially.
14764         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
14765         of PLUS_EXPR's. Make sure the offset is converted to
14766         sizetype.
14767         (try_move_mult_to_index): Strip the NOPs from the offset.
14768         Remove code argument and replace all uses with PLUS_EXPR.
14769         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
14770         specially. Don't use a pointer type for MINUS_EXPR.
14771         (fold_unary): Handle for (T1)(X op Y),
14772         only p+ as that is the only as that can be handled for
14773         binary operators now.
14774         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
14775         POINTER_PLUS_EXPR.
14776         <case PLUS_EXPR>: Add folding of PTR+INT into
14777         PTR p+ INT.
14778         Don't call try_move_mult_to_index.
14779         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
14780         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
14781         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
14782         Don't call try_move_mult_to_index.
14783         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
14784         (tree_expr_nonzero_p): Likewise.
14785         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
14786         of PLUS_EXPR for the complex expression folding.
14787         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
14788         first chrec is a pointer type, then the second should
14789         be sizetype and not the first's type.
14790         For POINTER_PLUS_EXPR, use a different right hand side type.
14791         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
14792         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
14793         different right hand side type.
14794         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
14795         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
14796         instead of PLUS_EXPR.
14797         When either operand is zero, convert the other operand.
14798         (chrec_apply): Use chrec_convert_rhs
14799         on the argument x instead of chrec_convert.
14800         (reset_evolution_in_loop): For pointer types, the new_evol
14801         should be sizetype.
14802         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
14803         different right hand side type.
14804         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
14805         (chrec_convert_rhs): New function.
14806         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
14807         different right hand side type.
14808         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
14809         * tree-chrec.h (chrec_convert_rhs): New prototype.
14810         (build_polynomial_chrec): For pointer types, the right hand
14811         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
14812         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
14813         Remove subtraction case as it is always addition now.
14814         Make sure the offset is converted to sizetype.
14815         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
14816         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
14817         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
14818         PLUS_EXPR in pointer type.
14819         Handle POINTER_PLUS_EXPR.
14820         (tree_to_aff_combination): Likewise.
14821         (force_expr_to_var_cost): Likewise.
14822         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
14823         instead of PLUS_EXPR for pointers.
14824         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
14825         instead of PLUS_EXPR of pointer types.
14826         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
14827         as PLUS_EXPR.
14828         (check_va_list_escapes): Likewise.
14829         (check_all_va_list_escapes): Likewise.
14830         * dwarf2out.c (loc_descriptor_from_tree_1):
14831         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
14832         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
14833         (string_constant): Likewise.
14834         * tree-ssa-address.c (tree_mem_ref_addr): When adding
14835         the offset to the base, use POINTER_PLUS_EXPR.
14836         (add_to_parts): Convert the index to sizetype.
14837         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
14838         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
14839         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
14840         Offset only holds something for PLUS_EXPR.
14841         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
14842         a PLUS_EXPR.
14843         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
14844         and not PLUS_EXPR.
14845         (analyze_accesses_for_modify_stmt): Likewise.
14846         Remove comment about the type being integral type as it is
14847         wrong now.
14848         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
14849         PLUS_EXPR.
14850         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
14851         and not PLUS_EXPR.
14852         Correct the type which the artimentic is done in (is now
14853         sizetype).
14854         Reindent one loop.
14855         * tree-data-ref.c (split_constant_offset): Handle
14856         POINTER_PLUS_EXPR
14857         * tree-affine.c (tree_to_aff_combination): Likewise.
14858         * c-typeck.c (build_unary_op): For pointers create the increment
14859         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
14860         for pointers.
14861         * gimplify.c (gimplify_self_mod_expr): Create a
14862         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
14863         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
14864         * tree.def (POINTER_PLUS_EXPR): New tree code.
14865         * tree-predcom.c (ref_at_iteration): If we have a pointer
14866         type do the multiplication in sizetype.
14867         * tree-mudflap.c (mf_xform_derefs_1): Create a
14868         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
14869         * tree-ssa-forwprop.c 
14870         (forward_propagate_addr_into_variable_array_index):
14871         Don't expect there to be a cast for the index as that
14872         does not exist anymore.
14873         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
14874         instead of PLUS_EXPR.
14875         Don't check for the first operand of the POINTER_PLUS_EXPR
14876         was the index as it cannot be.
14877         Call forward_propagate_addr_into_variable_array_index with
14878         the SSA_NAME instead of the statement.
14879         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
14880         (compare_constant): Likewise.
14881         (copy_constant): Likewise.
14882         (compute_reloc_for_constant): Likewise.
14883         (output_addressed_constants): Likewise.
14884         (initializer_constant_valid_p): Likewise.
14885         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
14886         Convert the MIN/MAX of the inner type to the outer
14887         type before comparing them.
14888         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
14889         POINTER_PLUS_EXPR instead of PLUS_EXPR.
14890         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
14891         of PLUS_EXPR for pointers.
14892         * tree-inline.c (estimate_num_insns_1): Handle
14893         POINTER_PLUS_EXPR.
14894         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
14895         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
14896         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
14897         instead of PLUS_EXPR for the pointer increment statement.
14898         (vect_update_ivs_after_vectorizer): For pointer types, create
14899         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
14900         MULT_EXPR in sizetype.
14901         (vect_gen_niters_for_prolog_loop): Add a cast when creating
14902         byte_misalign.
14903         * tree-object-size.c (plus_expr_object_size): Handle
14904         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
14905         code which is trying to figure out which side is a pointer and 
14906         is the index.
14907         (check_for_plus_in_loops_1): Likewise.
14908         (check_for_plus_in_loops): Likewise.
14909         * c-common.c (pointer_int_sum): Create a
14910         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
14911         * tree-ssa-structalias.c (handle_ptr_arith): Handle
14912         only POINTER_PLUS_EXPR.  Removing all the extra
14913         code which is trying to figure out which side is a pointer and 
14914         is the index.
14915         * tree-cfg.c (verify_expr): Add extra checking for pointers and
14916         PLUS_EXPR and MINUS_EXPR.
14917         Also add checking to make sure the operands of POINTER_PLUS_EXPR
14918         are correct.
14919         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
14920         with make_tree, instead of a pointer type.
14921         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
14922         for pointers instead of PLUS_EXPR.
14923         (s390_gimplify_va_arg): Likewise.
14924         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
14925         instead of PLUS_EXPR when doing addition on pointer
14926         types.  Use sizetype for the second operand.
14927         (spu_gimplify_va_arg_expr): Likewise.
14928         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
14929         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
14930         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
14931         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
14932         for the pointer addition and also use size_int/sizetype
14933         for the offset.
14934         (ix86_gimplify_va_arg): Likewise.
14935         Perform BIT_AND_EXPR on sizetype arguments.
14936         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
14937         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
14938         for the pointer additions and also use size_int for the offsets.
14939         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
14940         additions and also use size_int for the offsets.  Perform
14941         BIT_AND_EXPR on sizetype arguments.
14942         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
14943         POINTER_PLUS_EXPR for pointers and create the
14944         BIT_AND_EXPR in sizetype.
14945         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
14946         instead of PLUS_EXPR for pointer addition.
14947         (rs6000_va_start): Likewise.
14948         Also use sizetype for the offset.
14949         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
14950         as PLUS_EXPR/MINUS_EXPR.
14951         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
14952         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
14953         Don't use BIT_AND_EXPR on a pointer type, convert the
14954         expression to sizetype first.
14955         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
14956         for pointers.
14957         (mips_gimplify_va_arg_expr): Likewise.
14958         Don't create BIT_AND_EXPR in a pointer type.
14959
14960 2007-06-15  Eric Christopher  <echristo@apple.com>
14961
14962         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
14963         (x86_64-*-darwin*): Ditto.
14964         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
14965         for above.
14966
14967 2007-06-15  Matthew Wilcox <matthew@wil.cx>
14968
14969         * doc/extend.texi: Document behavior of __attribute__((aligned))
14970         on typedefs.
14971
14972 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
14973
14974         * rtlanal.c (note_stores): Improve documentation.
14975
14976 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
14977
14978         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
14979         LOCAL_LABEL_PREFIX): Delete.
14980         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
14981         (bfin_internal_label): Delete.
14982
14983 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
14984
14985         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
14986         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
14987         otherwise define to LIBGCC2_TF_CEXT.
14988         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
14989         (LIBGCC_TF_CEXT): Ditto.
14990         (TF_SIZE): Ditto.
14991
14992 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
14993
14994         PR rtl-optimization/32339
14995         * df-scan.c (df_uses_record): Don't modify flags but just add to
14996         it for df_ref_record.
14997
14998 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14999
15000         * tree-mudflap.c: Fix whitespace issues.
15001
15002 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
15003
15004         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
15005
15006 2007-06-14  Eric Christopher  <echristo@apple.com>
15007
15008         * config/i386/sse.md (movdi_to_sse): Rewrite body.
15009         (movv4sf): Use gcc_unreachable instead of abort.
15010
15011 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
15012
15013         PR target/32268
15014         * config/i386/sfp-machine.h (CMPtype): New define.
15015         (mach stubs): Use CMPtype instead of int as a return type.
15016
15017 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
15018
15019         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
15020         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
15021         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
15022         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
15023         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
15024         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
15025         config/soft-fp/soft-fp.h: Update from glibc CVS.
15026
15027 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
15028
15029         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
15030
15031 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15032
15033         PR target/32341
15034         * config/v850/v850.c: Include dataflow header file.
15035         (substitute_ep_register): Fix typo.
15036
15037 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
15038
15039         * configure.ac: Fix earlier checkin.
15040         * configure: Regenerated.
15041
15042 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
15043
15044         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
15045         * aclocal.m4: Regenerate.
15046         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
15047         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
15048         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
15049         * configure: Regenerate.
15050         * Makefile.in (LOOSE_WARN): Subst loose_warn.
15051
15052         * Makefile.in (quickstrap): Build libgcc too.
15053
15054 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
15055
15056         * configure.ac: Add --enable-checking=df.  Explicitly mention that
15057         the variables are initialized as for "release".
15058         * df-core.c: Use it.
15059         * configure: Regenerate.
15060         * config.in: Regenerate.
15061
15062 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
15063
15064         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
15065         validate_replace_rtx instead of replace_rtx.
15066         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
15067
15068 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
15069
15070         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
15071         (DWARF2_UNWIND_INFO): Override default if configured with
15072         SJLJ EH disabled.
15073         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
15074         (ENDFILE_SPEC): Add crtend.o.
15075         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
15076         (ENDFILE_SPEC): Add crtend.o.
15077         (TARGET_USE_JCR_SECTION): Define.
15078         (MD_UNWIND_SUPPORT): Define for 32-bit target.
15079
15080         * config/i386/cygming-crtbegin.c: New file.
15081         * config/i386/cygming-crtend.c: New file.
15082
15083 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
15084
15085         * config/i386/w32-unwind.h: New file.
15086
15087 2007-06-13  Eric Christopher  <echristo@apple.com>
15088
15089         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
15090         the user set a value below STACK_BOUNDARY.
15091
15092 2007-06-13  Thiemo Seufer  <ths@networkno.de>
15093
15094         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
15095         imply -lpthread for -pthread.
15096
15097 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
15098
15099         * basic-block.h: Remove the prototype for
15100         free_basic_block_vars.
15101         * cfglayout.h: Remove the prototype for
15102         insn_locators_initialize.
15103         * tree.h: Remove the prototype for emit_line_note.
15104
15105         * tree-ssa-pre.c (mergephitemp): Remove.
15106         (init_pre): Don't use mergephitemp.
15107
15108 2007-06-13  Eric Christopher  <echristo@apple.com>
15109
15110         * config/i386/i386.c (override_options): If we've specified
15111         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
15112
15113 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
15114
15115         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
15116         is defined.
15117
15118 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
15119
15120         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
15121         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
15122         (eh_store_handler): New pattern.
15123         (eh_return): Emit it instead of a plain move.
15124
15125 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
15126
15127         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
15128         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
15129         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
15130         def_builtin_const.
15131
15132 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
15133
15134         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
15135         (find_next_insn_start, find_load): New functions.
15136         (bfin_reorg): Use them to deal with the fact that parallel insns are
15137         no longer represented as a SEQUENCE.
15138
15139 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
15140
15141         * config/sparc/sparc.c (sparc_override_options): Initialize
15142         fpu mask correctly.
15143
15144 2007-06-13  Dave Korn  <dave.korn@artimi.com>
15145
15146         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
15147         df_get_live_out.
15148
15149 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
15150
15151         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
15152         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
15153         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
15154         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
15155         tree-vect-transform.c: Fix comment typos.  Follow spelling
15156         conventions.
15157
15158 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
15159
15160        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
15161        to the exit block use set.
15162        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
15163        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
15164        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
15165
15166 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
15167
15168         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
15169         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
15170         to indicate an error.
15171         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
15172         New functions.
15173         (dbg_cnt_process_opt): Print an error on a bad argument.
15174         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
15175         * common.opt (-fdbg-cnt-list): New.
15176         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
15177
15178 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15179
15180         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
15181         flag on ref-all pointers.
15182
15183 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15184
15185         PR middle-end/31579
15186         * expr.c (expand_expr_addr_expr_1): Call expand_expr
15187         for the offset with the modifier as EXPAND_INITIALIZER
15188         if the modifier is EXPAND_INITIALIZER.
15189         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
15190         a register if we had an overflow.
15191
15192 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15193
15194         * real.c (real_isfinite): New.
15195         (real_sqrt): Use it.
15196         * real.h (real_isfinite): New.
15197         * builtins.c: Use it.
15198
15199 2007-06-12  Ian Lance Taylor  <iant@google.com>
15200             Daniel Berlin  <dberlin@dberlin.org>
15201
15202         PR libstdc++/29286
15203         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
15204         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
15205         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
15206         (DECL_NO_TBAA_P): Define.
15207         (struct tree_decl_common): Add no_tbaa_flag field.
15208         * tree-ssa-structalias.c (struct variable_info): Add
15209         no_tbaa_pruning field.
15210         (new_var_info): Initialize no_tbaa_pruning field.
15211         (unify_nodes): Copy no_tbaa_pruning field.
15212         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
15213         (dump_solution_for_var): Print no_tbaa_pruning flag.
15214         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
15215         callers.
15216         (compute_tbaa_pruning): New static function.
15217         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
15218         Call compute_tbaa_pruning.
15219         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
15220         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
15221         * gimple-low.c (lower_stmt): Likewise.
15222         * tree-gimple.c (is_gimple_stmt): Likewise.
15223         * tree-ssa-operands.c (get_expr_operands): Likewise.
15224         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
15225         * tree-inline.c (estimate_num_insns_1): Likewise.
15226         (copy_result_decl_to_var): Likewise.
15227         * expr.c (expand_expr_real_1): Likewise.
15228         * tree-pretty-print.c (dump_generic_node): Likewise.
15229         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
15230         * omp-low.c (omp_copy_decl_2): Likewise.
15231         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
15232         * doc/c-tree.texi (Expression trees): Document
15233         CHANGE_DYNAMIC_TYPE_EXPR.
15234
15235 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15236
15237         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
15238         with !HONOR_NANS and !HONOR_INFINITIES.
15239         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
15240
15241 2007-06-12  Tristan Gingold  <gingold@adacore.com>
15242
15243         * gcov.c: Comments updated.
15244         (source_info): Add file_time field.
15245         (source_index): New variable.
15246         (mutiple_files): New variable.
15247         (generate_results): New function extracted from process_file.
15248         (process_file): Save and restore chain of functions, generate
15249         results and free structures only if not merging results.
15250         (release_structures): File names are now freed in create_file_names
15251         (create_file_names): Free previous file names.
15252         (find_source): File date is now read here and modifications in
15253         source files is checked here.
15254         (read_graph_file): Only reverse order of functions for the current
15255         object file.
15256         (make_gcov_file_name): Do not generate long names if input_name is
15257         NULL.
15258         (output_lines): If merging results do not display graph, data and
15259         runs informations.
15260         Checking source file modification is done in find_source.
15261
15262         * doc/gcov.texi: Append an s to sourcefile.
15263
15264 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
15265
15266         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
15267         (forced_nop): New pattern.
15268         * config/bfin/bfin.c: Include "df.h".
15269         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
15270         (bfin_discover_loop): Use df_get_live_in instead of
15271         global_live_at_start.
15272         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
15273         df_analyze when done.
15274         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
15275         the insns.  Use QImode for the final insn in a bundle.  Call
15276         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
15277         gen_nop.
15278         (reorder_var_tracking_notes): New function.
15279         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
15280         update_life_info.  Call df_analyze after scheduling and bundle
15281         generation.  Call reorder_var_tracking_notes if generating these
15282         notes.  Call df_finish_pass at the end.
15283
15284 2007-06-12  Dirk Mueller  <dmueller@suse.de>
15285
15286         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
15287         a comparison, not an assignment.
15288
15289 2007-06-12  Olivier Hainque  <hainque@adacore.com>
15290
15291         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
15292         Request walking the subtrees only, leaving the current is_lhs/val_only
15293         untouched.
15294         (convert_non_local_reference): Likewise.
15295
15296 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
15297
15298         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
15299
15300 2007-06-12  Richard Guenther  <rguenther@suse.de>
15301
15302         PR tree-optimization/15353
15303         PR tree-optimization/31657
15304         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
15305         * timevar.def: Add TV_TREE_IFCOMBINE.
15306         * tree-pass.h (pass_tree_ifcombine): Declare.
15307         * tree-ssa-ifcombine.c: New file.
15308         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
15309         * tree-flow.h (blocks_in_phiopt_order): Declare.
15310         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
15311         (tree-ssa-ifcombine.o): New dependencies.
15312
15313 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
15314
15315         PR rtl-optimization/32293
15316         * combine.c (simplify_if_then_else): Truncate return from
15317         nonzero_bits() to correct mode.
15318
15319 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
15320
15321         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
15322         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
15323
15324 2007-06-11  Diego Novillo  <dnovillo@google.com>
15325
15326         * Makefile.in (reload1.o-warn): Remove.
15327
15328 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
15329
15330         * combine.c (subst): Use reg_overlap_mentioned_p
15331         instead of comparing register numbers directly.
15332
15333 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
15334
15335         * reload1.c (mark_home_live_1): Use the mode parameter.
15336
15337 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
15338
15339         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
15340         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
15341         word "deferred".
15342         * df-core.c: Ditto.
15343
15344 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
15345
15346         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
15347
15348 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
15349
15350         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
15351         from integer registers.
15352         (FP mode splitters): Handle TFmode.
15353
15354 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
15355
15356         * tree-ssa-structalias.c (find_what_p_points_to): Return false
15357         for ref-all pointers that point-to anything.
15358
15359 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
15360
15361         * config/arm/arm.c (arm_output_dwarf_dtprel,
15362         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
15363
15364 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15365
15366         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
15367         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
15368         to memory moves.
15369
15370 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
15371
15372         * tree.c (signed_or_unsigned_type_for): New.
15373         (unsigned_type_for): Use signed_or_unsigned_type_for.
15374         (signed_type_for): Use signed_or_unsigned_type_for.
15375         * tree.h (signed_or_unsigned_type_for): New.
15376         (get_signed_or_unsigned_type): Remove.
15377         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
15378         lang_hooks.types.signed_type
15379         (size_diffop): Likewise.
15380         (all_ones_mask_p): Likewise.
15381         (build_range_check): Likewise.
15382         (fold_cond_expr_with_comparison): Likewise.
15383         (fold_cond_expr_with_comparison): Likewise.
15384         (unextend): Likewise.
15385         (extract_muldiv_1): Likewise.
15386         (fold_single_bit_test_into_sign_test): Likewise.
15387         (fold_binary): Likewise.
15388         (fold_ternary): Likewise.
15389         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
15390         instead of get_signed_or_unsigned_type.
15391         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
15392         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
15393         * expr.c (signed_or_unsigned_type_for): Use
15394         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
15395         * langhooks.c (get_signed_or_unsigned_type): Remove.
15396         (lhd_signed_or_unsigned_type): Remove.
15397         * langhooks.h (lang_hooks_for_types): Remove signed_type and
15398         signed_or_unsigned_type.
15399         (lhd_signed_or_unsigned_type): Remove.
15400         * expmed.c (make_tree): Use signed_type_for instead of
15401         lang_hooks.types.signed_type.
15402         * c-common.c (same_scalar_type_ignoring_signedness): Use
15403         c_common_signed_type instead of lang_hooks.types.signed_type.
15404         (c_common_unsigned_type): New.
15405         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
15406         (shorten_compare): Use c_common_unsigned_type instead of
15407         c_common_signed_or_unsigned_type.
15408         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
15409         unsigned_type_for.
15410         * convert.c (convert_to_integer): Use signed_type_for instead of
15411         lang_hooks.types.signed_type.
15412         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
15413         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
15414         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
15415         * c-format.c (check_format_types): Use c_common_unsigned_type
15416         instead of unsigned_type_for.
15417         * c-decl.c (groakdeclarator): Likewise.
15418         * c-typeck.c (convert_for_assignment): Likewise.
15419         * c-common.h (c_common_unsigned_type): New.
15420
15421 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
15422
15423         PR target/32280
15424         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
15425         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
15426
15427 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
15428
15429         PR middle-end/32279
15430         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
15431         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
15432
15433 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
15434             Sebastian Pop  <sebpop@gmail.com>
15435
15436         * lambda-code.c (remove_iv): New.
15437         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
15438
15439 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
15440
15441         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
15442         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
15443         * tree-ssa-loop-prefetch.c: Include optabs.h.
15444         (FENCE_FOLLOWING_MOVNT): New macro.
15445         (struct mem_ref): Add independent_p and storent_p fields.
15446         (record_ref): Initalize the new fields.
15447         (gather_memory_references_ref): Return true if the reference
15448         could be analysed.
15449         (gather_memory_references): Check whether all memory accesses
15450         in loop were recorded.
15451         (should_issue_prefetch_p): Return false for nontemporal stores.
15452         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
15453         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
15454         (determine_loop_nest_reuse): Detect independent memory references.
15455         (loop_prefetch_arrays): Call mark_nontemporal_stores.
15456         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
15457         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
15458         * config/i386/i386.h (x86_mfence): Declare.
15459         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
15460         * config/i386/i386.c (x86_mfence): New variable.
15461         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
15462
15463         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
15464         * optabs.c (init_optabs): Initialize storent_optab.
15465         * optabs.h (enum optab_index): Add OTI_storent.
15466         (storent_optab): Declare.
15467         * genopinit.c (optabs): Add initialization for storent_optab.
15468         * tree.h (MOVE_NONTEMPORAL): New macro.
15469         * expr.c (expand_assignment, store_expr, store_constructor_field,
15470         store_constructor, store_field, expand_expr_real_1): Propagate
15471         nontemporality of the expanded store.
15472         (emit_storent_insn): New function.
15473         * expr.h (expand_assignment, store_expr): Declaration changed.
15474         * function.c (assign_parm_setup_reg): Pass false as nontemporality
15475         to expand_assignment.
15476         * stmt.c (expand_asm_expr): Ditto.
15477         * calls.c (initialize_argument_information): Pass false as
15478         nontemporality to store_expr.
15479         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
15480         storentsi): New.
15481
15482 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
15483
15484         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
15485         parameter, use it.
15486         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
15487
15488 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
15489
15490         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
15491         and allow DECL_P here.
15492
15493 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
15494
15495         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
15496         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
15497         track of the size of the expression.
15498         * cfghooks.c (merge_blocks): Remove block from loops structure only
15499         after call of the merge_blocks hook.
15500
15501 2007-06-09  Tom Tromey  <tromey@redhat.com>
15502
15503         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
15504         (deprecated_state): Removed.
15505         (start_decl): Update.
15506         (enum deprecated_states): Moved earlier.
15507         (groktypename): Update.
15508         (push_parm_decl): Likewise.
15509         (grokfield): Likewise.
15510         (start_function): Likewise.
15511
15512 2007-06-09  Ian Lance Taylor  <iant@google.com>
15513
15514         PR tree-optimization/32169
15515         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
15516         CONVERT_EXPR, check whether min and max both converted to an
15517         overflow infinity representation.
15518
15519 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
15520
15521         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
15522         not inserted on the edge.
15523
15524 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
15525
15526         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
15527         instructions if they are supported.
15528         (__divsi3, __umodsi3, __modsi3): Likewise.
15529         (__ashldi3, __ashrdi3, __lshrdi3): New.
15530         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
15531
15532 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
15533             Tony Linthicum <tony.linthicum@amd.com>
15534
15535         * doc/invoke.texi: Add fvect-cost-model flag.
15536         * common.opt (fvect-cost-model): New flag.
15537         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
15538         cost fields in stmt_vec_info struct for STMT.
15539         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
15540         fields in stmt_vec_info struct and access functions for the same.
15541         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
15542         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
15543         load, store and vector to scalar operation.
15544         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
15545         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
15546         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
15547         (TARG_VEC_STORE_COST): Define cost of vector store.
15548         (vect_estimate_min_profitable_iters): Define new function.
15549         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
15550         check to evaluate if loop iterations are less than minimum profitable
15551         iterations determined by cost model or minimum vect loop bound defined
15552         by user, whichever is more conservative.
15553         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
15554         run-time check to evaluate if loop iterations are less than minimum
15555         profitable iterations determined by cost model or minimum vect loop
15556         bound defined by user, whichever is more conservative.
15557         (vect_estimate_min_profitable_iterations): New function to estimate
15558         mimimimum iterartions required for vector version of loop to be
15559         profitable over scalar version.
15560         (vect_model_reduction_cost): New function.
15561         (vect_model_induction_cost): New function.
15562         (vect_model_simple_cost): New function.
15563         (vect_cost_strided_group_size): New function.
15564         (vect_model_store_cost): New function.
15565         (vect_model_load_cost): New function.
15566         (vectorizable_reduction): Call vect_model_reduction_cost during
15567         analysis phase.
15568         (vectorizable_induction): Call vect_model_induction_cost during
15569         analysis phase.
15570         (vectorizable_load): Call vect_model_load_cost during analysis phase.
15571         (vectorizable_store): Call vect_model_store_cost during analysis phase.
15572         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
15573         vectorizable_promotion, vectorizable_demotion): Call
15574         vect_model_simple_cost during analysis phase.
15575
15576 2007-06-08  Simon Baldwin  <simonb@google.com>
15577
15578         * reg-stack.c (get_true_reg): Readability change.  Moved default case
15579         label into direct switch statement scope.
15580
15581 2007-06-08  Simon Baldwin  <simonb@google.com>
15582
15583         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
15584         in gcc_assert() with '==' comparison.
15585
15586 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
15587
15588         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
15589         TARGET_ABM handling of x86_popcnt variable.
15590
15591 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
15592
15593         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
15594         __builtin_copysignq and __builtin_infq built-in functions.
15595
15596 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
15597
15598         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
15599         SSE4.2 section.  Correct built-in function names in SSE4A section.
15600
15601 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
15602
15603         PR tree-optimization/32243
15604         * tree-vect-transform.c (vectorizable_type_promotion): Move check
15605         for ncopies after ratio check between nunits_out and nunits_in.
15606         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
15607
15608 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
15609
15610         PR tree-optimization/32224
15611         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
15612         vectorization upon a non GIMPLE_MODIFY_STMT.
15613
15614 2007-06-08  Christian Bruel  <christian.bruel@st.com>
15615
15616         PR target/29953
15617         * config/sh/sh.md (doloop_end): New pattern and splitter.
15618         * loop-iv.c (simple_rhs_p): Check for hardware registers.
15619
15620 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
15621
15622         PR middle-end/32209
15623         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
15624         functions.
15625         (verify_dominators): Do not change dominance tree.
15626
15627 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
15628
15629         * config/sh/constraints.md: New file.
15630         * config/sh/sh.c: Include tm-constrs.h.
15631         (reg_class_from_letter): Remove.
15632         (prepare_cbranch_operands): Use satisfies_constraint_*
15633         function instead of macro.
15634         (andcosts, broken_move, sh_secondary_reload): Likewise.
15635         * config/sh/predicates.md (trapping_target_operand): Likewise.
15636         (and_operand, arith_operand, arith_reg_or_0_operand,
15637         cmp_operand, logical_operand, target_operand,
15638         ua_address_operand, ua_offset, xor_operand): Likewise.
15639         * config/sh/sh.md: Include constraints.md.
15640         (*movsicc_t_false): Use satisfies_constraint_* function
15641         instead of macro.
15642         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
15643         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
15644         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
15645         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
15646         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
15647         (REG_CLASS_FROM_CONSTRAINT): Remove.
15648         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
15649         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
15650         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
15651         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
15652         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
15653         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
15654         function instead of macro.
15655         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
15656         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
15657         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
15658         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
15659         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
15660         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
15661         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
15662         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
15663         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
15664         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
15665         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
15666         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
15667         EXTRA_CONSTRAINT_STR): Likewise.
15668         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
15669
15670 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
15671
15672         * config/i386/darwin.h (STACK_BOUNDARY): Define.
15673
15674 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
15675
15676         PR c++/30759
15677         * c-common.h (flag_cpp0x): Replaced by...
15678         (cxx_dialect): ... this new variable specifying the C++ dialect that
15679         is used.
15680         * c-common.c (flag_cpp0x): Removed.
15681         (cxx_dialect): Defined.
15682         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
15683         cxx_dialect.
15684         * c-opts.c (c_common_post_options): Likewise.
15685         (set_std_cxx98): Set cxx_dialect to cxx98.
15686         (set_std_cxx0x): Set cxx_dialect to cxx0x.
15687
15688 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
15689             Hui-May Chang <hm.chang@apple.com>
15690
15691         * doc/invoke.texi (Darwin Options): Update documentation for
15692         -mmacosx-version-min.
15693         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
15694         * config/darwin-driver.c: New file.
15695         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
15696         * config/t-darwin (darwin-driver.o): New rule.
15697
15698         * config/darwin-c.c (version_as_macro): Ignore low digit.
15699
15700 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
15701
15702         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
15703         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
15704         (CSGNMODE): New mode macro.
15705         (CSGNVMODE): New mode attribute.
15706         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
15707         expander using CSGNMODE mode macro.  Handle TFmode.
15708         (copysign<mode>3_const): Rename from copysignsf3_const and
15709         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
15710         Handle TFmode.
15711         (copysign<mode>3_var): Rename from copysignsf3_var and
15712         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
15713         Handle TFmode.
15714         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
15715         mode macro.  Handle TFmode.
15716         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
15717         (iortf3, *iortf3): Ditto.
15718         (xortf3, *xortf3): Ditto.
15719         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
15720         TFmode and TImode masks.
15721         (ix86_expand_copysign): Expand TFmode copysign insn.
15722         (IX86_BUILTIN_INFQ): New.
15723         (IX86_BUILTIN_FABSQ): Ditto.
15724         (IX86_BUILTIN_COPYSIGNQ): Ditto.
15725         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
15726         [__builtin_fabsq]: Ditto.
15727         [__builtin_copysignq]: Ditto.
15728         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
15729         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
15730         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
15731         ix86_expand_binop_builtin().
15732
15733 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
15734
15735         * config/xtensa/lib1funcs.asm: Clean up whitespace.
15736
15737 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
15738
15739         PR target/31850
15740         * rtl.h (push_to_sequence2): New.
15741         * emit-rtl.c (push_to_sequence2): New.
15742         * function.c (assign_parm_data_all): Add new fields.
15743         (assign_parm_setup_block): Call push_to_sequence2 instead of
15744         push_to_sequence.
15745         (assign_parm_setup_reg): Ditto.
15746         (assign_parm_setup_stack): Ditto.
15747         (assign_parms_unsplit_complex): Ditto.
15748         (assign_parms): Change field name.
15749
15750 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
15751
15752         PR tree-optimization/32220
15753         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
15754         phi node is reached before defining statement.
15755
15756 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15757
15758         PR tree-opt/32231
15759         * tree-vect-transform.c (vectorizable_call): Call update_stmt
15760         after changing the right hand side of the assignment.
15761
15762 2007-06-06  Eric Christopher  <echristo@apple.com>
15763
15764         * config.gcc (i?86-*-darwin*): Remove arch parameter.
15765         (x86_64-*-darwin*): Ditto.
15766         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
15767         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
15768
15769 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
15770
15771         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
15772         coding conventions.
15773         (add_key): Likewise.
15774         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
15775         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
15776         variable names.
15777         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
15778         macros.
15779         (add_cost_one_coalesce): Likewise.
15780         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
15781         variable names. Rename orig to orig_name for consistency.
15782         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
15783         coding conventions.
15784         (cprop_into_successor_phis): Avoid using C++ keywords as variable
15785         names.
15786         (record_equivalences_from_stmt): Likewise.
15787         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
15788         the coding conventions.
15789         (memory_ssa_name_same): Likewise.
15790         (dse_optimize_stmt): Likewise.
15791         (dse_record_phis): Likewise.
15792         (dse_finalize_block): Likewise.
15793         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
15794         keywords as variable names.
15795         (may_move_till): Cast according to the coding conventions.
15796         (force_move_till_expr): Avoid using C++ keywords as variable names.
15797         (force_move_till): Cast according to the coding conventions.
15798         (memref_hash): Likewise.
15799         (memref_eq): Likewise.
15800         (gather_mem_refs_stmt): Likewise.
15801         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
15802         using C++ keywords as variable names.
15803         (idx_find_step): Cast according to the coding conventions.
15804         (idx_record_use): Likewise.
15805         (find_depends): Likewise.
15806         (prepare_decl_rtl): Likewise.
15807         (mbc_entry_hash): Likewise.
15808         (mbc_entry_eq): Likewise.
15809         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
15810         (simplify_replace_tree): Avoid using C++ keywords as variable names.
15811         (idx_infer_loop_bounds): Cast according to the coding conventions.
15812         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
15813         * tree-ssa-math-opts.c (occ_new ): Likwise.
15814         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
15815         macros.
15816         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
15817         variable names.
15818         (add_use_op): Likewise.
15819         (add_vop): Likewise.
15820         (add_vuse_op): Likewise.
15821         (add_vdef_op): Likewise.
15822         (get_expr_operands): Likewise.
15823         (push_stmt_changes): Use type safe memory macros.
15824         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
15825         keywords as variable names.
15826         (conditional_replacement): Likewise.
15827         (minmax_replacement): Likewise.
15828         (abs_replacement): Likewise.
15829         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
15830         coding conventions.
15831         (insert_fake_stores): Avoid using C++ keywords as variable names.
15832         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
15833         conventions.
15834         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
15835         (heapvar_insert): Use type safe memory macros.
15836         (new_var_info): Cast according to the coding conventions.
15837         (new_constraint): Likewise.
15838         (remove_preds_and_fake_succs): Use type safe memory macros.
15839         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
15840         conventions.
15841         (thread_single_edge): Likewise.
15842         (thread_through_loop_header): Likewise.
15843
15844 2007-06-06  Eric Christopher  <echristo@apple.com>
15845
15846         * config/i386/i386.c (override_options): Move handling
15847         of TARGET_SUBTARGET* earlier.
15848
15849 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
15850
15851         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
15852         use %n on printf.
15853
15854 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
15855
15856         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
15857         emited outside of basic block.
15858         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
15859         the created blocks.
15860         * rtl.h (delete_insn_chain): Declaration changed.
15861         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
15862         non-removed insns.
15863         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
15864         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
15865         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
15866         to delete_insn_chain.
15867         (rtl_verify_flow_info_1): Verify that the insns in header and footer
15868         do not have bb field set.
15869         (rtl_verify_flow_info): Verify that insns between basic blocks do not
15870         have bb field set.
15871         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
15872         * cfgcleanup.c (try_optimize_cfg): Ditto.
15873
15874 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
15875
15876         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
15877         (lambda_body_vector_new): Use type safe memory macros.
15878         (lambda_linear_expression_new): Likewise.
15879         (lambda_loopnest_new): Likewise.
15880         (lambda_lattice_new): Likewise.
15881         (replace_uses_equiv_to_x_with_y): Cast according to the coding
15882         conventions. Use type safe memory macros.
15883         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
15884         (lambda_body_vector_s): Likewise.
15885         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
15886         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
15887
15888 2007-06-06  Richard Guenther  <rguenther@suse.de>
15889
15890         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
15891         if we need to schedule cfg_cleanup.
15892         (tree_ssa_forward_propagate_single_use_vars): Do so.
15893
15894 2007-06-06  Ian Lance Taylor  <iant@google.com>
15895
15896         * fold-const.c (merge_ranges): If range_successor or
15897         range_predecessor fail, just return 0.
15898
15899 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
15900
15901         PR tree-optimization/32216
15902         * tree-vectorizer.c (supportable_widening_operation): Determine
15903         signedness of FIX_TRUNC_EXPR from output operand.
15904         (supportable_narrowing_operation): Ditto.
15905         * tree-vect-generic.c (expand_vector_operations_1): Determine
15906         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
15907         from input operand.
15908
15909 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
15910
15911         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
15912         (struct pta): ...from here. Change flags to unsigned to avoid
15913         excessive casting (as it is used as a bit mask).
15914         (override_options): Add casts according to the coding convenventions.
15915         (x86_64_elf_unique_section): Likewise.
15916         (examine_argument): Avoid using C++ keywords as variable names.
15917         (construct_container): Likewise.
15918         (legitimize_pic_address): Likewise.
15919         (get_dllimport_decl): Cast according to the coding conventions. Use
15920         type safe memory macros.
15921         (legitimize_address): Cast according to the coding conventions.
15922         (emit_i387_cw_initialization): Corrected the type of slot to enum
15923         ix86_stack_slot.
15924         (ix86_init_machine_status): Use type safe memory macros.
15925         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
15926         (bdesc_pcmpistr): Likewise.
15927         (bdesc_crc32): Likewise.
15928         (bdesc_sse_3arg): Likewise.
15929         (bdesc_2arg): Likewise.
15930         (bdesc_1arg): Likewise.
15931         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
15932         (ix86_expand_sse_pcmpistr): Likewise.
15933         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
15934         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
15935         int to match the langhook definition.
15936         (ix86_builtin_conversion): Change the type of code to unsigned init to
15937         match the langhook definition.
15938         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
15939         names.
15940         (ix86_preferred_output_reload_class): Likewise.
15941         (ix86_cannot_change_mode_class): Likewise.
15942         (ix86_memory_move_cost): Likewise.
15943         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
15944         avoid excessive casting later on.
15945         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
15946
15947 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
15948
15949         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
15950         as flags setting insn.
15951         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
15952
15953 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
15954
15955         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
15956         (UNSPEC_ROUND): New.
15957         ("sse4_1_round<mode>2"): New insn pattern.
15958         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
15959         SSE4.1 targets.
15960         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
15961         expander using SSEMODEF mode macro.  Expand using
15962         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
15963         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
15964         expander using SSEMODEF mode macro.  Expand using
15965         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
15966         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
15967         expander using SSEMODEF mode macro.  Expand using
15968         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
15969         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
15970         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
15971         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
15972         UNSPEC_ROUNDS.
15973
15974 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
15975             Sebastian Pop  <sebpop@gmail.com>
15976
15977         * lambda.h (build_linear_expr): New.
15978         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
15979         Use build_linear_expr, call fold and force_gimple_operand.
15980         (lambda_loopnest_to_gcc_loopnest): Check that there is
15981         something to insert.
15982         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
15983
15984 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
15985
15986         PR preprocessor/23479
15987         * doc/extend.texi: Document the 0b-prefixed binary integer
15988         constant extension.
15989
15990 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
15991
15992         PR tree-optimization/32215
15993         * tree-vectorizer.c (supportable_widening_operation): Return false
15994         for unsupported FIX_TRUNC_EXPR tree code.
15995         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
15996
15997 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
15998
15999         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
16000         register on SPE targets.  Change documentation to reflect
16001         reality.
16002         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
16003         Change FIXED_SCRATCH to 14 and document why we're keeping r14
16004         out of the register allocation pool.
16005         (rs6000_reg_live_or_pic_offset_p): New function.
16006         (rs6000_emit_prologue): Move the actual saving of LR up to free
16007         r0 for holding r11.  Split saving of SPE 64-bit registers into
16008         its own case.  Ensure that offsets will always be in-range for
16009         'evstdd' by using r11 as a scratch register to point at the start
16010         of the SPE save area.  Save r11 if necessary, as it is the static
16011         chain register.
16012         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
16013         into its own case.  Ensure that offsets will always be in-range
16014         for 'evldd' by using r11 as a scratch register to point at the
16015         start of the SPE save area.  Also adjust r11 when restoring
16016         the stack pointer to compensate for pre-loading r11.
16017
16018 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
16019
16020         * cfg.c (init_flow): Use type safe memory macros.
16021         (alloc_block): Likewise.
16022         (unchecked_make_edge): Likewise.
16023         (dump_flow_info): Avoid using C++ keywords as variable names.
16024         (copy_original_table_clear): Cast according to the coding conventions.
16025         (copy_original_table_set): Likewise.
16026         * cfgexpand (label_rtx_for_bb): Likewise.
16027         (expand_gimple_basic_block): Likewise.
16028         * cfghooks.c (dump_bb): Likewise.
16029         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
16030         variable names.
16031         (lv_add_condition_to_bb): Likewise.
16032         * cfglayout (relink_block_chain): Cast according to the coding
16033         conventions.
16034         (fixup_reorder_chain): Likewise.
16035         (fixup_fallthru_exit_predecessor): Likewise.
16036         * cfgloop.c (glb_enum_p): Likewise.
16037         (get_exit_description): Likewise.
16038         (dump_recorded_exit): Likewise.
16039         * cfgloop.h (enum loop_estimation): Move out of struct scope...
16040         (struct loop): ... from here.
16041         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
16042         conventions.
16043         * cfgrtl.c (rtl_create_basic_block): Likewise.
16044         (rtl_split_block): Likewise.
16045         (rtl_dump_bb): Likewise.
16046         (cfg_layout_split_block): Likewise.
16047         (init_rtl_bb_info): Use typesafe memory macros.
16048
16049         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
16050         * graphds.h: Updated all usages of edge to graph_edge.
16051         * graphds.c: Likewise.
16052         * cfgloopanal.c: Likewise.
16053
16054 2007-06-05  Ian Lance Taylor  <iant@google.com>
16055
16056         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
16057         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
16058         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
16059         expression.
16060         (test_for_singularity): Likewise.
16061
16062 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
16063
16064         * config/i386/constraints.md ("Y2"): Replaced by ...
16065         ("Yt"): This.
16066         * config/i386/i386.md: Likewise.
16067         * config/i386/mmx.md: Likewise.
16068         * config/i386/sse.md: Likewise.
16069
16070 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
16071
16072         * config/i386/constraints.md ("z"): Replaced by ...
16073         ("Y0"): This.
16074         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
16075         (sse4_1_blendvps): Likewise.
16076         (sse4_1_pblendvb): Likewise.
16077         (sse4_2_pcmpestr): Likewise.
16078         (sse4_2_pcmpestrm): Likewise.
16079         (sse4_2_pcmpestr_cconly): Likewise.
16080         (sse4_2_pcmpistr): Likewise.
16081         (sse4_2_pcmpistrm): Likewise.
16082         (sse4_2_pcmpistr_cconly): Likewise.
16083
16084 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
16085
16086         * matrix-reorg.c (transform_access_sites): Fix computation.
16087         (transform_allocation_sites): Same.
16088
16089 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
16090
16091         * config/i386/i386.c (override_options): Use
16092         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
16093
16094 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
16095
16096         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
16097         (nonimm_not_xmm0_operand): Ditto.
16098         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
16099         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
16100         as operand[2] predicate.  Require "z" class XMM register for
16101         operand[3].  Adjust asm template.
16102         ("sse4_1_blendvpd"): Ditto.
16103         ("sse4_1_pblendvb"): Ditto.
16104         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
16105         force op2 into xmm0 register for variable blend instructions.
16106
16107 2007-06-04  Tom Tromey  <tromey@redhat.com>
16108
16109         * c-tree.h (start_enum): Update.
16110         (build_enumerator): Likewise.
16111         * c-decl.c (enum_next_value): Removed.
16112         (enum_overflow): Likewise.
16113         (start_enum): Add c_enum_contents argument.  Don't use globals.
16114         (build_enumerator): Likewise.
16115         * c-tree.h (struct c_enum_contents): New struct.
16116
16117 2007-06-04  Tom Tromey  <tromey@redhat.com>
16118
16119         * c-common.c (c_common_get_alias_set): Fix indentation.
16120
16121 2007-06-04  Ian Lance Taylor  <iant@google.com>
16122
16123         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
16124         to overflow, reduce overflow infinity to regular infinity.
16125         (vrp_var_may_overflow): New static function.
16126         (vrp_visit_phi_node): Check vrp_var_may_overflow.
16127
16128 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
16129
16130         * stor-layout.c (layout_type): Remove duplicate code.
16131
16132 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
16133
16134         PR c/32191
16135         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
16136         before build_common_builtin_nodes ().
16137
16138 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
16139
16140         PR target/31733
16141         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
16142
16143 2007-06-04  Jan Hubicka  <jh@suse.cz>
16144
16145         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
16146         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
16147         instead of _stat version.
16148
16149 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
16150
16151         PR tree-optimization/32194
16152         * tree-predcom.c (determine_offset): Check that both references have
16153         the same type.
16154
16155 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
16156
16157         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
16158         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
16159         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
16160         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
16161         Add argument to iterate_fix_dominators call.
16162         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
16163         * gcse.c (hoist_code): Change domby to vector.
16164         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
16165         Add argument to iterate_fix_dominators call.
16166         * loop-doloop.c (doloop_modify): Changed recount_dominator to
16167         recompute_dominator.
16168         * lambda-code.c (perfect_nestify): Ditto.
16169         * cfgloopanal.c: Include graphds.h.
16170         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
16171         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
16172         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
16173         add_edge call.
16174         * graphds.c: New file.
16175         * graphds.h: New file.
16176         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
16177         (get_dominated_by, get_dominated_by_region): Change return type to
16178         vector.
16179         (verify_dominators): Recompute all dominators and compare the results.
16180         (recount_dominator): Renamed to ...
16181         (recompute_dominator): ... this.  Do not check that the block is
16182         dominated by entry.
16183         (iterate_fix_dominators): Reimplemented.
16184         (prune_bbs_to_update_dominators, root_of_dom_tree,
16185         determine_dominators_for_sons): New functions.
16186         * et-forest.c (et_root): New function.
16187         * et-forest.h (et_root): Declare.
16188         * Makefile.in (graphds.o): Add.
16189         (cfgloopanal.o): Add graphds.h dependency.
16190         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
16191         * basic-block.h (get_dominated_by, get_dominated_by_region,
16192         iterate_fix_dominators): Declaration changed.
16193         (recount_dominator): Renamed to ...
16194         (recompute_dominator): ... this.
16195         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
16196         (thread_through_all_blocks): Do not free dominance info.
16197
16198 2007-06-03  Andreas Schwab  <schwab@suse.de>
16199
16200         * config/m68k/m68k.c (override_options): Don't override
16201         REAL_MODE_FORMAT.
16202         * config/m68k/m68k-modes.def (SF, DF): Define to use
16203         motorola_single_format and motorola_double_format, resp.
16204         * real.c (motorola_single_format): Renamed from
16205         coldfire_single_format.
16206         (motorola_double_format): Renamed from coldfire_double_format.
16207         (encode_ieee_extended): Generate a proper canonical NaN image
16208         respecting canonical_nan_lsbs_set.
16209         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
16210         true.
16211         * real.h: Adjust declarations.
16212
16213 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
16214
16215         PR target/32163
16216         * config/sh/sh.md (symGOT_load): Don't schedule insns when
16217         the symbol is generated with the stack protector.
16218
16219 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
16220
16221         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
16222         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
16223         "interrupt".
16224         * doc/extend.texi (interrupt): Mention m68k.
16225
16226 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
16227
16228         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
16229         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
16230         (ix86_expand_sse_pcmpestr): Do not check operands for
16231         "register_operand", when insn operand predicate is "register_operand".
16232         (ix86_expand_sse_pcmpistr): Ditto.
16233
16234 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
16235             Uros Bizjak  <ubizjak@gmail.com>
16236
16237         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
16238         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
16239         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
16240         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
16241         * config/i386/constraints.md ("z"): New register constraint
16242         for members of SSE_FIRST_REG class.
16243         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
16244         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
16245         SSE_FIRST_REG class.
16246         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
16247         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
16248         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
16249         (IX86_BUILTIN_PCMPESTRM128): Likewise.
16250         (IX86_BUILTIN_PCMPESTRA128): Likewise.
16251         (IX86_BUILTIN_PCMPESTRC128): Likewise.
16252         (IX86_BUILTIN_PCMPESTRO128): Likewise.
16253         (IX86_BUILTIN_PCMPESTRS128): Likewise.
16254         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
16255         (IX86_BUILTIN_PCMPISTRI128): Likewise.
16256         (IX86_BUILTIN_PCMPISTRM128): Likewise.
16257         (IX86_BUILTIN_PCMPISTRA128): Likewise.
16258         (IX86_BUILTIN_PCMPISTRC128): Likewise.
16259         (IX86_BUILTIN_PCMPISTRO128): Likewise.
16260         (IX86_BUILTIN_PCMPISTRS128): Likewise.
16261         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
16262         (struct builtin_description): Change "flag" field to unsigned.
16263         (bdesc_pcmpestr): New builtin description table.
16264         (bdesc_pcmpistr): Likewise.
16265         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
16266         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
16267         Initialize pcmp[ei]str[im] insns for SSE4.2.
16268         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
16269         (ix86_expand_sse_pcmpistr): Likewise.
16270         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
16271         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
16272         (UNSPEC_PCMPISTR): Likewise.
16273         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
16274         (sse4_2_pcmpestri):New isns pattern.
16275         (sse4_2_pcmpestrm): Likewise.
16276         (sse4_2_pcmpestr_cconly): Likewise.
16277         (sse4_2_pcmpistr): New insn patern and splitter.
16278         (sse4_2_pcmpistri):New isns pattern.
16279         (sse4_2_pcmpistrm): Likewise.
16280         (sse4_2_pcmpistr_cconly): Likewise.
16281         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
16282         in SSE4.2.
16283
16284 2007-06-01  David Daney  <ddaney@avtrex.com>
16285
16286         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
16287         LOADGP_ABSOLUTE and not binds_local_p.
16288
16289 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
16290
16291         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
16292
16293 2007-06-01  Ian Lance Taylor  <iant@google.com>
16294
16295         * tree-vrp.c (compare_name_with_value): Always set
16296         used_strict_overflow if we get a result from the variable itself.
16297
16298 2007-06-01  Ian Lance Taylor  <iant@google.com>
16299
16300         PR rtl-optimization/31455
16301         * lower-subreg.c (find_decomposable_subregs): Don't decompose
16302         subregs which have a cast between modes which are not tieable.
16303
16304 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
16305
16306         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
16307         breaks after return statements.
16308
16309 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
16310
16311         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
16312         only after no_new_pseudos.
16313
16314 2007-05-31  Eric Christopher  <echristo@apple.com>
16315
16316         * expr.c (convert_move): Assert that we don't have a BLKmode
16317         operand.
16318         (store_expr): Handle BLKmode moves by calling emit_block_move.
16319
16320 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
16321
16322         * c-typeck.c (build_indirect_ref): Include type in error message.
16323         (build_binary_op): Pass types to binary_op_error.
16324         * c-common.c (binary_op_error): Take two type arguments, print out
16325         types with error.
16326         * c-common.h (binary_op_error): Update prototype.
16327
16328 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
16329
16330         * config/i386/i386.c: Correct coments on -mno-sse4.
16331
16332 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
16333
16334         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
16335         (x86_64-*-*): Likewise.
16336         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
16337         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
16338         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
16339         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
16340         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
16341         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
16342         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
16343         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
16344         (OPTION_MASK_ISA_SSE4): Likewise.
16345         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
16346         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
16347         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
16348         (override_options): Support SSE4.2.
16349         (ix86_build_const_vector): Support SImode and DImode.
16350         (ix86_build_signbit_mask): Likewise.
16351         (ix86_expand_int_vcond): Support V2DImode.
16352         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
16353         (IX86_BUILTIN_CRC32HI): Likewise.
16354         (IX86_BUILTIN_CRC32SI): Likewise.
16355         (IX86_BUILTIN_CRC32DI): Likewise.
16356         (IX86_BUILTIN_PCMPGTQ): Likewise.
16357         (bdesc_crc32): Likewise.
16358         (bdesc_sse_3arg): Likewise.
16359         (ix86_expand_crc32): Likewise.
16360         (ix86_init_mmx_sse_builtins): Support SSE4.2.
16361         (ix86_expand_builtin): Likewise.
16362         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
16363         __SSE4_2__ for -msse4.2.
16364         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
16365         (CRC32MODE): Likewise.
16366         (crc32modesuffix): Likewise.
16367         (crc32modeconstraint): Likewise.
16368         (sse4_2_crc32<mode>): Likewise.
16369         (sse4_2_crc32di): Likewise.
16370         * config/i386/i386.opt (msse4.2): New for SSE4.2.
16371         (msse4): Likewise.
16372         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
16373         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
16374         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
16375         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
16376         (vcondu<mode>): Likewise.
16377         * doc/extend.texi: Document SSE4.2 built-in functions.
16378         * doc/invoke.texi: Document -msse4.2/-msse4.
16379
16380 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
16381
16382         PR tree-optimization/32160
16383         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
16384         variable as gimple reg.
16385         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
16386
16387 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
16388
16389         * gcc.c (main): Don't consider linker options when issuing the
16390         warning about a linker input file not being used.
16391
16392 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16393
16394         * tree-vrp.c (compare_names): Initialize sop.
16395
16396 2007-05-30  Dirk Mueller  <dmueller@suse.de>
16397
16398         * cgraphunit.c (cgraph_analyze_function): Remove
16399         computation of inline parameters.
16400
16401 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
16402
16403         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
16404
16405 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
16406
16407         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
16408         Add vx-common.h.  Include vxworks.h between vx-common.h and
16409         arm/vxworks.h.
16410         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
16411         redefining.
16412         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
16413         (TARGET_ASM_DESTRUCTOR): Likewise.
16414         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
16415         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
16416         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
16417         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
16418         (VXWORKS_ENDIAN_SPEC): Define.
16419         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
16420         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
16421         VXWORKS_* equivalents.
16422         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
16423         (ASM_FILE_START): Delete.
16424         (TARGET_VERSION): Reformat.
16425         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
16426         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
16427         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
16428         (FPBIT, DPBIT): Define.
16429         (fp-bit.c, dp-bit.c): New rules.
16430         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
16431         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
16432         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
16433         * config/arm/arm.h: Include vxworks-dummy.h.
16434         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
16435         Mark with ATTRIBUTE_UNUSED.
16436         (arm_override_options): Do not allow VxWorks RTP PIC to be used
16437         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
16438         make it incompatible with -msingle-pic-base.
16439         (arm_function_ok_for_sibcall): Return false for calls that might
16440         go through a VxWorks PIC PLT entry.
16441         (require_pic_register): New function, split out from...
16442         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
16443         for VxWorks RTPs.
16444         (arm_load_pic_register): Handle the VxWorks RTP initialization
16445         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
16446         (arm_emit_call_insn): New function.
16447         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
16448         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
16449         (pic_offset_arm): New pattern.
16450         (call, call_value): Use arm_emit_call_insn.
16451         (call_internal, call_value_internal): New expanders.
16452         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
16453         VxWorks unless __PIC__.
16454
16455 2007-05-30  Eric Christopher  <echristo@gmail.com>
16456
16457         * genrecog.c: Include regs.h in generated file.
16458         * genemit.c: Ditto. Fix up formatting.
16459         * config/mn10300/constraints.md: New.
16460         * config/mn10300/mn10300.md: Include.
16461         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
16462         Fix up for removed macro.
16463         * config/mn10300/predicates.md (call_address_operand): Ditto.
16464         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
16465         (CONST_OK_FOR_I): Ditto.
16466         (CONST_OK_FOR_J): Ditto.
16467         (CONST_OK_FOR_K): Ditto.
16468         (CONST_OK_FOR_L): Ditto.
16469         (CONST_OK_FOR_M): Ditto.
16470         (CONST_OK_FOR_N): Ditto.
16471         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
16472         (OK_FOR_Q): Ditto.
16473         (OK_FOR_R): Ditto.
16474         (OK_FOR_T): Ditto.
16475         (EXTRA_CONSTRAINT): Ditto.
16476
16477 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
16478
16479         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
16480         Remove defines.
16481         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
16482         OPTION_MASK_ISA_64BIT.
16483         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
16484
16485 2007-05-30  Richard Guenther  <rguenther@suse.de>
16486
16487         PR middle-end/32152
16488         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
16489         types for comparison.
16490         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
16491         with original typed arguments.
16492         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
16493
16494 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
16495
16496         PR tree-optimization/31769
16497         * except.c (duplicate_eh_regions): Clear prev_try if
16498         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
16499
16500 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
16501
16502         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
16503         * tree-ssa-sink.c (statement_sink_location): Return basic block and
16504         bsi of the location where statements should be inserted.
16505         (sink_code_in_bb): Take bsi from statement_sink_location.
16506         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
16507         instead of bsi_start.
16508         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
16509         bsi_insert_after.
16510         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
16511         (bsi_move_before): Document inconsistency with bsi_move_after.
16512         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
16513
16514 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
16515
16516         * config/i386/i386.h (TARGET_ABM): New define.
16517         (TARGET_POPCNT): Ditto.
16518         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
16519         New temporary defines to redefine from OPTION_ISA_* defines.
16520         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
16521         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
16522         (ix86_isa_flags): New extern int declaration.
16523         (TARGET_SUBTARGET_DEFAULT): New define.
16524         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
16525         (TARGET_SUBTARGET32_DEFAULT): Ditto.
16526         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
16527         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
16528         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
16529         * config/i386/darwin.h: Change TARGET_64BIT define to
16530         OPTION_ISA_64BIT.
16531
16532         * config/i386/i386.opt (m3dnowa): Define as undocumented option
16533         using existing "ix86_isa_flags" varible.
16534         (m32, m64): Use existing "ix86_isa_flags" variable.
16535         (mmmx, m3dnow): Ditto.
16536         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
16537         (mabm): Define as non-negative option using "x86_abm" variable.
16538         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
16539
16540         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
16541         Rewrite feature test bitmap.
16542         (ix86_isa_flags): New initialized global int varible.
16543         (ix86_isa_flags_explicit): New static int variable.
16544         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
16545         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
16546         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
16547         target_flags_explicit.
16548         (override_options): Remove "target_enable" and "target_disable" fields
16549         from "struct ptt". Update processor_target_table accordingly. Remove
16550         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
16551         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
16552         "target_flags" and "ix86_isa_flags_explicit" instead of
16553         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
16554         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
16555         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
16556         to true when either of PTA_POPCNT or PTA_ABM is set in
16557         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
16558         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
16559         processor_alias_table flags entry.  Remove handling of
16560         "target_enable" and "target_disable" fields of processor_target_table.
16561         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
16562         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
16563         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
16564         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
16565         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
16566         "target_flags".
16567         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
16568
16569 2007-05-29  David Daney  <ddaney@avtrex.com>
16570
16571         PR gcc/31975
16572         * config/mips/mips.c (mips_output_mi_thunk): Emit
16573         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
16574
16575 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
16576         * config/i386/i386.c (ix86_function_regparm): Added checking of
16577         ix86_force_align_arg_pointer to determine the number of
16578         register parameters.
16579
16580 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
16581
16582         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
16583         (SET_DR_MISALIGNMENT): New.
16584         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
16585         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
16586         Use SET_DR_MISALIGNMENT.
16587         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
16588         pointer.
16589         * tree-data-ref.c (create_data_ref, compute_all_dependences,
16590         find_loop_nest): Export.
16591         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
16592         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
16593         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
16594         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
16595         New macros.
16596         (struct mem_ref): Add field reuse_distance.
16597         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
16598         Initialize reuse_distance field.
16599         (issue_prefetch_ref): Select temporality of prefetch according to
16600         reuse_distance.
16601         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
16602         self_reuse_distance, determine_loop_nest_reuse): New functions.
16603         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
16604         (tree_ssa_prefetch_arrays): Dump L2 cache size.
16605         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
16606         dependency.
16607
16608 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
16609
16610         * tree-ssa-alias.c: Add aliasing overview.
16611
16612 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
16613             Danny Smith  <dannysmith@users.sourceforge.net>
16614
16615         PR target/29498
16616         * config/i386/t-crtfm: Compile crtfastmath.o with
16617         -minline-all-stringops.
16618         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
16619         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
16620
16621 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16622
16623         * doc/md.texi: Document constraints on HP PA-RISC.
16624
16625         * pa/constraints.md: New file.
16626         * pa.md: Include constraints.md.
16627         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
16628         (integer_store_memory_operand, ldil_cint_p): New functions.
16629         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
16630         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
16631         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
16632         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
16633         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
16634
16635 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
16636
16637         PR c/31339
16638         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
16639         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
16640         case POSTDECREMENT_EXPR>): Return the error_mark_node
16641         if either the real or imaginary parts would an
16642         error_mark_node.
16643
16644 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
16645
16646         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
16647         name when we remove it from a call.
16648
16649 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
16650
16651         * targhooks.c (default_narrow_bitfield): Remove.
16652         * targhooks.h: Remove the prototype for
16653         default_narrow_bitfield.
16654
16655         * langhooks-def.h: Remove the prototype for
16656         hook_get_alias_set_0.
16657         * langhooks.c (hook_get_alias_set_0): Remove.
16658
16659         * global.c (EXECUTE_IF_CONFLICT): Remove.
16660
16661 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16662
16663         PR tree-opt/32100
16664         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
16665         return true when truth_value_p is true and the type
16666         is of signed:1.
16667
16668 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
16669
16670         * doc/install.texi (Prerequisites): We no longer require Autoconf
16671         2.13 for the top-level.
16672
16673 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
16674
16675         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
16676         memory access via x86_expand_vector_move_misalign() only for
16677         TImode values on 32-bit targets.
16678
16679 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
16680
16681         * matrix-reorg.c: New file. Implement matrix flattening and
16682         transposing optimization.
16683         * tree-pass.h: Add matrix reorg pass.
16684         * common.opt: Add fipa-mreorg flag.
16685         * Makefile.in: Add matrix-reorg.c.
16686         * passes.c: Add matrix reorg pass.
16687         * varpool.c (add_new_static_var): New function.
16688         * cgraph.h (add_new_static_var): Declare.
16689
16690 2007-05-27  Eric Christopher  <echristo@apple.com>
16691
16692         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
16693         sp_offset depending on stack size. Save r12 depending
16694         on registers we're saving later.
16695         (rs6000_emit_epilogue): Update sp_offset depending only
16696         on stack size.
16697
16698 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
16699
16700         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
16701         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
16702         * ifcvt.c (if_convert): Ditto.
16703         * tree-ssa-threadupdate.c (thread_block): Ditto.
16704         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
16705         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
16706         verify_loop_closed_ssa): Check number_of_loops instead of
16707         current_loops.
16708         * predict.c (tree_estimate_probability): Ditto.
16709         * tree-if-conv.c (main_tree_if_conversion): Ditto.
16710         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
16711         * modulo-sched.c (sms_schedule): Ditto.
16712         * tree-scalar-evolution.c (scev_const_prop): Ditto.
16713         (scev_finalize): Do not do anything if scev analysis was not
16714         initialized.
16715         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
16716         current_loops == NULL.
16717         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
16718         * loop-init.c (loop_optimizer_init): Do not free current_loops when
16719         there are no loops.
16720         (loop_optimizer_finalize): Assert that loops were analyzed.
16721         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
16722         rtl_doloop): Check number_of_loops instead of current_loops.
16723         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
16724         current_loops == NULL.
16725         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
16726         gate_tree_vectorize tree_linear_transform, check_data_deps,
16727         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
16728         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
16729         Check number_of_loops instead of current_loops.
16730         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
16731         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
16732         free loops if available.
16733         (execute_pre): Do not pass do_fre to fini_pre.
16734
16735 2007-05-27  Tobias Burnus  <burnus@net-b.de>
16736
16737         PR middle-end/32083
16738         * real.c (mpfr_from_real): Fix sign of -Inf.
16739
16740 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
16741
16742         * tree-vect-transform.c (vectorizable_conversion): Initialize
16743         tree_code variables to ERROR_MARK.
16744         (vectorizable_type_demotion): Likewise.
16745         (vectorizable_type_promotion): Likewise.
16746
16747 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
16748
16749         PR target/32065
16750         * config/i386/i386.md (movti): Handle push operands via
16751         ix86_expand_push().
16752
16753 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
16754
16755         * basic-block.h: Remove the prototype for merge_seq_blocks.
16756         * cfgcleanup.c (merge_seq_blocks): Remove.
16757
16758         * tree-flow.h: Remove the prototype for is_aliased_with.
16759         * tree-ssa-alias.c (is_aliased_with): Remove.
16760
16761 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
16762
16763         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
16764
16765         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
16766
16767         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
16768         ix86_expand_sse4_unpack if SSE4.1 is enabled.
16769         (vec_unpacks_hi_v16qi): Likewise.
16770         (vec_unpacku_lo_v16qi): Likewise.
16771         (vec_unpacks_lo_v16qi): Likewise.
16772         (vec_unpacku_hi_v8hi): Likewise.
16773         (vec_unpacks_hi_v8hi): Likewise.
16774         (vec_unpacku_lo_v8hi): Likewise.
16775         (vec_unpacks_lo_v8hi): Likewise.
16776         (vec_unpacku_hi_v4si): Likewise.
16777         (vec_unpacks_hi_v4si): Likewise.
16778         (vec_unpacku_lo_v4si): Likewise.
16779         (vec_unpacks_lo_v4si): Likewise.
16780
16781 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
16782
16783         * c-typeck.c, config/arm/arm.c, config/darwin.c,
16784         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
16785         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
16786         follow spelling conventions in various
16787         warning/error/diagnostic messages.
16788
16789         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
16790         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
16791         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
16792         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
16793         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
16794         * doc/tm.texi: Follow spelling conventions.
16795
16796 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16797
16798         PR tree-opt/32090
16799         * tree-ssa-forwprop.c
16800         (forward_propagate_addr_into_variable_array_index): Remove
16801         the lhs argument.  Use the type of def_rhs instead of lhs.
16802         (forward_propagate_addr_expr_1): Update use of
16803         forward_propagate_addr_into_variable_array_index.
16804
16805 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
16806             Nigel Stephens  <nigel@mips.com>
16807
16808         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
16809         function attributes, "far" being an alias for "long_call".
16810         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
16811         (mips_near_type_p, mips_far_type_p): New.
16812         (mips_comp_type_attributes): New function to check that attributes
16813         attached to a function type are compatible.
16814         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
16815         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
16816         to the target function of the thunk.
16817         (mips_encode_section_info): Check for "near" and "far" function
16818         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
16819
16820         * config/mips/predicates.md (const_call_insn_operand): Test only
16821         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
16822
16823         * doc/extend.texi (Function Attributes): Document MIPS "near" and
16824         "far" attributes.
16825
16826         * testsuite/gcc.target/mips/near-far-1.c: New test case.
16827         * testsuite/gcc.target/mips/near-far-2.c: New test case.
16828         * testsuite/gcc.target/mips/near-far-3.c: New test case.
16829         * testsuite/gcc.target/mips/near-far-4.c: New test case.
16830
16831 2007-05-25  Eric Christopher  <echristo@apple.com>
16832
16833         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
16834         to x86-darwin configurations.
16835         * config/i386/t-darwin: Add softfp support.
16836         * config/i386/t-darwin64: Ditto.
16837         * config/i386/sfp-machine.h: If mach then don't use
16838         aliasing, emit a stub to call.
16839
16840 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
16841
16842         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
16843         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
16844         tree-predcom.c, tree-ssa-alias-warnings.c,
16845         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
16846         comment typos.  Follow spelling conventions.
16847         * doc/cpp.texi, doc/invoke.texi: Fix typos.
16848
16849 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
16850
16851         PR target/32065
16852         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
16853         constants into memory.  Expand unaligned memory references for
16854         SSE modes via x86_expand_vector_move_misalign() function.
16855
16856 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
16857
16858         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
16859         "memory" attribute for "sseishft" type insn without operands[2].
16860
16861 2007-05-25  Dirk Mueller  <dmueller@suse.de>
16862             Marcus Meissner <meissner@suse.de>
16863
16864         * doc/extend.texi (alloc_size): New attribute.
16865         * c-common.c (handle_alloc_size_attribute): New.
16866         * tree-object-size.c (alloc_object_size): Use alloc_size
16867         attribute, if available.
16868
16869 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
16870
16871         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
16872         with MASK_SSE2.
16873         (__builtin_ia32_vec_ext_v2di): Likewise.
16874         (__builtin_ia32_vec_ext_v4si): Likewise.
16875         (__builtin_ia32_vec_ext_v8hi): Likewise.
16876         (__builtin_ia32_vec_ext_v16qi): Likewise.
16877         (__builtin_ia32_vec_set_v8hi): Likewise.
16878
16879 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
16880
16881         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
16882
16883 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
16884
16885         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
16886         (arm_is_longcall_p): Rename to...
16887         (arm_is_long_call_p): ...this.  Take a single tree argument and
16888         return a bool.
16889         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
16890         (CUMULATIVE_ARGS): Remove call_cookie.
16891         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
16892         (ENCODED_LONG_CALL_ATTR_P): Delete.
16893         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
16894         LONG_CALL_FLAG_CHAR cases.
16895         (ARM_DECLARE_FUNCTION_SIZE): Delete.
16896         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
16897         ARM_DECLARE_FUNCTION_SIZE.
16898         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
16899         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
16900         (arm_encode_call_attribute, current_file_function_operand): Delete.
16901         (arm_function_in_section_p): New function.
16902         (arm_is_longcall_p): Rename to...
16903         (arm_is_long_call_p): ...this.  Take the target function as a single
16904         argument and return a bool.  Do not rely on call cookies.  Check
16905         whether the target symbol is in the same section as the current
16906         function, not just the same compilation unit.
16907         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
16908         (arm_encode_section_info): Don't encode a call type.
16909         * config/arm/arm.md (call, call_value): Update calls to
16910         arm_is_long(_)call_p.  Simplify logic.
16911         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
16912         Update calls to arm_is_long(_)call_p.
16913
16914 2007-05-25  Richard Guenther  <rguenther@suse.de>
16915
16916         PR tree-optimization/31982
16917         * tree-ssa-forwprop.c
16918         (forward_propagate_addr_into_variable_array_index): Handle arrays
16919         with element size one.
16920
16921 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16922
16923         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
16924         (umulsi3_highpart): Likewise.
16925
16926 2007-05-24  Ian Lance Taylor  <iant@google.com>
16927
16928         PR rtl-optimization/32069
16929         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
16930         is NULL.
16931
16932 2007-05-24  Ollie Wild  <aaw@google.com>
16933
16934         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
16935         description.
16936
16937 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
16938
16939         * postreload-gcse.c (reg_changed_after_insn_p): New function.
16940         (oprs_unchanged_p): Use it to check all registers in a REG.
16941         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
16942         (reg_set_between_after_reload_p): Delete.
16943         (reg_used_between_after_reload_p): Likewise.
16944         (reg_set_or_used_since_bb_start): Likewise.
16945         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
16946         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
16947         Use reg_set_between_p instead of reg_set_between_after_reload_p.
16948         * rtlanal.c (reg_set_p): Check whether REG overlaps
16949         regs_invalidated_by_call, rather than just checking the
16950         membership of REGNO (REG).
16951
16952 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
16953
16954         * doc/passes.texi: Document predictive commoning.
16955         * doc/invoke.texi (-fpredictive-commoning): Document.
16956         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
16957         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
16958         adding indices to the generated name.
16959         (schedule_sm): Pass 0 to get_lsm_tmp_name.
16960         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
16961         * tree-pretty-print.c (op_symbol_1): Renamed to ...
16962         (op_symbol_code): ... and exported.
16963         (dump_omp_clause, op_symbol): Use op_symbol_code
16964         instead of op_symbol_1.
16965         * tree-pass.h (pass_predcom): Declare.
16966         * timevar.def (TV_PREDCOM): New timevar.
16967         * tree-ssa-loop.c (run_tree_predictive_commoning,
16968         gate_tree_predictive_commoning, pass_predcom): New.
16969         * tree-data-ref.c (find_data_references_in_loop): Find the
16970         references in dominance order.
16971         (canonicalize_base_object_address): Ensure that the result has
16972         pointer type.
16973         (dr_analyze_innermost): Export.
16974         (create_data_ref): Code to fail for references with invariant
16975         address moved ...
16976         (find_data_references_in_stmt): ... here.
16977         * tree-data-ref.h (dr_analyze_innermost): Declare.
16978         * tree-affine.c: Include tree-gimple.h and hashtab.h.
16979         (aff_combination_find_elt, name_expansion_hash,
16980         name_expansion_eq, tree_to_aff_combination_expand,
16981         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
16982         New functions.
16983         * tree-affine.h (aff_combination_constant_multiple_p,
16984         tree_to_aff_combination_expand): Declare.
16985         * tree-predcom.c: New file.
16986         * common.opt (fpredictive-commoning): New option.
16987         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
16988         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
16989         * Makefile.in (tree-predcom.o): Add.
16990         (tree-affine.o): Add TREE_GIMPLE_H dependency.
16991         * passes.c (init_optimization_passes): Add dceloop after
16992         copy propagation in loop optimizer.  Add predictive commoning
16993         to loop optimizer passes.
16994
16995 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
16996
16997         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
16998         default hook.
16999
17000 2007-05-24  Jan Hubicka  <jh@suse.cz>
17001
17002         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
17003         statistics.
17004         (genheader): Include statistics.h.
17005
17006         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
17007         notes are gone.
17008         * print-rtl.c (flag_dump_unnumbered): Update comments.
17009         (print_rtl): Fix my previous change.
17010         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
17011         specific data.
17012
17013 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
17014
17015         PR middle-end/32018
17016         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
17017         set_loop_copy.
17018         (thread_through_all_blocks): Call initialize_original_copy_tables
17019         and free_original_copy_tables.
17020         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
17021         Use set_loop_copy.
17022         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
17023         * cfghooks.c (duplicate_block): Use get_loop_copy.
17024         * cfg.c: Include cfgloop.h.
17025         (loop_copy): New hash table.
17026         (initialize_original_copy_tables): Initialize loop_copy table.
17027         (free_original_copy_tables): Free loop_copy table.
17028         (copy_original_table_clear, copy_original_table_set,
17029         set_loop_copy, get_loop_copy): New functions.
17030         (set_bb_original, set_bb_copy): Use copy_original_table_set.
17031         * cfgloop.h (struct loop): Remove copy field.
17032         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
17033         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
17034
17035 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17036
17037         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
17038         -msse/-msse2/-msse3.
17039
17040 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17041
17042         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
17043         __builtin_ia32_vec_set_v2di with MASK_64BIT.
17044
17045 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
17046
17047         PR target/27067
17048         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
17049         * targhooks.h (default_mangle_decl_assembler_name): Declare
17050         default hook.
17051         * targhooks.c (default_mangle_decl_assembler_name): Define
17052         default hook.
17053         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
17054         default hook.
17055         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
17056         * langhooks.c (lhd_set_decl_assembler_name): Call
17057         targetm.mangle_decl_assembler_name for names with global scope.
17058
17059         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
17060         default.
17061         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
17062         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
17063         Declare.
17064         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
17065         New. Factored out of i386_pe_encode_section_info.
17066         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
17067         Move check for prior decoration of stdcall
17068         symbols to i386_pe_encode_section_info.
17069         (i386_pe_encode_section_info): Adjust call to
17070         gen_stdcall_or_fastcall_suffix.  Use
17071         i386_pe_maybe_mangle_decl_assembler_name, if needed.
17072         (i386_pe_mangle_decl_assembler_name): New. Wrap
17073         i386_pe_maybe_mangle_decl_assembler_name.
17074
17075 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
17076
17077         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
17078         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
17079         * langhooks.c (get_signed_or_unsigned_type): Don't check for
17080         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
17081         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
17082         TYPE_UNSIGNED.
17083
17084 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
17085             Nigel Stephens  <nigel@mips.com>
17086             Richard Sandiford  <richard@codesourcery.com>
17087
17088         Fix up MIPS16 hard float and add support for complex.
17089
17090         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
17091         (TARGET_SOFT_FLOAT_ABI): New.
17092         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
17093         __mips_soft_float to reflect the ABI in use, not whether the
17094         FPU is directly accessible (e.g., in MIPS16 mode).
17095         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
17096         (UNITS_PER_FPVALUE): Likewise.
17097
17098         * config/mips/mips.c (mips_expand_call): Remove redundant
17099         TARGET_MIPS16 check.
17100         (mips_arg_regno): New.
17101         (function_arg_advance): When setting bits in cum->fp_code for
17102         MIPS16, don't subtract 1 from cum->arg_number, since it is now
17103         zero-based.
17104         (function_arg): Use mips_arg_regno.
17105         (mips_return_mode_in_fpr_p): New.
17106         (mips16_call_stub_mode_suffix): New.
17107         (mips16_cfun_returns_in_fpr_p): New.
17108         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
17109         (mips_output_function_prologue): Test mips16_hard_float, not
17110         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
17111         (mips_expand_epilogue): Call MIPS16 helper routines to copy
17112         return value into a floating-point register.
17113         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
17114         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
17115         (mips16_fp_args): Handle MIPS32r2 ISA which supports
17116         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
17117         word of double arguments from or to the high bits of 64-bit
17118         floating point registers.
17119         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
17120         (mips16_fpret_double): New helper function.
17121         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
17122         support for complex modes.  Fill in DECL_RESULT for stubdecl.
17123         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
17124
17125         * config/mips/mips16.S
17126         (RET, ARG1, ARG2): New.
17127         (MERGE_GPRf, MERGE_GPRt): New.
17128         (DELAYt, DELAYf): New.
17129         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
17130         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
17131         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
17132         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
17133         (SFOP): Renamed to...
17134         (OPSF3): This, and macro-ified.  Updated all uses.
17135         (SFOP2): Renamed to...
17136         (OPSF2): This, and macro-ified.  Updated all uses.
17137         (SFCMP): Renamed to...
17138         (CMPSF): This, and macro-ified.  Updated all uses.
17139         (SFREVCMP): Renamed to...
17140         (REVCMPSF): This, and macro-ified.  Updated all uses.
17141         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
17142         (LDDBL1, LDDBL2, RETDBL): Deleted.
17143         (DFOP): Renamed to...
17144         (OPDF3): This, and macro-ified.  Updated all uses.
17145         (DFOP2): Renamed to...
17146         (OPDF2): This, and macro-ified.  Updated all uses.
17147         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
17148         (DFCMP): Renamed to...
17149         (CMPDF): This, and macro-ified.  Updated all uses.
17150         (DFREVCMP): Renamed to...
17151         (REVCMPDF): This, and macro-ified.  Updated all uses.
17152         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
17153         (RET_FUNCTION): New.
17154         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
17155         (__mips16_ret_sc, __mips16_ret_dc): New.
17156         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
17157         STUB_ARGS_6, STUB_ARGS_10): New.
17158         (CALL_STUB_NO_RET): New.
17159         (__mips16_call_stub_1): Macro-ified.
17160         (__mips16_call_stub_5): Macro-ified.
17161         (__mips16_call_stub_2): Macro-ified.
17162         (__mips16_call_stub_6): Macro-ified.
17163         (__mips16_call_stub_9): Macro-ified.
17164         (__mips16_call_stub_10): Macro-ified.
17165         (CALL_STUB_RET): New.
17166         (__mips16_call_stub_sf_0): Macro-ified.
17167         (__mips16_call_stub_sf_1): Macro-ified.
17168         (__mips16_call_stub_sf_5): Macro-ified.
17169         (__mips16_call_stub_sf_2): Macro-ified.
17170         (__mips16_call_stub_sf_6): Macro-ified.
17171         (__mips16_call_stub_sf_9): Macro-ified.
17172         (__mips16_call_stub_sf_10): Macro-ified.
17173         (__mips16_call_stub_df_0): Macro-ified.
17174         (__mips16_call_stub_df_1): Macro-ified.
17175         (__mips16_call_stub_df_5): Macro-ified.
17176         (__mips16_call_stub_df_2): Macro-ified.
17177         (__mips16_call_stub_df_6): Macro-ified.
17178         (__mips16_call_stub_df_9): Macro-ified.
17179         (__mips16_call_stub_df_10): Macro-ified.
17180         (__mips16_call_stub_sc_0): New.
17181         (__mips16_call_stub_sc_1): New.
17182         (__mips16_call_stub_sc_5): New.
17183         (__mips16_call_stub_sc_2): New.
17184         (__mips16_call_stub_sc_6): New.
17185         (__mips16_call_stub_sc_9): New.
17186         (__mips16_call_stub_sc_10): New.
17187         (__mips16_call_stub_dc_0): New.
17188         (__mips16_call_stub_dc_1): New.
17189         (__mips16_call_stub_dc_5): New.
17190         (__mips16_call_stub_dc_2): New.
17191         (__mips16_call_stub_dc_6): New.
17192         (__mips16_call_stub_dc_9): New.
17193         (__mips16_call_stub_dc_10): New.
17194
17195         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
17196         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
17197         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
17198
17199 2007-05-23  Ian Lance Taylor  <iant@google.com>
17200
17201         * doc/invoke.texi (Invoking GCC): Document that the order of the
17202         -l option matters.
17203
17204 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
17205
17206         PR target/30987
17207         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
17208         * config/score/predicate.md (const_pow2, const_npow2): Remove.
17209         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
17210         undef.
17211
17212         PR target/30474
17213         * config/score/score.c (score_print_operand): Make sure that only
17214         lower bits are used.
17215
17216 2007-05-22  Ian Lance Taylor  <iant@google.com>
17217
17218         * tree-vrp.c (avoid_overflow_infinity): New static function,
17219         broken out of set_value_range_to_value.
17220         (set_value_range_to_value): Call avoid_overflow_infinity.
17221         (extract_range_from_assert): Likewise.
17222
17223 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17224
17225         PR middle-end/31095
17226          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
17227         change the type before looking for a COMPOUND_EXPR.
17228
17229 2007-05-22  Ian Lance Taylor  <iant@google.com>
17230
17231         * lower-subreg.c (decompose_multiword_subregs): If we change an
17232         insn, call remove_retval_note on it.
17233
17234 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
17235
17236         * regs.h (end_hard_regno): New function.
17237         (END_HARD_REGNO, END_REGNO): New macros.
17238         (add_to_hard_reg_set): New function.
17239         (remove_from_hard_reg_set): Likewise.
17240         (in_hard_reg_set_p): Likewise.
17241         (overlaps_hard_reg_set_p): Likewise.
17242         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
17243         (note_btr_set): Use END_HARD_REGNO.
17244         * caller-save.c (setup_save_areas): Use end_hard_regno.
17245         (mark_set_regs): Use END_HARD_REGNO.
17246         (add_stored_regs): Use end_hard_regno.
17247         (mark_referenced_regs): Use add_to_hard_reg_set.
17248         * combine.c (update_table_tick): Use END_REGNO.
17249         (record_value_for_reg): Likewise.
17250         (record_dead_and_set_regs): Likewise.
17251         (get_last_value_validate): Likewise.
17252         (use_crosses_set_p): Likewise.
17253         (reg_dead_at_p_1): Likewise.
17254         (reg_dead_at_p): Likewise.
17255         (mark_used_regs_combine): Use add_to_hard_reg_set.
17256         (move_deaths): Use END_HARD_REGNO.
17257         (reg_bitfield_target_p): Use end_hard_regno.
17258         (distribute_notes): Use END_HARD_REGNO.
17259         * cse.c (mention_regs): Use END_REGNO.
17260         (insert): Use add_to_hard_reg_set.
17261         (invalidate): Use END_HARD_REGNO.
17262         (invalidate_for_call): Likewise.
17263         (exp_equiv_p): Use END_REGNO.
17264         (cse_insn): Likewise.
17265         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
17266         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
17267         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
17268         * function.c (keep_stack_depressed): Use end_hard_regno.
17269         * global.c (global_alloc): Use end_hard_regno.
17270         (global_conflicts): Use add_to_hard_reg_set instead of
17271         mark_reg_live_nc.
17272         (find_reg): Likewise.
17273         (mark_reg_store): Likewise.
17274         (mark_reg_conflicts): Likewise.
17275         (mark_reg_death): Use remove_from_hard_reg_set.
17276         (mark_reg_live_nc): Delete.
17277         (set_preference): Use end_hard_regno.
17278         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
17279         remove_from_hard_reg_set.
17280         (post_mark_life): Use add_to_hard_reg_set.
17281         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
17282         (reg_becomes_live): Use add_to_hard_reg_set.
17283         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
17284         (peep2_find_free_register): Use add_to_hard_reg_set.
17285         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
17286         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
17287         * regrename.c (note_sets): Use add_to_hard_reg_set.
17288         (clear_dead_regs): Use remove_from_hard_reg_set.
17289         (regrename_optimize): Use add_to_hard_reg_set.
17290         (find_oldest_value_reg): Use in_hard_reg_set_p.
17291         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
17292         (hard_reg_set_here_p): Use end_hard_regno.
17293         (decompose): Likewise.
17294         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
17295         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
17296         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
17297         (mark_home_live): Use end_hard_regno.
17298         (spill_hard_reg): Likewise.
17299         (clear_reload_reg_in_use): Likewise.
17300         * reorg.c (delete_prior_computation): Use END_REGNO.
17301         * resource.c (update_live_status): Use END_HARD_REGNO.
17302         (mark_referenced_resources): Use add_to_hard_reg_set.
17303         (mark_set_resources): Likewise.
17304         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
17305         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
17306         (reg_overlap_mentioned_p): Likewise.
17307         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
17308         (covers_regno_no_parallel_p): Use END_REGNO.
17309         (find_regno_note): Likewise.
17310         (find_reg_fusage): Use END_HARD_REGNO.
17311         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
17312         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
17313
17314 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
17315
17316         * mode-switching.c (reg_dies): Change type of second argument to
17317         "HARD_REG_SET *".
17318         (optimize_mode_switching): Update accordingly.
17319
17320 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
17321
17322         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
17323         in favor of...
17324         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
17325         (hard_reg_set_empty_p): ...these new functions.
17326         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
17327         GO_IF_HARD_REG_SUBSET.
17328         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
17329         instead of GO_IF_HARD_REG_EQUAL.
17330         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
17331         instead of GO_IF_HARD_REG_EQUAL.
17332         * global.c (find_reg): Use hard_reg_set_empty_p instead of
17333         GO_IF_HARD_REG_SUBSET.
17334         (modify_reg_pav): Use hard_reg_set_empty_p instead of
17335         GO_IF_HARD_REG_EQUAL.
17336         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
17337         of GO_IF_HARD_REG_SUBSET.
17338         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
17339         instead of GO_IF_HARD_REG_EQUAL.
17340         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
17341         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
17342         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
17343         of GO_IF_HARD_REG_SUBSET,
17344         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
17345         GO_IF_HARD_REG_SUBSET.
17346         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
17347         instead of GO_IF_HARD_REG_EQUAL.
17348         * config/sh/sh.c (push_regs, calc_live_regs): Use
17349         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
17350         (hard_regs_intersect_p): Delete.
17351
17352 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
17353
17354         * doc/sourcebuild.texi (Test Directives) Add dg-message.
17355
17356 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
17357             Richard Henderson  <rth@redhat.com>
17358
17359         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
17360         extra_headers.
17361         (x86_64-*-*): Likewise.
17362
17363         * i386/i386-modes.def (V2QI): New.
17364
17365         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
17366         SSE4A.
17367         (override_options): Support SSE4.1.
17368         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
17369         (IX86_BUILTIN_BLENDPS): Likewise.
17370         (IX86_BUILTIN_BLENDVPD): Likewise.
17371         (IX86_BUILTIN_BLENDVPS): Likewise.
17372         (IX86_BUILTIN_PBLENDVB128): Likewise.
17373         (IX86_BUILTIN_PBLENDW128): Likewise.
17374         (IX86_BUILTIN_DPPD): Likewise.
17375         (IX86_BUILTIN_DPPS): Likewise.
17376         (IX86_BUILTIN_INSERTPS128): Likewise.
17377         (IX86_BUILTIN_MOVNTDQA): Likewise.
17378         (IX86_BUILTIN_MPSADBW128): Likewise.
17379         (IX86_BUILTIN_PACKUSDW128): Likewise.
17380         (IX86_BUILTIN_PCMPEQQ): Likewise.
17381         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
17382         (IX86_BUILTIN_PMAXSB128): Likewise.
17383         (IX86_BUILTIN_PMAXSD128): Likewise.
17384         (IX86_BUILTIN_PMAXUD128): Likewise.
17385         (IX86_BUILTIN_PMAXUW128): Likewise.
17386         (IX86_BUILTIN_PMINSB128): Likewise.
17387         (IX86_BUILTIN_PMINSD128): Likewise.
17388         (IX86_BUILTIN_PMINUD128): Likewise.
17389         (IX86_BUILTIN_PMINUW128): Likewise.
17390         (IX86_BUILTIN_PMOVSXBW128): Likewise.
17391         (IX86_BUILTIN_PMOVSXBD128): Likewise.
17392         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
17393         (IX86_BUILTIN_PMOVSXWD128): Likewise.
17394         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
17395         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
17396         (IX86_BUILTIN_PMOVZXBW128): Likewise.
17397         (IX86_BUILTIN_PMOVZXBD128): Likewise.
17398         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
17399         (IX86_BUILTIN_PMOVZXWD128): Likewise.
17400         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
17401         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
17402         (IX86_BUILTIN_PMULDQ128): Likewise.
17403         (IX86_BUILTIN_PMULLD128): Likewise.
17404         (IX86_BUILTIN_ROUNDPD): Likewise.
17405         (IX86_BUILTIN_ROUNDPS): Likewise.
17406         (IX86_BUILTIN_ROUNDSD): Likewise.
17407         (IX86_BUILTIN_ROUNDSS): Likewise.
17408         (IX86_BUILTIN_PTESTZ): Likewise.
17409         (IX86_BUILTIN_PTESTC): Likewise.
17410         (IX86_BUILTIN_PTESTNZC): Likewise.
17411         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
17412         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
17413         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
17414         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
17415         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
17416         (bdesc_ptest): New.
17417         (bdesc_sse_3arg): Likewise.
17418         (bdesc_2arg): Likewise.
17419         (bdesc_1arg): Likewise.
17420         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
17421         with 3 args.
17422         (ix86_expand_sse_4_operands_builtin): New.
17423         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
17424         smaller than 8 bits as the 2nd arg.
17425         (ix86_expand_sse_ptest): New.
17426         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
17427         (ix86_expand_vector_set): Support SSE4.1.
17428         (ix86_expand_vector_extract): Likewise.
17429
17430         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
17431         __SSE4_1__ for -msse4.1.
17432
17433         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
17434         (UNSPEC_INSERTPS): Likewise.
17435         (UNSPEC_DP): Likewise.
17436         (UNSPEC_MOVNTDQA): Likewise.
17437         (UNSPEC_MPSADBW): Likewise.
17438         (UNSPEC_PHMINPOSUW): Likewise.
17439         (UNSPEC_PTEST): Likewise.
17440         (UNSPEC_ROUNDP): Likewise.
17441         (UNSPEC_ROUNDS): Likewise.
17442
17443         * config/i386/i386.opt (msse4.1): New for SSE4.1.
17444
17445         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
17446         (const_pow2_1_to_32768_operand): Likewise.
17447
17448         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
17449         file.
17450
17451         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
17452         SSE4.1.
17453         (sse4_1_insertps): Likewise.
17454         (*sse4_1_extractps): Likewise.
17455         (sse4_1_ptest): Likewise.
17456         (sse4_1_mulv2siv2di3): Likewise.
17457         (*sse4_1_mulv4si3): Likewise.
17458         (*sse4_1_smax<mode>3): Likewise.
17459         (*sse4_1_umax<mode>3): Likewise.
17460         (*sse4_1_smin<mode>3): Likewise.
17461         (*sse4_1_umin<mode>3): Likewise.
17462         (sse4_1_eqv2di3): Likewise.
17463         (*sse4_1_pinsrb): Likewise.
17464         (*sse4_1_pinsrd): Likewise.
17465         (*sse4_1_pinsrq): Likewise.
17466         (*sse4_1_pextrb): Likewise.
17467         (*sse4_1_pextrb_memory): Likewise.
17468         (*sse4_1_pextrw_memory): Likewise.
17469         (*sse4_1_pextrq): Likewise.
17470         (sse4_1_blendpd): Likewise.
17471         (sse4_1_blendps): Likewise.
17472         (sse4_1_blendvpd): Likewise.
17473         (sse4_1_blendvps): Likewise.
17474         (sse4_1_dppd): Likewise.
17475         (sse4_1_dpps): Likewise.
17476         (sse4_1_movntdqa): Likewise.
17477         (sse4_1_mpsadbw): Likewise.
17478         (sse4_1_packusdw): Likewise.
17479         (sse4_1_pblendvb): Likewise.
17480         (sse4_1_pblendw): Likewise.
17481         (sse4_1_phminposuw): Likewise.
17482         (sse4_1_extendv8qiv8hi2): Likewise.
17483         (*sse4_1_extendv8qiv8hi2): Likewise.
17484         (sse4_1_extendv4qiv4si2): Likewise.
17485         (*sse4_1_extendv4qiv4si2): Likewise.
17486         (sse4_1_extendv2qiv2di2): Likewise.
17487         (*sse4_1_extendv2qiv2di2): Likewise.
17488         (sse4_1_extendv4hiv4si2): Likewise.
17489         (*sse4_1_extendv4hiv4si2): Likewise.
17490         (sse4_1_extendv2hiv2di2): Likewise.
17491         (*sse4_1_extendv2hiv2di2): Likewise.
17492         (sse4_1_extendv2siv2di2): Likewise.
17493         (*sse4_1_extendv2siv2di2): Likewise.
17494         (sse4_1_zero_extendv8qiv8hi2): Likewise.
17495         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
17496         (sse4_1_zero_extendv4qiv4si2): Likewise.
17497         (*sse4_1_zero_extendv4qiv4si2): Likewise.
17498         (sse4_1_zero_extendv2qiv2di2): Likewise.
17499         (*sse4_1_zero_extendv2qiv2di2): Likewise.
17500         (sse4_1_zero_extendv4hiv4si2): Likewise.
17501         (*sse4_1_zero_extendv4hiv4si2): Likewise.
17502         (sse4_1_zero_extendv2hiv2di2): Likewise.
17503         (*sse4_1_zero_extendv2hiv2di2): Likewise.
17504         (sse4_1_zero_extendv2siv2di2): Likewise.
17505         (*sse4_1_zero_extendv2siv2di2): Likewise.
17506         (sse4_1_roundpd): Likewise.
17507         (sse4_1_roundps): Likewise.
17508         (sse4_1_roundsd): Likewise.
17509         (sse4_1_roundss): Likewise.
17510         (mulv4si3): Don't expand for SSE4.1.
17511         (smax<mode>3): Likewise.
17512         (umaxv4si3): Likewise.
17513         (uminv16qi3): Likewise.
17514         (umin<mode>3): Likewise.
17515         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
17516
17517         * doc/extend.texi: Document SSE4.1 built-in functions.
17518
17519         * doc/invoke.texi: Document -msse4.1.
17520
17521 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
17522
17523         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
17524         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
17525         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
17526         (ASM_SPEC): Add asm_pcrel_spec.
17527         (EXTRA_SPECS): Add asm_pcrel_spec.
17528
17529 2007-05-21  David Daney  <ddaney@avtrex.com>
17530
17531         * doc/install.texi (Building a cross compiler): Add requirements
17532         for Java cross compiler.
17533
17534 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17535
17536         PR middle-end/31995
17537         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
17538         Add loopno argument.  Use evolution_function_is_invariant_rec_p
17539         instead of evolution_function_is_constant_p.
17540         Update calls to evolution_function_is_affine_multivariate_p.
17541         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
17542         Add loopno argument.
17543         * tree-scalar-evolution.c (gather_chrec_stats): Call
17544         evolution_function_is_affine_multivariate_p with a loop
17545         number of 0.
17546         * tree-data-ref.c (analyze_miv_subscript): Likewise.
17547         (analyze_overlapping_iterations): Likewise.
17548         (access_functions_are_affine_or_constant_p): Likewise.
17549         (build_classic_dist_vector_1): If the access functions
17550         are equal, don't do anything.
17551
17552 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
17553             Paolo Carlini  <pcarlini@suse.de>
17554             Uros Bizjak  <ubizjak@gmail.com>
17555
17556         * c-cppbuiltin.c (c_cpp_builtins): Define
17557         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
17558         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
17559         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
17560         * doc/cpp.texi ([Standard Predefined Macros]): Document.
17561
17562 2007-05-21  Mike Stump  <mrs@apple.com>
17563
17564         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
17565         handling as well.
17566         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
17567
17568 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
17569
17570         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
17571         implementation if __OPTIMIZE__ is not defined.
17572         (_mm_alignr_pi8): Ditto.
17573         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
17574         (_mm_inserti_si64): Ditto.
17575         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
17576         (_mm_slli_epi16): Ditto.
17577         (_mm_slli_epi32): Ditto.
17578         (_mm_slli_epi64): Ditto.
17579         (_mm_srai_epi16): Ditto.
17580         (_mm_srai_epi32): Ditto.
17581         (_mm_srli_si128): Ditto.
17582         (_mm_slli_si128): Ditto.
17583         (_mm_srli_epi16): Ditto.
17584         (_mm_srli_epi32): Ditto.
17585         (_mm_srli_epi64): Ditto.
17586         (_mm_extract_epi16): Ditto.
17587         (_mm_insert_epi16): Ditto.
17588         (_mm_shufflehi_epi16): Ditto.
17589         (_mm_shufflelo_epi16): Ditto.
17590         (_mm_shuffle_epi32): Ditto.
17591         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
17592         (_m_pextrw): Ditto.
17593         (_mm_insert_pi16): Ditto.
17594         (_m_pinsrw): Ditto.
17595         (_mm_shuffle_pi16): Ditto.
17596         (_m_pshufw): Ditto.
17597         (_mm_shufle_ps): Ditto.
17598         (_mm_prefetch): Ditto.
17599
17600 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
17601
17602         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
17603         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
17604         * real.c (encode_i370_single, decode_i370_single,
17605         encode_i370_double, decode_i370_double): Functions removed.
17606         (i370_single_format, i370_double_format): Initializations removed.
17607         (real_maxval, round_for_format, exact_real_truncate, significand_size):
17608         Consider the log2_b field to always be one.
17609         (ieee_single_format, mips_single_format, coldfire_single_format,
17610         ieee_double_format, mips_double_format, coldfire_double_format,
17611         ieee_extended_motorola_format, ieee_extended_intel_96_format,
17612         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
17613         ibm_extended_format, mips_extended_format, ieee_quad_format,
17614         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
17615         decimal_single_format, decimal_double_format, decimal_quad_format,
17616         c4x_single_format, c4x_extended_format, real_internal_format): Remove
17617         initialization of log2_b.
17618         * real.h (i370_single_format, i370_double_format): Declarations
17619         removed.
17620         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
17621         field to always be one.
17622
17623 2007-05-21  Andreas Schwab  <schwab@suse.de>
17624
17625         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
17626         NOTE_INSN_BASIC_BLOCK_P.
17627         (process_for_unwind_directive): Likewise.
17628
17629 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
17630
17631         * builtins.c (expand_builtin_setjmp_setup): Update comment.
17632         * function.h (struct function): Move va_list_gpr_size,
17633         va_list_fpr_size, function_frequency to front of bitfields.  Add
17634         calls_unwind_init.
17635         (current_function_calls_unwind_init): New.
17636         * except.c (expand_builtin_unwind_init): Set
17637         current_function_calls_unwind_init not
17638         current_function_has_nonlocal_label.
17639         * reload1.c (has_nonexceptional_receiver): New.
17640         (reload): Use it and current_function_calls_unwind_init to
17641         determine whether call-saved regs must be saved.
17642
17643 2007-05-20  Jan Hubicka  <jh@suse.cz>
17644
17645         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
17646         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
17647         * ddg.c (create_ddg): LIkewise.
17648         * final.c (final): Remove hunk moving line number notes around since
17649         they are no longer present at this stage.
17650         (final_scan_insn): Use NOTE_KIND instead of
17651         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
17652         (output_asm_label): Likewise.
17653         * reorg.c (dbr_schedule): Likewise.
17654         * haifa-sched.c (unlink_other_notes): Likewise.
17655         * mode-switching.c (optimize_mode_switching): Likewise.
17656         * graph.c (start_bb): Likewise.
17657         * rtl.def (NOTE): Update description.
17658         * jump.c (squeeze_notes): Delete.
17659         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
17660         NOTE_INSN_BASIC_BLOCK_P when possible.
17661         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
17662         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
17663         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
17664         (dwarf2out_var_location): Likewise.
17665         * cfgbuild.c (make_edges): Likewise.
17666         (find_basic_blocks_1): Likewise.
17667         * function.c (reorder_blocks_1): Likewise.
17668         (epilogue_done): Likewise.
17669         (reposition_prologue_and_epilogue_notes): Likewise.
17670         * print-rtl.c (print_rtx): Likewise; drop code for printing
17671         line number notes.
17672         (print_rtl): Likewise.
17673         (print_rtl_single): Likewise.
17674         * gcse.c (insert_insn_start_bb): Likewise.
17675         * alias.c (init_alias_analysis): Likewise.
17676         * calls.c (fixup_tail_calls): Likewise.
17677         * except.c (sjlj_emit_function_enter): Likewise.
17678         * emit-rtl.c (add_insn_after): Likeiwse.
17679         (emit_label_before): Likewise.
17680         (emit_label_after): Likewise.
17681         (emit_note_before, emit_note_after, emit_note): Update
17682         parameter to be enum insn_note; do not deal with source
17683         files.
17684         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
17685         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
17686         when possible.
17687         (merge_blocks_move_successor_nojumps): Simplify now when
17688         we don't have BLOCK notes.
17689         (try_optimize_cfg): Likewise.
17690         * cfglayout.c (skip_insns_after_block): Likewise.
17691         (record_effective_endpoints): Likewise.
17692         (duplicate_insn_chain): Likewise.
17693         * varasm.c (output_constant_pool_1): Likewise.
17694         * sched-deps.c (sched_analyze): Likewise.
17695         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
17696         Exterminate.
17697         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
17698         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
17699         (SET_INSN_DELETED): Simplify.
17700         (NOTE_LINE_NUMBER): Exterminate.
17701         (NOTE_LINE_KIND): New.
17702         (NOTE_INSN_BASIC_BLOCK_P): Update.
17703         (enum insn_note): Simplify.
17704         (GET_NOTE_INSN_NAME) Simplify.
17705         (emit_note_before, emit_note_after, emit_note): Update prototype.
17706         (squeeze_notes): Remove.
17707         * sched-int.h (NOTE_NOT_BB_P): Update.
17708         * resource.c (mark_target_live_regs): Update.
17709         * sched-rgn.c (debug_dependencies): Update.
17710         * sched-vis.c (print_insn): Update.
17711         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
17712         * config/i386/i386.c (ix86_output_function_epilogue): Update.
17713         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
17714         (TARGET_ADJUST_UNROLL_MAX): Likewise.
17715         (split_branches): Update.
17716         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
17717         4.0.0.
17718         (sh_adjust_unroll_max): Exterminate.
17719         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
17720         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
17721         (m68hc11_reorg): Likewise.
17722         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
17723         (emit_predicate_relation_info): Update.
17724         (process_for_unwind_directive): Update.
17725         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
17726         (output_call): Update.
17727         * config/pa/pa.c (output_lbranch): Update.
17728         (output_millicode_call): Update.
17729         (output_call): Update.
17730         (pa_combine_instructions): Update.
17731         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
17732         * config/bfin/bfin.c (gen_one_bundle): Update.
17733         * cfgrtl.c (can_delete_note_p): Update.
17734         (delete_insn): Update.
17735         (rtl_merge_blocks): Update.
17736         (commit_one_edge_insertion): Update.
17737         (rtl_verify_flow_info): Update.
17738         * stmt.c (expand_case): Do not call squeeze_notes.
17739
17740 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17741
17742         PR middle-end/7651
17743         PR c++/11856
17744         PR c/12963
17745         PR c/23587
17746         PR other/29694
17747         * c.opt (Wtype-limits): New.
17748         * doc/invoke.texi (Wtype-limits): Document it.
17749         (Wextra): Enabled by -Wextra.
17750         * c-opts.c (c_common_post_options): Enabled by -Wextra.
17751         * c-common.c (shorten_compare): Warn with Wtype-limits.
17752
17753 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
17754
17755         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
17756         inlined function, not as a macro.
17757         (_mm_alignr_pi8): Ditto.
17758         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
17759         (_mm_inserti_si64): Ditto.
17760         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
17761         (_mm_extract_epi16): Ditto.
17762         (_mm_insert_epi16): Ditto.
17763         (_mm_shufflehi_epi16): Ditto.
17764         (_mm_shufflelo_epi16): Ditto.
17765         (_mm_shuffle_epi32): Ditto.
17766         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
17767         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
17768         all functions.
17769         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
17770         float constant.
17771         (_m_to_float): Use C89 compatible assignment.
17772
17773 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
17774
17775         PR target/32007
17776         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
17777
17778 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17779
17780         PR middle-end/7651
17781         * doc/invoke.texi (Wreturn-type): Complete description.
17782         (Wextra): Delete item about return-type warning.
17783         * c-decl.c: Delete redundant Wextra warning.
17784
17785 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
17786
17787         PR target/31585
17788         * config/i386/pmmintrin.h: Do not include xmmintrin.h
17789         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
17790         inlined function, not as a macro.
17791         (_mm_prefetch): Ditto.
17792         (_m_pextrw): Ditto.
17793         (_mm_insert_pi16): Ditto.
17794         (_m_pinsrw): Ditto.
17795         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
17796         (_m_pshufw): Ditto. Add const to __N argument.
17797         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
17798         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
17799         (_mm_slli_epi32): Ditto.
17800         (_mm_srli_si128): Implement as always inlined function, not as a
17801         macro.  Add __inline to function declaration.
17802         (_mm_slli_si128): Ditto.
17803
17804 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
17805
17806         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
17807         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
17808         New constants.
17809         (struct fenv): New structure.
17810         (FP_HANDLE_EXCEPTIONS): New define.
17811         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
17812         (_FP_DECL_EXP): New define.
17813         (FP_INIT_ROUNDMODE): New define.
17814         (FP_ROUNDMODE): New define.
17815
17816 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17817
17818         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
17819         (Wconversion): Update description.
17820         (Wconversion-sign): New.
17821         * c.opt (Wconversion-sign): New.
17822         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
17823         means disabled for C++. Otherwise, take the status of Wconversion.
17824         * c-common.c (conversion_warning): Warn with either Wconversion or
17825         Wconversion-sign.
17826         (warnings_for_convert_and_check): Conditions are already checked by
17827         conversion_warning.
17828         (convert_and_check): Don't check warnings if the conversion failed.
17829
17830 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
17831            Anatoly Sokolov <aesok@dol.ru>
17832
17833         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
17834         avr_epilogue_uses) : Add declaration.
17835         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
17836         * config/avr/constraints.md (R): New constraint.
17837         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
17838         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
17839         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
17840         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
17841         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
17842         call_prologue_saves, epilogue_restores, return_from_epilogue,
17843         return_from_main_epilogue, return_from_interrupt_epilogue,
17844         return_from_naked_epilogue, prologue, epilogue): New patterns.
17845         (jump): Handle symbol reference.
17846         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
17847         avr_output_function_prologue, avr_output_function_epilogue): Remove
17848         functions.
17849         (avr_init_machine_status, expand_prologue, expand_epilogue,
17850         avr_asm_function_end_prologue, avr_epilogue_uses,
17851         avr_asm_function_begin_epilogue): New functions.
17852         (prologue_size, epilogue_size, jump_tables_size): Remove global
17853         variables.
17854         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
17855         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
17856         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
17857         (avr_override_options): Initialise init_machine_status.
17858         (output_movhi): Handle all stack pointer loads.
17859         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
17860         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
17861         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
17862         (EPILOGUE_USES) Redefine.
17863         (machine_function) Declare.
17864
17865 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
17866
17867         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
17868         Use a single return statement.
17869
17870 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17871
17872         PR middle-end/30250
17873         * builtins.c (do_mpfr_lgamma_r): New.
17874         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
17875         * tree.h (CASE_FLT_FN_REENT): New.
17876
17877 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
17878
17879         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
17880         (output_die): Use 'unsigned long' with %x.
17881         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
17882         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
17883         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
17884
17885         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
17886
17887 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
17888
17889         PR target/31989
17890         PR target/31681
17891         PR target/31666
17892         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
17893         true if function has no argument.
17894
17895 2007-05-18  DJ Delorie  <dj@redhat.com>
17896
17897         * config/mips/mips.c (mips_offset_within_alignment_p): New.
17898         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
17899
17900 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
17901
17902         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
17903         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
17904         count_trailing_zeros.
17905         (__i386__): Implement count_leading_zeros using __builtin_clz().
17906         Implement count_trailing_zeros usign __builtin_ctz().
17907
17908 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
17909
17910         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
17911
17912 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
17913
17914         PR middle-end/31344
17915         * expr.c (emit_move_change_mode): Change mode of push operands here.
17916
17917 2007-05-17  Ian Lance Taylor  <iant@google.com>
17918
17919         PR tree-optimization/31953
17920         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
17921         Change all callers.
17922         (set_value_range_to_null): Call set_value_range_to_value.
17923         (extract_range_from_comparison): Likewise.
17924
17925 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17926
17927         * toplev.c (print_version): Output GMP/MPFR version info.
17928
17929         * builtins.c (CASE_MATHFN_REENT): New macro.
17930         (mathfn_built_in): Use it.
17931         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
17932         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
17933         BUILT_IN_LGAMMAL_R): New.
17934         * doc/extend.texi: Document new builtins.
17935
17936         PR middle-end/31796
17937         * builtins.c (do_mpfr_remquo): New.
17938         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
17939         (fold_builtin_3): Handle BUILT_IN_REMQUO.
17940
17941         PR middle-end/30251
17942         * builtins.c (fold_builtin_1): Handle y0, y1.
17943         (fold_builtin_2): Handle yn.
17944
17945         PR middle-end/30251
17946         * builtins.c (do_mpfr_bessel_n): New.
17947         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
17948         (fold_builtin_2): Handle BUILT_IN_JN.
17949
17950 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
17951
17952         PR target/31965
17953         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
17954         TYPE_PRECISION (intmax_type_node).
17955
17956 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
17957
17958         PR target/31850
17959         * reload.c (subst_reloads): Remove checking.
17960
17961 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
17962
17963         PR rtl-optimization/31691
17964         * combine.c (simplify_set): Build a new src pattern instead of
17965         substituting its operands in the COMPARE case.
17966
17967 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
17968
17969         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
17970         (execute_vrp): Preserve loops through jump threading.
17971         * tree-ssa-threadupdate.c (thread_single_edge,
17972         dbds_continue_enumeration_p, determine_bb_domination_status,
17973         thread_through_loop_header): New functions.
17974         (create_edge_and_update_destination_phis,
17975         create_edge_and_update_destination_phis): Set loops for the new blocks.
17976         (prune_undesirable_thread_requests): Removed.
17977         (redirect_edges): Do not pretend that redirect_edge_and_branch can
17978         create new blocks.
17979         (thread_block): Do not call prune_undesirable_thread_requests.
17980         Update loops.
17981         (mark_threaded_blocks): Select edges to thread here.
17982         (thread_through_all_blocks): Take may_peel_loop_headers argument.
17983         Thread edges through loop headers independently.
17984         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
17985         * tree-pass.h (TODO_mark_first_instance): New.
17986         (first_pass_instance): Declare.
17987         * cfghooks.c (duplicate_block): Put the block to the original loop
17988         if copy is not specified.
17989         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
17990         jump threading.  Pass may_peel_loop_headers to
17991         thread_through_all_blocks according to first_pass_instance.
17992         * cfgloop.h (create_preheader): Declare.
17993         * tree-flow.h (thread_through_all_blocks): Declaration changed.
17994         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
17995         * passes.c (first_pass_instance): New variable.
17996         (next_pass_1): Set TODO_mark_first_instance.
17997         (execute_todo): Set first_pass_instance.
17998
17999 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
18000
18001         PR tree-optimization/24659
18002         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
18003         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
18004         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
18005         OTI_vec_pack_ufix_trunc.
18006         (vec_unpacks_float_hi_optab): Define new macro.
18007         (vec_unpacks_float_lo_optab): Ditto.
18008         (vec_unpacku_float_hi_optab): Ditto.
18009         (vec_unpacku_float_lo_optab): Ditto.
18010         (vec_pack_sfix_trunc_optab): Ditto.
18011         (vec_pack_ufix_trunc_optab): Ditto.
18012         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
18013         and vec_pack_[s|u]fix_trunc_optab using
18014         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
18015         * tree-vectorizer.c (supportable_widening_operation): Handle
18016         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
18017         (supportable_narrowing_operation): New function.
18018         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
18019         * tree-vect-transform.c (vectorizable_conversion): Handle
18020         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
18021         (vect_gen_widened_results_half): Move before vectorizable_conversion.
18022         (vectorizable_type_demotion): Call supportable_narrowing_operation()
18023         to check for target support.
18024         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
18025         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
18026         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
18027         for VEC_PACK_FIX_TRUNC_EXPR.
18028         (expand_binop): Special case mode of the result for
18029         vec_pack_[u|s]fix_trunc_optab.
18030         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
18031         vec_pack_[u|s]fix_trunc_optab.
18032
18033         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
18034         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
18035         * tree-pretty-print.c (dump_generic_node): Handle
18036         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
18037         VEC_PACK_FIX_TRUNC_EXPR.
18038         (op_prio): Ditto.
18039         * expr.c (expand_expr_real_1): Ditto.
18040         * tree-inline.c (estimate_num_insns_1): Ditto.
18041         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
18042
18043         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
18044         (vec_unpacks_float_lo_v8hi): Ditto.
18045         (vec_unpacku_float_hi_v8hi): Ditto.
18046         (vec_unpacku_float_lo_v8hi): Ditto.
18047         (vec_unpacks_float_hi_v4si): Ditto.
18048         (vec_unpacks_float_lo_v4si): Ditto.
18049         (vec_pack_sfix_trunc_v2df): Ditto.
18050
18051         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
18052         Document.
18053         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
18054         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
18055         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
18056         [vec_pack_ufix_trunc]: Ditto.
18057         [vec_unpacks_float_hi]: Ditto.
18058         [vec_unpacks_float_lo]: Ditto.
18059         [vec_unpacku_float_hi]: Ditto.
18060         [vec_unpacku_float_lo]: Ditto.
18061
18062 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
18063
18064         * soft-fp/README: Update for new files.
18065         * soft-fp/floattisf.c: New file.
18066         * soft-fp/floattidf.c: New file.
18067         * soft-fp/floattitf.c: New file.
18068         * soft-fp/floatuntisf.c: New file.
18069         * soft-fp/floatuntidf.c: New file.
18070         * soft-fp/floatuntitf.c: New file.
18071         * soft-fp/fixsfti.c: New file.
18072         * soft-fp/fixdfti.c: New file.
18073         * soft-fp/fixtfti.c: New file.
18074         * soft-fp/fixunssfti.c: New file.
18075         * soft-fp/fixunsdfti.c: New file.
18076         * soft-fp/fixunstfti.c: New file.
18077         * soft-fp/extendxftf.c: New file.
18078         * soft-fp/trunctfxf.c: New file.
18079
18080         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
18081         (__trunctfxf2): Ditto.
18082
18083         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
18084         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
18085         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
18086         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
18087         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
18088         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
18089
18090         * config/i386/t-fprules-softfp64: New file.
18091         * config/i386/sfp-machine.h: New file.
18092         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
18093         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
18094         and soft-fp/t-softfp to tmake_file.
18095         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
18096         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
18097
18098         * config/i386/t-linux64 (softfp_wrap_start): New.
18099         (softfp_wrap_end): New.
18100         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
18101         supported for TARGET_64BIT.
18102
18103 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
18104
18105         * c-common.c (c_common_signed_or_unsigned_type): Emulate
18106         c_common_unsigned_type behavior.
18107
18108 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
18109
18110         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
18111         calls as pure.
18112
18113 2007-05-16  Eric Christopher  <echristo@apple.com>
18114
18115         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
18116         saving after stack push. Set sp_offset whenever we push.
18117         (rs6000_emit_epilogue): Move altivec register restore before
18118         stack push.
18119
18120 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
18121
18122         * configure.ac: Allow sysroots to be relocated under $prefix as
18123         well as $exec_prefix.
18124         * configure: Regenerate.
18125
18126 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
18127
18128         Revert:
18129
18130         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
18131
18132         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
18133         (gcc_tooldir): Likewise.
18134         * configure: Regenerate.
18135         * Makefile.in (libsubdir_to_prefix): New variable, based on the
18136         old configure.ac gcc_tooldir setting.
18137         (prefix_to_exec_prefix): New variable.
18138         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
18139         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
18140
18141 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
18142
18143         * c-typeck.c (build_binary_op): Return early for error.
18144
18145 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
18146
18147         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
18148         struct nb_iter_bound.
18149         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
18150         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
18151         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
18152         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
18153         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
18154         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
18155         (del_scev_info): Use ggc_free.
18156         (scev_initialize): Allocate scalar_evolution_info in gc memory.
18157         * loop-init.c: Include ggc.h.
18158         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
18159         (loop_optimizer_finalize): Use ggc_free.
18160         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
18161         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
18162         pass_iv_optimize): Add TODO_ggc_collect.
18163         * function.h (struct function): Remove skip marker from
18164         x_current_loops.
18165         * cfgloop.c: Include ggc.h.
18166         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
18167         memory.
18168         (establish_preds): Vector superloops is gc allocated.
18169         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
18170         loop->exits list.
18171         (flow_loops_find): Vector larray is gc allocated.
18172         (loop_exit_free): Use ggc_free.
18173         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
18174         that head of exits list is now not a part of struct loop.
18175         (record_loop_exits): Allocate exits table in gc memory.
18176         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
18177         that head of exits list is now not a part of struct loop.
18178         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
18179         struct loop_exit): Add GTY marker.
18180         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
18181         Add skip marker to aux field.  Make head of exits list a separate
18182         object.
18183         (struct loops): Add GTY marker.  Make larray vector gc allocated.
18184         Add param marker to exits table.
18185         (get_loops): Type changed.
18186         * Makefile.in (tree-scalar-evolution.o): Add
18187         gt-tree-scalar-evolution.h dependency.
18188         (cfgloop.o, loop-init.o): Add ggc.h dependency.
18189         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
18190         * basic-block.h (struct basic_block_def): Remove skip marker from
18191         loop_father field.
18192
18193 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
18194
18195         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
18196         of 0 in the call to expand_expr().
18197         (expand_builtin_mathfn_3): Ditto.
18198         (expand_builtin_interclass_mathfn): Ditto.
18199         (expand_builtin_cexpi): Ditto.
18200         (expand_builtin_int_roundingfn): Ditto.
18201         (expand_builtin_int_roundingfn_2): Ditto.
18202         (expand_builtin_pow): Ditto.
18203         (expand_builtin_powi): Ditto.
18204         (expand_builtin_bswap): Ditto.
18205         (expand_builtin_unop): Ditto.
18206         (expand_builtin_fabs): Ditto.
18207         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
18208         the call to expand_expr().
18209         (expand_builtin_sync_operation): Ditto.
18210         (expand_builtin_compare_and_swap): Ditto.
18211         (expand_builtin_lock_test_and_set): Ditto.
18212         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
18213         instead of 0 in the call to expand_expr().
18214         (expand_builtin_extract_return_addr): Ditto.
18215         (expand_builtin_eh_return): Ditto.
18216         (expand_eh_return): Ditto.
18217         * explow.c (expr_size): Ditto.
18218         * expr.c (optimize_bitfield_assignment_op): Ditto.
18219         (expand_assignement): Ditto.
18220         (store_expr): Ditto.
18221         (store_field): Ditto.
18222         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
18223         the call to expand_expr().
18224         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
18225         in the call to expand_expr().
18226         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
18227         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
18228         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
18229         of expand_expr().
18230         * optabs.c (expand_vec_shift_expr): Ditto.
18231         (expand_vec_cond_expr): Ditto.
18232         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
18233         call to expand_expr().
18234         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
18235         in the call to expand_expr().
18236
18237 2007-05-14  Dave Korn  <dave.korn@artimi.com>
18238
18239         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
18240
18241 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
18242
18243         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
18244         instead of c_common_unsigned_type.
18245         (c_common_unsigned_type): Remove.
18246         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
18247         c_common_unsigned_type.
18248         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
18249         c_common_unsigned_type.
18250         * c-common.h (c_common_unsigned_type): Remove.
18251         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
18252         c_common_unsigned_type.
18253         * c-format.c (check_format_types): Use unsigned_type_for instead of
18254         c_common_unsigned_type.
18255         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
18256         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
18257         of c_common_unsigned_type.
18258         * convert.c (convert_to_integer): Use unsigned_type_for instead of
18259         lang_hooks.types.unsigned_type.
18260         * expmed.c (make_tree): Use unsigned_type_for instead of
18261         lang_hooks.types.unsigned_type.
18262         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
18263         lang_hooks.types.unsigned_type.
18264         (build_range_check): Likewise.
18265         (fold_unary): Likewise.
18266         (fold_binary): Likewise.
18267         (fold_ternary): Likewise.
18268         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
18269         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
18270         * tree.c (get_unsigned_type): New.
18271         (unsigned_type_for): Use get_unsigned_type instead of
18272         lang_hooks.types.unsigned_type.
18273
18274 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
18275
18276         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
18277         to m68k_get_function_kind.  Update its prototype.
18278         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
18279         interrupt_thread.
18280         (m68k_interrupt_function_p): Return enum m68k_function_type
18281         instead of bool.  Rename to m68k_get_function_kind.
18282         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
18283         target is not fido.
18284         (m68k_compute_frame_layout): Don't mark any register for save
18285         if an interrupt_thread attribute is specified.
18286         (m68k_hard_regno_rename_ok): Update a use of
18287         m68k_interrupt_function_p.
18288         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
18289         m68k_interrupt_function_p.
18290         (m68k_function_type): New.
18291         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
18292         for a function with an interrupt_thread attribute.
18293         * doc/extend.texi: Document the interrupt_thread attribute.
18294
18295 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
18296
18297         Fix PR tree-optimization/31911
18298         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
18299         if they didn't change the expression.
18300
18301 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
18302
18303         * tree-scalar-evolution.c (resolve_mixers): Exported.
18304         * tree-scalar-evolution.h (resolve_mixers): Declare.
18305         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
18306         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
18307         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
18308         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
18309         init_array_ref, init_pointer_ref, analyze_indirect_ref,
18310         strip_conversion, analyze_offset_expr, address_analysis,
18311         object_analysis, analyze_offset): Removed.
18312         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
18313         split_constant_offset, canonicalize_base_object_address,
18314         object_address_invariant_in_loop_p, disjoint_objects_p,
18315         dr_may_alias_p, dr_address_invariant_p): New functions.
18316         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
18317         and dr_analyze_alias.
18318         (initialize_data_dependence_relation): Use dr_may_alias_p
18319         and object_address_invariant_in_loop_p.
18320         (compute_self_dependence): Handle the case when
18321         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
18322         (find_data_references_in_stmt): Restrict the analysis of data
18323         references to the given loop nest.
18324         (find_data_references_in_loop): Made static.  Pass loop nest to
18325         find_data_references_in_stmt.
18326         (compute_data_dependences_for_loop): Use DR_VOPS.
18327         (free_data_ref): Free DR_VOPS.
18328         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
18329         (struct innermost_loop_behavior): ... new.
18330         (struct base_object_info): Replaced by ...
18331         (struct indices): ... new.
18332         (struct dr_alias): New.
18333         (enum data_ref_type): Removed.
18334         (struct data_reference): Consist of struct innermost_loop_behavior,
18335         struct indices and struct dr_alias.
18336         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
18337         (DR_MEMTAG): Renamed to ...
18338         (DR_SYMBOL_TAG): ... this.
18339         (find_data_references_in_loop): Declaration removed.
18340         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
18341         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
18342         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
18343         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
18344
18345 2007-05-13  Revital Eres  <eres@il.ibm.com>
18346
18347         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
18348         which walks virtual def-use chains to find redundant stores.
18349         (dse_optimize_stmt): Call it.
18350
18351 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
18352
18353         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
18354         * passes.c (init_optimization_passes): Move pass_jump_bypass
18355         after loop2.
18356
18357         * basic-block.h (bb_has_eh_pred): Fix style issue.
18358
18359 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
18360
18361         PR rtl-optimization/31848
18362         * loop-invariant.c (move_invariant_reg): If we move an insn
18363         with a REG_EQUAL note, and that insn is not always executed,
18364         remove the REG_EQUAL note.
18365
18366 2007-05-12  Richard Guenther  <rguenther@suse.de>
18367
18368         PR tree-optimization/31797
18369         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
18370         propagate into a stmt that has volatile ops.
18371
18372 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
18373
18374         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
18375         (gcc_tooldir): Likewise.
18376         * configure: Regenerate.
18377         * Makefile.in (libsubdir_to_prefix): New variable, based on the
18378         old configure.ac gcc_tooldir setting.
18379         (prefix_to_exec_prefix): New variable.
18380         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
18381         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
18382
18383 2007-05-11  Silvius Rus  <rus@google.com>
18384
18385         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
18386         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
18387         * c-common.h (strict_aliasing_warning): Change return type.
18388         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
18389         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
18390         (build_c_cast): Condition call to strict_aliasing_warning.
18391         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
18392         * flags.h (set_Wstrict_aliasing): Declare.
18393         * opts.c (set_Wstrict_alising): Define, add call to.
18394         * tree-flow.h (strict_aliasing_warning_backend): Declare.
18395         * tree-ssa-alias-warnings.c: New file.
18396         * tree-ssa-alias.c (compute_may_aliases): Add call to
18397         strict_aliasing_warning_backend.
18398
18399 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
18400
18401         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
18402         Use loop_depth and loop_outer accessor functions.
18403         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
18404         determine_invariantness_stmt, move_computations_stmt): Ditto.
18405         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
18406         add_loop, loopify, unloop, fix_loop_structure): Ditto.
18407         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
18408         * tree-scalar-evolution.c (interpret_loop_phi,
18409         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
18410         instantiate_parameters_1, scev_const_prop): Ditto.
18411         * cfghooks.c (make_forwarder_block): Ditto.
18412         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
18413         * modulo-sched.c (loop_canon_p): Ditto.
18414         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
18415         slpeel_can_duplicate_loop_p): Ditto.
18416         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
18417         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
18418         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
18419         cancel_loop, verify_loop_structure): Ditto.
18420         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
18421         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
18422         superloops vector instead of "pred" array.
18423         (establish_preds): Take father loop as an argument.  Initialize the
18424         superloops vector.
18425         (flow_loop_tree_node_add): Pass father loop to establish_preds.
18426         Do not initialize loop->outer.
18427         (flow_loop_tree_node_remove): Truncate the superloops vector.
18428         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
18429         "pred" merged to "superloops" vector.
18430         (loop_depth, loop_outer): New.
18431         (fel_init): Use loop_outer.
18432
18433 2007-05-11  Jan Hubicka  <jh@suse.cz>
18434
18435         * cgraphunit.c: Include gt-cgraphunit.h
18436         (static_ctors, static_dtors): New static vars.
18437         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
18438         based on implementation in c-common.c
18439         (cgraph_finalize_function): Call record_cdtor_fn.
18440         (cgraph_optimize): Call cgraph_build_cdtor_fns.
18441         * decl.c (finish_function): Do not call c_record_cdtor_fn.
18442         (c_write_global_declarations): Do not call c_build_cdtor_fns.
18443         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
18444         build_cdtor, c_build_cdtor_fns): Remove.
18445         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
18446         c_build_cdtor_fns): Remove prototype.
18447
18448 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
18449
18450         PR other/31852
18451         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
18452         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
18453         * builtins.c (fold_builtin_memchr): New.
18454         (expand_builtin_memchr): Call the latter.
18455         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
18456         * doc/extend.texi ([Other built-in functions provided by GCC]):
18457         Document memchr.
18458
18459 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
18460
18461         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
18462         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
18463         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
18464         PFPO_OP1_TYPE_SHIFT): Constants added.
18465         (DFP_ALL): Mode macro defined.
18466         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
18467         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
18468         Insn definitions added.
18469         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
18470         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
18471         Expanders added.
18472
18473 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
18474
18475         PR tree-optimization/31885
18476         * tree-chrec.c (chrec_contains_undetermined): Do not consider
18477         NULL_TREE to be undetermined.
18478         (automatically_generated_chrec_p): Return false for NULL.
18479
18480 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
18481
18482         * config/bfin/bfin.h (MOVE_RATIO): Define.
18483
18484 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
18485
18486         * config.gcc (sparc-wrs-vxworks): New target.
18487         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
18488         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
18489         * config/sparc/sparc.h: Include vxworks-dummy.h.
18490         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
18491         include LABEL_REFs too.
18492         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
18493         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
18494         VxWorks.
18495         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
18496         on VxWorks.
18497         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
18498         (sparc_emit_call_insn): New function.
18499         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
18500         functions when generating VxWorks PIC.
18501         * config/sparc/sparc.md (vxworks_load_got): New pattern.
18502         (call, call_value): Use sparc_emit_call_insn instead of
18503         emit_call_insn.
18504
18505 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
18506
18507         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
18508
18509 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
18510
18511         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
18512         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
18513         split_double instead of operand_subword.
18514
18515 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
18516
18517         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
18518         * config/bfin/bfin.c (bfin_local_alignment): New function.
18519         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
18520
18521 2007-05-08  Chao-ying Fu  <fu@mips.com>
18522
18523         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
18524         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
18525         (smsub_widen_optab, umsub_widen_optab): Define.
18526         * optabs.c (init_optabs): Initialize smsub_widen_optab and
18527         umsub_widen_optab.
18528         * genopinit.c (optabs): Fill in smsub_widen_optab and
18529         umsub_widen_optab.
18530         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
18531         and umsub_widen_optab to implement multiply-subtract sequences.
18532         * config/mips/mips.md (*msac<u>_di): Rename to...
18533         (<u>msubsidi4): ...this.  Extend condition to include
18534         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
18535         of operand 0 to "ka" and use the three-operand form of msub<u>
18536         for TARGET_DSPR2.
18537         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
18538         to define_expands.
18539
18540 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
18541
18542         PR rtl-optimization/28011
18543         * reload.c (push_reload): Set dont_share if IN appears in OUT
18544         also when IN is a PLUS rtx.
18545         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
18546         are same PLUS rtx.
18547
18548 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
18549
18550         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
18551         call unshare_all_decls.
18552         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
18553         (unshare_all_decls): Remove.
18554
18555 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
18556
18557         PR 31847
18558         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
18559         dumps.
18560
18561 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
18562             Nigel Stephens  <nigel@mips.com>
18563
18564         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
18565         Update comments and all uses.
18566         (MIN_FPRS_PER_FMT): Define.
18567         * config/mips/mips.c (function_arg): Fix to correctly handle
18568         the -mips32r2 -mfp64 -mabi=32 case.
18569         (override_options): Enable use of odd-numbered registers for
18570         SFmode values on MIPS32.
18571         (mips_save_reg_p): Save whole floating-point register pair if
18572         either half is used.
18573         (compute_frame_size): Fix comment.
18574
18575 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
18576
18577         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
18578         argument of type bool.
18579         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
18580         argument. Safely select temporary P register according to it.
18581         (do_link): Change call site of add_to_reg accordingly.
18582         (do_unlink): Add epilogue_p as a fourth argument and pass it
18583         to add_to_reg.
18584         (expand_interrupt_handler_epilogue): Change call of do_unlink
18585         accordingly.
18586         (bfin_expand_prologue): Add a third argument sibcall_p.
18587         * config/bfin/bfin.md (epilogue): Change call of
18588         bfin_expand_epilogue accordingly.
18589         (sibcall_epilogue): Likewise.
18590         (eh_return_internal): Likewise.
18591
18592         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
18593         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
18594         * config/bfin/bfin.c (bfin_handle_option): Handle
18595         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
18596         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
18597         Support bf534, bf536 and bf561.
18598         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
18599
18600 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
18601
18602         PR target/31854
18603         * config/i386/i386.c (ix86_function_regparm): Process local
18604         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
18605
18606 2007-05-07  Mike Stump  <mrs@apple.com>
18607
18608         * doc/invoke.texi (Warning Options): Document that -Wempty-body
18609         also checks for and while statements in C++.
18610
18611 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
18612
18613         * gcc.c (at_file_supplied): New variable.
18614         (main): Set it if we expanded argv.
18615         (do_spec_1): Pass an @-file to the linker if we were called with
18616         an @-file argument and HAVE_GNU_LD.
18617         * collect2.c (at_file_supplied): New variable.
18618         (response_file): New variable.
18619         (collect_exit): Unlink response_file if necessary.
18620         (handler): Likewise.
18621         (do_wait): Likewise.
18622         (main): Set at_file_supplied if we expanded argv.
18623         (collect_execute): Pass an @-file to subprocesses if we were called
18624         with an @-file argument.
18625         * configure.ac: Add define for HAVE_GNU_LD.
18626         * configure: Regenerate.
18627         * config.in: Regenerate.
18628
18629 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
18630
18631         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
18632         operand to HI mode.
18633         (mulsi3): New.
18634         (divsi3): New.
18635         (udivsi3): New.
18636
18637 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
18638
18639         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
18640         (TARGET_ENCODE_SECTION_INFO): Re-define.
18641         (m32c_encode_section_info): New
18642         (function_vector_handler): New
18643         (current_function_special_page_vector): New
18644         (m32c_special_page_vector_p): New.
18645         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
18646         Prototype.
18647         * config/m32c/jump.md: Added instruction JSRS for functions
18648         with attribute "function_vector".
18649         * doc/extend.texi (function_vector): Added description
18650         for M16C, M32C targets.
18651
18652 2007-05-07  DJ Delorie  <dj@redhat.com>
18653
18654         PR 31794
18655         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
18656         ashrpsi3, lshrpsi3): Update shift count constraint.
18657
18658 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
18659             Nathan Froyd  <froydnj@codesourcery.com>
18660
18661         PR 22133
18662         * c-incpath.c (add_path): Strip trailing path separators.
18663
18664 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
18665
18666         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
18667         Free dominance info before purging EH edges.
18668         (eliminate_degenerate_phis): Likewise.
18669         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
18670
18671 2007-05-07  Jan Hubicka  <jh@suse.cz>
18672
18673         * gimplify.c (gimplify_expr): Do not crash when folding
18674         (void *)(int)&a + 4.
18675
18676 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18677
18678         PR driver/31694
18679         * c-opts.c (lang_fortran): Make it non static.
18680         * c-common.h (lang_fortran): New prototype.
18681         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
18682         -lang-fortran option was passed by the driver.
18683
18684 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
18685
18686         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
18687         of ASSERT_CHECKING.  Tweak message.
18688
18689 2007-05-06  Revital Eres  <eres@il.ibm.com>
18690
18691         PR 30957
18692         * loop-unroll.c (insert_var_expansion_initialization):
18693         Initialize the expansions with -zero instead of +zero.
18694
18695 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
18696
18697         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
18698         into pic and non-pic versions. Mark r19 as used for
18699         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
18700         for tgd_load, tld_load and tie_load .
18701         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
18702         version of tgd_load, tld_load and tie_load depending on the
18703         value of flag_pic.
18704
18705 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
18706             Jakub Jelinek  <jakub@redhat.com>
18707
18708         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
18709         (__do_global_dtors_aux): Use more paranoid loop to run
18710         destructors if HIDDEN_DTOR_LIST_END.
18711         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
18712
18713 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
18714
18715         * varasm.c (align_variable): Don't increase alignment for
18716         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
18717         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
18718
18719 2007-05-04  Josh Conner  <jconner@apple.com>
18720
18721         * basic-block.h (cdi_direction): Assign values to all enumeration
18722         constants.
18723         (dom_computed): Remove.
18724         (dom_info_state): New.
18725         (set_dom_info_availability): New.
18726         * tree-ssa-loop-im.c (determine_invariantness): Initialize
18727         walk_data.dom_direction.
18728         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
18729         instead of dom_computed[].
18730         (split_edge): Likewise.
18731         (create_basic_block): Likewise.
18732         (merge_blocks): Likewise.
18733         * ifcvt.c (find_if_header): Likewise.
18734         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
18735         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
18736         * tree-ssa.c (verify_ssa): Likewise.
18737         * tree-cfg.c (tree_verify_flow_info): Likewise.
18738         (remove_edge_and_dominated_blocks): Likewise.
18739         * dominance.c (dom_computed): Make static.
18740         (calc_dfs_tree_nonrec): Change third param to a bool.
18741         (calc_dfs_tree): Change second param to a bool.
18742         (calc_idioms): Change second param to a bool.  Use
18743         dom_convert_dir_to_idx.
18744         (init_dom_info): Validate dir before using.
18745         (dom_convert_dir_to_idx): New.
18746         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
18747         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
18748         (free_dominance_info): Use dom_convert_dir_to_idx.
18749         (get_immediate_dominator): Likewise.
18750         (set_immediate_dominator): Likewise.
18751         (get_dominated_by): Likewise.
18752         (redirect_immediate_dominators): Likewise.
18753         (nearest_common_denominator): Likewise.
18754         (dominated_by_p): Likewise.
18755         (bb_dom_dfs_in): Likewise.
18756         (bb_dom_dfs_out): Likewise.
18757         (recount_dominator): Likewise.
18758         (iterate_fix_dominators): Likewise.
18759         (add_to_dominance_info): Likewise.
18760         (delete_from_dominance_info): Likewise.
18761         (first_dom_son): Likewise.
18762         (next_dom_son): Likewise.
18763         (dom_info_available_p): Likewise.
18764         (dom_info_state): New.
18765         (set_dom_info_availability): New.
18766
18767 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
18768
18769         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
18770         Expander removed.
18771         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
18772
18773 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
18774
18775         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
18776         (subdi3, subdi_carry): Delete.
18777
18778 2007-05-04  Jan Hubicka  <jh@suse.cz>
18779             Richard Guenther  <rguenther@suse.de>
18780
18781         * opts.c (decode_options): Do not fiddle with inlining
18782         parameters in case of optimizing for size.
18783         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
18784         for size do nothing.
18785         (cgraph_decide_inlining_of_small_function): When optimizing for
18786         size never inline functions increasing caller size.
18787         (cgraph_early_inlining): Inline for size when optimizing for size.
18788
18789 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
18790
18791         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
18792         logical operations piecewise.
18793         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
18794         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
18795         subdi_sesidi_di): Delete.
18796         (add_with_carry): Produce carry in CC instead of a DREG to shorten
18797         the generated sequence.  Allow three-reg add in constraints.  Rewrite
18798         the rtl expression for carry to avoid zero_extend of a constant.
18799         (sub_with_carry): New pattern.
18800         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
18801         different sequence not involving jumps.
18802         (notbi): Now a named pattern.
18803
18804 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
18805
18806         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
18807         Add the note about a significant loss of accuracy of some
18808         mathematical routines when these options are used.
18809
18810 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
18811
18812         * haifa-sched.c (rtx_vec_t): New typedef.
18813         (contributes_to_priority_p): Extract piece of priority () into new
18814         static function.
18815         (priority): Use the function.  Add assertion.
18816         (rank_for_schedule, set_priorities): Add assertion to check that
18817         insn's priority is initialized.
18818         (clear_priorities, calc_priorities): Change signature.  Make it update
18819         all relevant insns.  Update all callers ('add_to_speculative_block ()'
18820         and 'create_block_check_twin ()').
18821         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
18822         Add new field 'priority_status'.
18823         (INSN_PRIORITY_STATUS): New macro.
18824         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
18825
18826 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
18827
18828         * sched-ebb.c (debug_ebb_dependencies): New static function.
18829         (init_ready_list): Use it.
18830
18831         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
18832         with changed signature and 'debug_rgn_dependencies ()'.
18833         (debug_rgn_dependencies): New static function.
18834         (init_ready_list): Use it.
18835
18836         * sched-int.h (debug_dependencies): Declare.
18837
18838 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
18839
18840         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
18841
18842 2007-05-04  Dirk Mueller  <dmueller@suse.de>
18843
18844         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
18845
18846 2007-05-03  Jan Hubicka  <jh@suse.cz>
18847
18848         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
18849         ((T1)X op (T1)Y), for pointer type in more cases than before.
18850
18851         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
18852
18853         * tree-object-size.c (plus_expr_object_size): When operand size is
18854         unknown, return unknown.
18855
18856 2007-05-03  Dirk Mueller  <dmueller@suse.de>
18857
18858         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
18859
18860         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
18861         options.
18862
18863         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
18864
18865 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
18866
18867         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
18868
18869 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
18870
18871         * config/soft-fp/double.h, config/soft-fp/extended.h,
18872         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
18873         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
18874         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
18875         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
18876         glibc CVS.
18877
18878 2007-05-03  Ian Lance Taylor  <iant@google.com>
18879
18880         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
18881         MASK_PPC_GFXOPT for 8540 or 8548.
18882
18883 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
18884
18885         * tree-vect-transform.c (vect_update_inits_of_drs): Use
18886         vect_print_dump_info() to output debug information.
18887
18888 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
18889
18890         PR target/31768
18891         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
18892         operands of size 2 when operand is not MEM_P.
18893
18894 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
18895
18896         PR tree-optimization/30565
18897         * lambda-code.c (perfect_nestify): Fix updating of dominators.
18898
18899 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
18900
18901         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
18902         (umulsi3_highpart): Use them.
18903         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
18904         for final accumulator to D regisster tranfser.
18905
18906 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
18907
18908         PR tree-optimization/31699
18909         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
18910         wrong code.
18911         (vect_enhance_data_refs_alignment): Compute peel amount using
18912         TYPE_VECTOR_SUBPARTS instead of vf.
18913         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
18914
18915 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
18916
18917         PR bootstrap/31776
18918         * system.h: Remove inclusion of double-int.h
18919         * tree.h: Include double-int.h
18920         * gengtype.c: Likewise
18921         * cfgloop.h: Likewise
18922         * Makefile.in: Adjust dependencies on double-int.h
18923
18924 2007-05-02  Eric Christopher  <echristo@apple.com>
18925
18926         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
18927         -shared to -Zdynamiclib.
18928
18929 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
18930
18931         PR c++/31663
18932         * c-common.c (strip_pointer_or_array_types): New function.
18933         * c-common.h (strip_pointer_or_array_types): New function declaration.
18934
18935 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
18936
18937         PR tree-optimization/31771
18938         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
18939
18940 2007-05-02  Paul Brook  <paul@codesourcery.com>
18941
18942         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
18943
18944 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18945
18946         PR middle-end/29715
18947         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
18948         transformation.
18949
18950 2007-05-02  Nick Clifton  <nickc@redhat.com>
18951
18952         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
18953
18954 2007-05-02  Richard Guenther  <rguenther@suse.de>
18955
18956         PR tree-optimization/31146
18957         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
18958         argument, single_use_p.  If we have a single use that is
18959         a conversion to the definition rhs type, propagate that rhs.
18960         (forward_propagate_addr_expr): Pass single_use_p argument
18961         to forward_propagate_addr_expr_1.
18962
18963 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18964
18965         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
18966         variable.
18967
18968 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
18969
18970         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
18971         'AMD Family 10 core'.
18972
18973 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
18974
18975         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
18976         and athlon64-sse3 as improved versions of k8, opteron and athlon64
18977         with SSE3 instruction set support.
18978         * doc/invoke.texi: Likewise.
18979
18980 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
18981
18982         * config/i386/i386.c (override_options): Tuning 32-byte loop
18983         alignment for amdfam10 architecture. Increasing the max loop
18984         alignment to 24 bytes.
18985
18986 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
18987
18988         * config/m68k/constraints.md: New.
18989         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
18990         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
18991         EXTRA_CONSTRAINT): Remove.
18992         * config/m68k/m68k.md: Include constraints.md.
18993         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
18994
18995 2007-05-01  Ian Lance Taylor  <iant@google.com>
18996
18997         PR tree-optimization/31739
18998         * tree-vrp.c (vrp_val_is_max): New static function.
18999         (vrp_val_is_min): New static function.
19000         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
19001         copying the node.
19002         (set_value_range): Use vrp_val_is_{max,min}.
19003         (extract_range_from_assert): Likewise.
19004         (extract_range_from_binary_expr): Likewise.
19005         (extract_range_from_unary_expr): Likewise.
19006         (dump_value_range, vrp_meet): Likewise.
19007         (vrp_visit_phi_node): Likewise.
19008         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
19009
19010 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
19011
19012         * config/i386/gmon-sol2.c (size_t): New type.
19013         (intptr_t): Likewise.
19014         (s_textsize): Declare as size_t.
19015         (sbrk): Declare.
19016         (monstartup): Use size_t for sizes.
19017         (_mcount): Save and restore registers.
19018         (internal_mcount): Pass 0 as the first argument to monstartup
19019         in 64-bit mode.
19020         (moncontrol): Convert pointer to appropriately sized integer
19021         before passing to profil.
19022
19023 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
19024
19025         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
19026         __NO_FPRS__, not just if _SOFT_DOUBLE.
19027         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
19028         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
19029         also for E500 double.
19030         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
19031         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
19032         && !TARGET_FPRS).
19033
19034 2007-05-01  Richard Guenther  <rguenther@suse.de>
19035
19036         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
19037         is NULL.
19038
19039 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
19040
19041         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
19042
19043 2007-05-01  Jan Hubicka  <jh@suse.cz>
19044
19045         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
19046         invariant.
19047
19048 2007-05-01  Jan Hubicka  <jh@suse.cz>
19049
19050         * tree.h (maybe_fold_offset_to_component_ref): Remove.
19051         (maybe_fold_offset_to_reference): Declare.
19052         * fold-const.c (fold_unary): Do not fold
19053         (type *)&A into &A->field_of_type_and_offset_0
19054         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
19055         size is unknown, give up.
19056         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
19057         offsets.
19058         (maybe_fold_offset_to_reference): New.
19059         (maybe_fold_stmt_indirect): Use it.
19060         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
19061         * gimplify.c (gimplify_conversion): Canonicalize conversions to
19062         field references.
19063         (gimplify_expr): Likewise for plus_expr.
19064
19065 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
19066
19067         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
19068         bsi_after_labels.  Always insert statements before bsi.
19069         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
19070         * predict.c (apply_return_prediction): Check for empty blocks.
19071         * cfgexpand.c (lab_rtx_for_bb): New variable.
19072         (label_rtx_for_bb): Do not create new tree labels.
19073         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
19074         (tree_expand_cfg): Initialize lab_rtx_for_bb.
19075         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
19076         creating edges.
19077         (label_for_bb): Add field used.
19078         (update_eh_label, main_block_label): Mark the label used.
19079         (cleanup_dead_labels): Remove unused labels.
19080
19081 2007-05-01  Richard Guenther  <rguenther@suse.de>
19082
19083         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
19084         if it is not about to be set.
19085         (get_value_range): Do not pre-allocate equiv bitmap.
19086         (update_value_range): No need to clear equiv field.
19087         (add_equivalence): Change prototype to get bitmap pointer.
19088         Allocate bitmap here if it is not already.
19089         (extract_range_from_assert): Do not allocate bitmap here.
19090         Update callers to add_equivalence.
19091         (extract_range_from_ssa_name): Likewise.
19092         (get_vr_for_comparison): New static helper.
19093         (compare_name_with_value): Handle NULL equiv bitmap by
19094         peeling the first iteration of the comparison loop.
19095         Use get_vr_for_comparison.
19096         (compare_names): Handle NULL equiv bitmaps by using fake
19097         ones.  Use get_vr_for_comparison.
19098
19099 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
19100
19101         * double-int.c (mpz_set_double_int): Moved from
19102         tree-ssa-loop-niter.c.
19103         (mpz_get_double_int): Likewise; also, add option to wrap
19104         out-of-range integers.
19105         * double-int.h: New prototypes for above.
19106         * tree.c (get_static_type_bounds): Moved from
19107         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
19108         TYPE_MAX_VALUE if they exist..
19109         * tree.h: New prototype for above.
19110         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
19111         get_type_bounds calls.
19112         (mpz_set_double_int): Move to double-int.c.
19113         (get_type_bounds): Move to tree.c, rename to
19114         get_static_type_bounds.
19115         (mpz_to_double_int): Move to double-int.c, rename to
19116         mpz_get_double_int.
19117
19118 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
19119
19120         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
19121         DIV0 exception can fall through to a normal return.
19122
19123 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
19124
19125         PR middle-end/22156
19126         Temporarily revert:
19127         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
19128         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
19129         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19130         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
19131         initialize align to silence bogus warning.
19132         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19133         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
19134         all_no_warning.
19135         (struct sra_walk_fns): Remove use_all parameter from use.
19136         (sra_hash_tree): Handle BIT_FIELD_REFs.
19137         (sra_elt_hash): Don't hash bitfld blocks.
19138         (sra_elt_eq): Skip them in parent compares as well.  Handle
19139         BIT_FIELD_REFs.
19140         (sra_walk_expr): Don't maintain or pass down use_all_p.
19141         (scan_use): Remove use_all parameter.
19142         (scalarize_use): Likewise.  Re-expand assignment to
19143         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
19144         output, and re-scalarize after output.  Don't mark anything
19145         for no warning.
19146         (scalarize_ldst): Adjust.
19147         (scalarize_walk_gimple_modify_statement): Likewise.
19148         (build_element_name_1): Handle BIT_FIELD_REFs.
19149         (instantiate_element): Don't warn for any element whose parent
19150         is used as a whole.
19151         (instantiate_missing_elements_1): Return the sra_elt.
19152         (canon_type_for_field): New.
19153         (try_instantiate_multiple_fields): New.
19154         (instantiate_missing_elemnts): Use them.
19155         (mark_no_warning): Removed.
19156         (generate_one_element_ref): Handle BIT_FIELD_REFs.
19157         (REPLDUP, sra_build_elt_assignment): New.
19158         (generate_copy_inout): Use them.
19159         (generate_element_copy): Likewise.  Handle bitfld differences.
19160         (generate_element_zero): Don't recurse for blocks.  Use
19161         sra_build_elt_assignment.
19162         (generate_one_element_int): Take elt instead of var.  Use
19163         sra_build_elt_assignment.
19164         (generate_element_init_1): Adjust.
19165         (scalarize_use, scalarize_copy): Use REPLDUP.
19166         (scalarize_ldst): Move assert before dereference.
19167         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
19168
19169 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19170
19171         PR C++/31721
19172         * tree.c (reconstruct_complex_type): Reconstruct a reference
19173         correctly.
19174         Also use the same mode for the pointer as the old pointer type.
19175
19176 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
19177
19178         * doc/trouble.texi (Interoperation): Remove note about Ultrix
19179         Fortran compiler.
19180
19181 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
19182
19183         PR rtl-optimization/31676
19184         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
19185         (df_refs_record): Call it.
19186
19187 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19188
19189         * rtl.def (SS_ABS): New code.
19190         * config/bfin/bfin.c (print_operand): New modifier 'v'.
19191         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
19192         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
19193         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
19194         (bfin_init_builtins): Define them.
19195         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
19196         (bfin_expand_builtin): ... and handle the others here.
19197         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
19198         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
19199         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
19200         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
19201         operand is only HImode.
19202
19203 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
19204
19205         * regclass.c (scan_one_insn): Remove splitting of
19206         two address insns.
19207
19208 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
19209             Nigel Stephens  <nigel@mips.com>
19210
19211         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
19212
19213 2007-04-28  Jan Hubicka  <jh@suse.cz>
19214
19215         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
19216         insn_locators_alloc instead of insn_locators_initialize;
19217         call reset_block_changes.
19218         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
19219         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
19220         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
19221         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
19222         * config/score/score.c (th_output_mi_thunk): Likewise.
19223         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
19224         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
19225         tolerate uninitialized locator info.
19226
19227         Re-apply:
19228         * function.c (init_function_start): Don't init line number info.
19229         (expand_function_end): Update.
19230         (reset_block_changes, record_block_change, finalize_block_changes,
19231         check_block_change, free_block_changes): Kill.
19232         * function.h (reset_block_changes, record_block_change,
19233         finalize_block_changes, check_block_change, free_block_changes):
19234         Remove prototypes.
19235         (struct function): Remove ib_boundaries_block.
19236         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
19237         Use curr_insn_locator to initialize locator.
19238         (emit_line_note): Remove.
19239         * cfgexpand.c (expand_gimple_cond_expr): Update.
19240         (construct_exit_block): Likewise.
19241         (tree_expand_cfg): Initialize/finalize locators.
19242         * expr.c (expand_expr_real): Update.
19243         * cfglayout.c (line_locators_locs, line_locators_lines,
19244         file_locators_locs, file_locators_files): Remove.
19245         (set_block_levels): Move to cfgexpand.c.
19246         (insn_locators_initialize): Remove.
19247         (pass_insn_locators_initialize): Remove.
19248         (locations_locators_locs, locations_locators_vals): New static vars.
19249         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
19250         Likewise.
19251         (insn_locators_alloc, insn_locators_finalize,
19252         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19253         New functions.
19254         (locator_location): New.
19255         (locator_line, locator_file): Rewrite.
19256         * rtl.h (emit_line_note): Kill.
19257         (insn_locators_alloc, insn_locators_finalize,
19258         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19259         Declare.
19260         * tree-inline.c (initialize_cfun): Do not initialize
19261         ib_boundaries_block.
19262         * passes.c (pass_insn_locators_initialize): Remove.
19263
19264 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
19265
19266         * tree-cfg.c (move_block_to_fn): Release bb from dominance
19267         info.  Update last_basic_block correctly.
19268
19269 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
19270
19271         PR target/31701
19272         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
19273         register itself to hold the offset constant.  Tell flow the use
19274         of r4 and r5 when they are used.
19275
19276 2007-04-27  Richard Guenther  <rguenther@suse.de>
19277
19278         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
19279         if we simplified anything.
19280         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
19281         warnings until we did a simplification and the stmt was not
19282         marked as TREE_NO_WARNING.
19283
19284 2007-04-27  Mike Stump  <mrs@apple.com>
19285
19286         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
19287
19288 2007-04-27  Ian Lance Taylor  <iant@google.com>
19289
19290         PR middle-end/31710
19291         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
19292         TYPE_MAX_VALUE exist, convert them to the new type.
19293
19294 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
19295
19296         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
19297         if it claims to be available.
19298         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
19299         edge is redirected.
19300         (perform_tree_ssa_dce): Always free postdominators.
19301
19302 2007-04-27  Richard Henderson  <rth@redhat.com>
19303
19304         * config/alpha/predicates.md (aligned_memory_operand): Mark
19305         as define_special_predicate.
19306         (unaligned_memory_operand, normal_memory_operand): Likewise.
19307         (reg_or_unaligned_mem_operand): Remove.
19308         (any_memory_operand): Match the documentation and check for
19309         non-renumbered pseudos during reload.
19310         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
19311         alpha_secondary_reload_class, update to new interface, make static.
19312         Handle CQImode like HImode.  Remove FP subreg check.
19313         (alpha_expand_mov): Use replace_equiv_address.
19314         (alpha_expand_mov_nobwx): Use any_memory_operand.
19315         (TARGET_SECONDARY_RELOAD): New.
19316         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
19317         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
19318         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
19319         * config/alpha/alpha.md: ... here.
19320         (RELOAD12, reloadmode): New.
19321         (movcqi): New.
19322         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
19323         Don't handle the aligned case here.
19324         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
19325         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
19326         reload_inhi_help.  Don't expect a scratch register.
19327         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
19328         reload_outhi_help.
19329         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
19330
19331 2007-04-27  Richard Guenther  <rguenther@suse.de>
19332
19333         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
19334
19335 2007-04-27  Richard Guenther  <rguenther@suse.de>
19336
19337         PR tree-optimization/30965
19338         PR tree-optimization/30978
19339         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
19340         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
19341         (find_equivalent_equality_comparison): Likewise.
19342         (simplify_cond): Likewise.
19343         (get_prop_source_stmt): New helper.
19344         (get_prop_dest_stmt): Likewise.
19345         (can_propagate_from): Likewise.
19346         (remove_prop_source_from_use): Likewise.
19347         (combine_cond_expr_cond): Likewise.
19348         (forward_propagate_comparison): New function.
19349         (forward_propagate_into_cond): Rewrite to use fold for
19350         tree combining.
19351         (tree_ssa_forward_propagate_single_use_vars): Call
19352         forward_propagate_comparison to propagate comparisons.
19353
19354 2007-04-27  Richard Guenther  <rguenther@suse.de>
19355
19356         PR tree-optimization/31715
19357         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
19358         sure to do computation on the offset in an appropriate
19359         signed type.
19360
19361 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
19362
19363         * reload.h (elimination_target_reg_p): Declare.
19364         * reload.c (find_reloads): Don't apply the reg_rtx move
19365         optimization if the SET_DEST satisfies elimination_target_reg_p.
19366         * reload1.c (elimination_target_reg_p): New function.
19367         (gen_reload): In the move/add2 fallback, make sure that op0
19368         does not overlap the destination register.
19369
19370 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
19371
19372         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
19373         transform only GIMPLE_MODIFY_STMTs.
19374         * tree-complex.c (expand_complex_operations_1): Ditto.
19375         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
19376         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
19377         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
19378         branches.
19379         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
19380         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
19381         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
19382         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
19383         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
19384         slpeel_add_loop_guard): Ditto.
19385         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
19386         * lambda-code.c (perfect_nestify): Ditto.
19387         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
19388         before the first statement.
19389         * tree-optimize.c (execute_free_datastructures): Fix comments.
19390         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
19391         * tree-flow.h (disband_implicit_edges): Declaration removed.
19392         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
19393         branches.
19394         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
19395         COND_EXPRs without gotos.
19396         (disband_implicit_edges, has_label_p): Removed.
19397         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
19398         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
19399         branches.
19400         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
19401         side effects.
19402         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
19403         also for COND_EXPRs.
19404         * cfgexpand.c (label_rtx_for_bb): New function.
19405         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
19406         Use label_rtx_for_bb to find the labels.
19407         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
19408         last block.  Detect fallthru edges.
19409
19410 2007-04-26  Ian Lance Taylor  <iant@google.com>
19411
19412         PR target/28675
19413         * reload.c (find_reloads_subreg_address): If the address was valid
19414         in the original mode but not in the new mode, reload the whole
19415         address.
19416
19417 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
19418
19419         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
19420         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
19421         (cleanup_control_expr_graph): Do not invalidate dominance info.
19422         Record altered blocks.
19423         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
19424         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
19425         cleanup_tree_cfg_bb): New functions.
19426         (remove_forwarder_block): Do not maintain the worklist of blocks.
19427         Record altered blocks.
19428         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
19429         not over whole cfg.
19430         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
19431         delete_unreachable_blocks if dominators are not available.
19432         * tree-inline.c (optimize_inline_calls): Free dominance information
19433         earlier.
19434         * tree-flow.h (remove_edge_and_dominated_blocks,
19435         cfgcleanup_altered_bbs): Altered.
19436         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
19437         blocks.
19438         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
19439         functions.
19440         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
19441         do not invalidate dominators.
19442
19443 2007-04-26  Anatoly Sokolov <aesok@post.ru>
19444
19445         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
19446         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
19447         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
19448         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
19449
19450 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
19451
19452         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
19453
19454 2007-04-26  Richard Guenther  <rguenther@suse.de>
19455
19456         PR tree-optimization/31703
19457         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
19458         the right type for the target of the bittest.
19459
19460 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
19461
19462         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
19463         ix86_sol10_return_in_memory.
19464
19465 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
19466
19467         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
19468         variables.
19469
19470 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
19471
19472         PR c++/31598
19473         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
19474
19475         PR tree-optimization/30558
19476         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
19477         clear this_state.prev_try.
19478
19479 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
19480             Mark Mitchell  <mark@codesourcery.com>
19481
19482         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
19483         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
19484         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
19485
19486 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
19487
19488         PR driver/31107
19489         * doc/invoke.texi (%:print-asm-header): Document.
19490         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
19491         and -ftarget-help.
19492         (static_spec_functions): Add print-asm-header.
19493         (main): Print a banner before the --target-help linker options.
19494         (print_asm_header_spec_function): New function.
19495
19496 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
19497
19498         PR target/31403
19499         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
19500         (movsf_ie): Likewise.
19501
19502 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
19503
19504         * doc/extend.texi ([Type Traits]): Adjust per N2255.
19505
19506 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
19507
19508         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
19509         exception for divide-by-zero.
19510         (__umodsi3, __modsi3): Likewise.
19511
19512 2007-04-25  Dirk Mueller  <dmueller@suse.de>
19513
19514         * c-typeck.c (build_compound_expr): Annotate warning()
19515         call with OPT_Wunused_value.
19516         * tree-ssa.c (warn_uninit): Annotate warning with
19517         OPT_Wunintialized.
19518         * c-common.c (handle_sentinel_attribute): Annotate warning
19519         call with OPT_Wattributes.
19520
19521 2007-04-25  Thiemo Seufer  <ths@mips.com>
19522
19523         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
19524         (mips16): Fix typo.
19525         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
19526         on to the assembler.  Improve handling of -mno-mips16.  Add handling
19527         of -mno-mips3d, -mno-dsp, -mno-dspr2.
19528         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
19529         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
19530         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
19531
19532 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
19533
19534         PR target/31680
19535         * config/i386/winnt.c (i386_pe_file_end): Strip only
19536         USER_LABEL_PREFIX when writing export name.
19537
19538 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
19539
19540         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
19541         sh/elf.h, vx-common.h and vxworks.h.
19542         * config/sh/sh.h: Include config/vxworks-dummy.h.
19543         (SUBTARGET_OVERRIDE_OPTIONS): Define.
19544         (OVERRIDE_OPTIONS): Use it.
19545         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
19546         (vxworks_picreg): New pattern.
19547         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
19548         VXWORKS_OS_CPP_BUILTINS.
19549         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
19550         to their VXWORKS_* equivalents.
19551         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
19552         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
19553         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
19554         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
19555         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
19556         -mrtp/-fPIC multilibs.
19557         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
19558         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
19559         (MULTILIB_OSDIRNAMES): Delete.
19560
19561 2007-04-25  Anatoly Sokolov <aesok@post.ru>
19562
19563         PR target/18989
19564         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
19565
19566 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
19567
19568         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
19569         rounding mode to be specified by the caller.
19570         (real_to_mpfr) Likewise.
19571         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
19572         include new arguments.
19573         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
19574
19575 2007-04-24  Ian Lance Taylor  <iant@google.com>
19576
19577         PR tree-optimization/31605
19578         * tree-vrp.c (set_value_range): Check that min and max are not
19579         both overflow infinities.
19580         (set_value_range_to_value): New static function.
19581         (extract_range_from_binary_expr): Call set_value_range_to_value.
19582         (extract_range_from_cond_expr): Likewise.
19583         (extract_range_from_expr): Likewise.
19584         (extract_range_from_unary_expr): Likewise.  Don't create a range
19585         which overflows on both sides.
19586         (vrp_meet): Check for a useless range.
19587         (vrp_visit_phi_node): If we see a constant which looks like an
19588         overflow infinity, turn off the TREE_OVERFLOW flag.
19589
19590 2007-04-24  Ian Lance Taylor  <iant@google.com>
19591
19592         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
19593
19594 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
19595
19596         PR diagnostic/25923
19597         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
19598         diagnostic message is being built.
19599         * tree-pretty-print.c (dump_generic_node): Only write the
19600         formatted text into BUFFER's stream if we are not building a
19601         diagnostic message.
19602         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
19603         dump_generic_node.
19604         * Makefile.in (toplev.o): Depend on tree-pass.h.
19605
19606 2007-04-24  Ian Lance Taylor  <iant@google.com>
19607
19608         PR tree-optimization/31602
19609         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
19610         conditionals in the copied loop header.
19611         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
19612         warnings if TREE_NO_WARNING is set.
19613         * doc/invoke.texi (Warning Options): Clarify that
19614         -Wstrict-overflow does not warn about loops.
19615
19616 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
19617
19618         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
19619         expand on the comment about _Decimal128 arguments and check the
19620         integer result of the modulus operation; for 64-bit ELF ABI, ensure
19621         that _Decimal128 argument uses even/odd register pair.
19622         (function_arg): Ditto.
19623
19624 2007-04-24  Hui-May Chang <hm.chang@apple.com>
19625
19626         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
19627         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
19628
19629 2007-04-24  Richard Guenther  <rguenther@suse.de>
19630             Olga Golovanevsky  <olga@il.ibm.com>
19631
19632         * fold-const.c (multiple_of_p): Check for bottom
19633         to be zero.
19634
19635 2007-04-24  Richard Henderson  <rth@redhat.com>
19636
19637         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
19638         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
19639         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
19640         looking for non-zero bits shifted out.  Avoid a recursive call
19641         when constructing the scalar.
19642         (__floatundisf): Likewise.
19643
19644 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
19645
19646         * dwarf2out.c (field_byte_offset): Move the existing logic
19647         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
19648         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
19649
19650 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
19651
19652         PR target/31641
19653         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
19654         length argument of 0 for memset.
19655         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
19656         unsigned shift instead of the signed variant.
19657
19658 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
19659
19660         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
19661         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
19662         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
19663         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
19664         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
19665         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
19666         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
19667         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
19668         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
19669         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
19670         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
19671         "mul<mode>3", "div<mode>3"): Insn definitions added.
19672         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
19673         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
19674         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
19675         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
19676         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
19677         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
19678         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
19679         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
19680         TARGET_FLOAT_FORMAT): Macro definitions removed.
19681         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
19682         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
19683         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
19684         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
19685         (s390_gen_rtx_const_DI): Function removed.
19686         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
19687
19688 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
19689
19690         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
19691         over an external ffs function.
19692
19693 2007-04-24  Chao-ying Fu  <fu@mips.com>
19694             Richard Sandiford  <richard@nildram.co.uk>
19695
19696         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
19697         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
19698         (smadd_widen_optab, umadd_widen_optab): Define.
19699         * optabs.c (init_optabs): Initialize smadd_widen_optab and
19700         umadd_widen_optab.
19701         * genopinit.c (optabs): Fill in smadd_widen_optab and
19702         umadd_widen_optab.
19703         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
19704         and umadd_widen_optab to implement multiply-add sequences.
19705         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
19706         (<u>maddsidi4): ...this.  Extend condition to include
19707         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
19708         of operand 0 to "ka" and use the three-operand form of madd<u>
19709         for TARGET_DSPR2.
19710         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
19711         to define_expands.
19712         * config/mips/constraints.md (ka): New register constraint.
19713
19714 2007-04-24  Jan Hubicka  <j@suse.cz>
19715
19716         Revert:
19717
19718         2007-04-23  Jan Hubicka  <jh@suse.cz>
19719         * function.c (init_function_start): Don't init line number info.
19720         (expand_function_end): Update.
19721         (reset_block_changes, record_block_change, finalize_block_changes,
19722         check_block_change, free_block_changes): Kill.
19723         * function.h (reset_block_changes, record_block_change,
19724         finalize_block_changes, check_block_change, free_block_changes):
19725         Remove prototypes.
19726         (struct function): Remove ib_boundaries_block.
19727         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
19728         Use curr_insn_locator to initialize locator.
19729         (emit_line_note): Remove.
19730         * cfgexpand.c (expand_gimple_cond_expr): Update.
19731         (construct_exit_block): Likewise.
19732         (tree_expand_cfg): Initialize/finalize locators.
19733         * expr.c (expand_expr_real): Update.
19734         * cfglayout.c (line_locators_locs, line_locators_lines,
19735         file_locators_locs, file_locators_files): Remove.
19736         (set_block_levels): Move to cfgexpand.c.
19737         (insn_locators_initialize): Remove.
19738         (pass_insn_locators_initialize): Remove.
19739         (locations_locators_locs, locations_locators_vals): New static vars.
19740         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
19741         Likewise.
19742         (insn_locators_alloc, insn_locators_finalize,
19743         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19744         New functions.
19745         (locator_location): New.
19746         (locator_line, locator_file): Rewrite.
19747         * rtl.h (emit_line_note): Kill.
19748         (insn_locators_alloc, insn_locators_finalize,
19749         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19750         Declare.
19751         * tree-inline.c (initialize_cfun): Do not initialize
19752         ib_boundaries_block.
19753         * passes.c (pass_insn_locators_initialize): Remove.
19754
19755 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
19756
19757         * doc/invoke.texi: Removed leading '-' from option index entries.
19758
19759 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
19760
19761         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
19762         Use phi_nodes_ptr.
19763         (create_phi_node): Use set_phi_nodes.
19764         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
19765         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
19766         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
19767         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
19768         (bsi_start, bsi_last): Use bb_stmt_list.
19769         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
19770         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
19771         Traverse the statements using tsi iterator.
19772         * basic-block.h (struct basic_block_def): Fields stmt_list
19773         and phi_nodes moved to ...
19774         (struct tree_bb_info): ... new structure.
19775         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
19776         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
19777         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
19778         (tree_verify_flow_info): Verify that il.tree is not set for
19779         entry and exit block.
19780         (tree_split_block): Use set_bb_stmt_list.
19781
19782 2007-04-23  Mike Stump  <mrs@apple.com>
19783
19784         * config/i386/i386.c (ix86_tune_features
19785         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
19786         nocona and core2.
19787
19788 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
19789
19790         * config/i386/i386.md (prefix_extra): New attribute.
19791         (length): Add prefix_extra.
19792
19793         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
19794         (sse2_movntv2di): Likewise.
19795         (sse2_cvtps2dq): Likewise.
19796         (sse2_cvtpd2pi): Likewise.
19797         (sse2_cvttpd2pi): Likewise.
19798         (*sse2_cvtpd2ps): Likewise.
19799         (*add<mode>3): Likewise.
19800         (sse2_ssadd<mode>3): Likewise.
19801         (sse2_usadd<mode>3): Likewise.
19802         (*sub<mode>3): Likewise.
19803         (sse2_sssub<mode>3): Likewise.
19804         (sse2_ussub<mode>3): Likewise.
19805         (*mulv8hi3): Likewise.
19806         (*smulv8hi3_highpart): Likewise.
19807         (*umulv8hi3_highpart): Likewise.
19808         (sse2_umulv2siv2di3): Likewise.
19809         (sse2_pmaddwd): Likewise.
19810         (ashr<mode>3): Likewise.
19811         (lshr<mode>3): Likewise.
19812         (ashl<mode>3): Likewise.
19813         (sse2_ashlti3): Likewise.
19814         (sse2_lshrti3): Likewise.
19815         (*umaxv16qi3): Likewise.
19816         (*smaxv8hi3): Likewise.
19817         (*uminv16qi3): Likewise.
19818         (*sminv8hi3): Likewise.
19819         (sse2_eq<mode>3): Likewise.
19820         (sse2_gt<mode>3): Likewise.
19821         (*and<mode>3): Likewise.
19822         (sse2_nand<mode>3): Likewise.
19823         (*ior<mode>3): Likewise.
19824         (*xor<mode>3): Likewise.
19825         (sse2_packsswb): Likewise.
19826         (sse2_packssdw): Likewise.
19827         (sse2_packuswb): Likewise.
19828         (sse2_punpckhbw): Likewise.
19829         (sse2_punpcklbw): Likewise.
19830         (sse2_punpckhwd): Likewise.
19831         (sse2_punpcklwd): Likewise.
19832         (sse2_punpckhdq): Likewise.
19833         (sse2_punpckldq): Likewise.
19834         (sse2_punpckhqdq): Likewise.
19835         (sse2_punpcklqdq): Likewise.
19836         (*sse2_pinsrw): Likewise.
19837         (*sse2_pextrw): Likewise.
19838         (sse2_pshufd_1): Likewise.
19839         (sse2_uavgv16qi3): Likewise.
19840         (sse2_uavgv8hi3): Likewise.
19841         (sse2_psadbw): Likewise.
19842         (sse2_pmovmskb): Likewise.
19843         (*sse2_maskmovdqu): Likewise.
19844         (*sse2_maskmovdqu_rex64): Likewise.
19845         (sse4a_extrqi): Likewise.
19846         (sse4a_extrq): Likewise.
19847         (sse3_lddqu): Set prefix_rep.
19848         (sse3_addsubv4sf3): Likewise.
19849         (sse3_haddv4sf3): Likewise.
19850         (sse3_hsubv4sf3): Likewise.
19851         (sse_cvtss2si): Likewise.
19852         (sse_cvtss2si_2): Likewise.
19853         (sse_cvtss2siq): Likewise.
19854         (sse_cvtss2siq_2): Likewise.
19855         (sse_cvttss2si): Likewise.
19856         (sse_cvttss2siq): Likewise.
19857         (sse2_cvttps2dq): Likewise.
19858         (sse3_movshdup): Likewise.
19859         (sse3_movsldup): Likewise.
19860         (sse2_cvtsd2si): Likewise.
19861         (sse2_cvtsd2si_2): Likewise.
19862         (sse2_cvtsd2siq): Likewise.
19863         (sse2_cvtsd2siq_2): Likewise.
19864         (sse2_cvttsd2si): Likewise.
19865         (sse2_cvttsd2siq): Likewise.
19866         (*sse2_cvtpd2dq): Likewise.
19867         (*sse2_cvttpd2dq): Likewise.
19868         (sse2_pshuflw_1): Likewise.
19869         (sse2_pshufhw_1): Likewise.
19870         (sse4a_insertqi): Likewise.
19871         (sse4a_insertq): Likewise.
19872         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
19873         (ssse3_phadddv4si3): Likewise.
19874         (ssse3_phaddswv8hi3): Likewise.
19875         (ssse3_phsubwv8hi3): Likewise.
19876         (ssse3_phsubdv4si3): Likewise.
19877         (ssse3_phsubswv8hi3): Likewise.
19878         (ssse3_pmaddubswv8hi3): Likewise.
19879         (ssse3_pmulhrswv8hi3): Likewise.
19880         (ssse3_pshufbv16qi3): Likewise.
19881         (ssse3_psign<mode>3): Likewise.
19882         (ssse3_palignrti): Likewise.
19883         (abs<mode>2): Likewise.
19884         (ssse3_phaddwv4hi3): Set prefix_extra.
19885         (ssse3_phadddv2si3): Likewise.
19886         (ssse3_phaddswv4hi3): Likewise.
19887         (ssse3_phsubwv4hi3): Likewise.
19888         (ssse3_phsubdv2si3): Likewise.
19889         (ssse3_phsubswv4hi3): Likewise.
19890         (ssse3_pmaddubswv4hi3): Likewise.
19891         (ssse3_pmulhrswv4hi3): Likewise.
19892         (ssse3_pshufbv8qi3): Likewise.
19893         (ssse3_psign<mode>3): Likewise.
19894         (ssse3_palignrdi): Likewise.
19895         (abs<mode>2): Likewise.
19896         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
19897         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
19898         (sse2_pmovmskb): Set mode to SI instead of V2DF.
19899
19900 2007-04-23  Nick Clifton  <nickc@redhat.com>
19901
19902         * params.def: Fix formatting of emacs local variables.
19903
19904 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
19905
19906         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
19907         move if inter-unit move isn't allowed.
19908         Don't split moving the first element of V2DI to DI to inter-unit
19909         move if inter-unit move isn't allowed.
19910
19911 2007-04-23  Richard Guenther  <rguenther@suse.de>
19912
19913         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
19914         and CDI_POST_DOMINATORS separately.
19915
19916 2007-04-23  Nick Clifton  <nickc@redhat.com>
19917
19918         * c.opt (Wformat-contains-nul): Add warning attribute.
19919
19920 2007-04-23  Jan Hubicka  <jh@suse.cz>
19921
19922         * function.c (init_function_start): Don't init line number info.
19923         (expand_function_end): Update.
19924         (reset_block_changes, record_block_change, finalize_block_changes,
19925         check_block_change, free_block_changes): Kill.
19926         * function.h (reset_block_changes, record_block_change,
19927         finalize_block_changes, check_block_change, free_block_changes):
19928         Remove prototypes.
19929         (struct function): Remove ib_boundaries_block.
19930         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
19931         Use curr_insn_locator to initialize locator.
19932         (emit_line_note): Remove.
19933         * cfgexpand.c (expand_gimple_cond_expr): Update.
19934         (construct_exit_block): Likewise.
19935         (tree_expand_cfg): Initialize/finalize locators.
19936         * expr.c (expand_expr_real): Update.
19937         * cfglayout.c (line_locators_locs, line_locators_lines,
19938         file_locators_locs, file_locators_files): Remove.
19939         (set_block_levels): Move to cfgexpand.c.
19940         (insn_locators_initialize): Remove.
19941         (pass_insn_locators_initialize): Remove.
19942         (locations_locators_locs, locations_locators_vals): New static vars.
19943         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
19944         Likewise.
19945         (insn_locators_alloc, insn_locators_finalize,
19946         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19947         New functions.
19948         (locator_location): New.
19949         (locator_line, locator_file): Rewrite.
19950         * rtl.h (emit_line_note): Kill.
19951         (insn_locators_alloc, insn_locators_finalize,
19952         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19953         Declare.
19954         * tree-inline.c (initialize_cfun): Do not initialize
19955         ib_boundaries_block.
19956         * passes.c (pass_insn_locators_initialize): Remove.
19957
19958 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19959
19960         PR middle-end/31448
19961         * expr.c (reduce_to_bit_field_precision): Handle
19962         CONST_INT rtx's.
19963
19964 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
19965
19966         PR tree-optimization/24659
19967         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
19968         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
19969         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
19970         * genopinit.c (optabs): Rename vec_pack_mod_optab
19971         to vec_pack_trunc_optab.
19972         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
19973         early for scalar floating point operands for NOP_EXPR.
19974         (vectorizable_type_promotion): Ditto.
19975         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
19976         vec_pack_trunc_optab.
19977         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
19978
19979         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
19980         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
19981         Rename from VEC_PACK_MOD_EXPR.
19982         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
19983         * expr.c (expand_expr_real_1): Ditto.
19984         * tree-inline.c (estimate_num_insns_1): Ditto.
19985         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
19986
19987         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
19988         (vec_unpacks_lo_v4sf): Ditto.
19989         (vec_pack_trunc_v2df): Ditto.
19990         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
19991         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
19992         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
19993
19994         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
19995         vec_pack_mod_v8hi.
19996         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
19997
19998         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
19999         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
20000         packing of floating point operands.
20001         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
20002         represent unpacking of floating point operands.
20003         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
20004         [vec_unpacks_hi]: Ditto.
20005         [vec_unpacks_lo]: Ditto.
20006
20007 2007-04-22  Jan Hubicka  <jh@suse.cz>
20008
20009         * final.c (rest_of_handle_final): Call
20010         targetm.asm_out.constructor/targetm.asm_out.destructor
20011         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
20012         proper priority via decl_*_priority_insert.
20013         * c-common.c (c_expand_body): Likewise.
20014
20015 2007-04-22  Richard Guenther  <rguenther@suse.de>
20016
20017         PR tree-optimization/29789
20018         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
20019         (rewrite_reciprocal): New helper split out from
20020         determine_invariantness_stmt.
20021         (rewrite_bittest): Likewise.
20022         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
20023         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
20024         is not.
20025
20026 2007-04-22  Revital Eres  <eres@il.ibm.com>
20027
20028         * loop-unroll.c (var_to_expand): New field to support also
20029         insns of the form x = something + x.
20030         (analyze_insn_to_expand_var): Use it.
20031         (expand_var_during_unrolling): Likewise.
20032
20033 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
20034
20035         * predict.c: Include pointer-set.h.
20036         (bb_predictions): New variable.
20037         (tree_predicted_by_p, tree_predict_edge,
20038         remove_predictions_associated_with_edge): Use bb_predictions map
20039         instead of bb->predictions.
20040         (clear_bb_predictions, assert_is_empty): New functions.
20041         (combine_predictions_for_bb): Use bb_predictions map.  Call
20042         clear_bb_predictions.
20043         (tree_estimate_probability): Create and free bb_predictions map.
20044         * Makefile.in (predict.o): Add pointer-set.h dependency.
20045         * basic-block.h (struct basic_block_def): Remove predictions
20046         field.
20047         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
20048
20049 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
20050
20051         PR target/31480
20052         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
20053         is null.
20054
20055 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20056
20057         * timevar.c (timevar_print): Change reference of --disable-checking to
20058         --enable-checking=release.  Also warn if assert checking is disabled.
20059
20060 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20061
20062         PR C/30265
20063         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
20064         decl as addressable if the compound literal was marked as
20065         addressable.
20066         Mark the decl as a gimple register if it is a complex or
20067         vector decl and does not live in memory.
20068
20069 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20070
20071         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
20072         (GENERIC_NEXT): New function macro.
20073         (PHI_CHAIN): Use phi_node's new chain variable.
20074         (tree_phi_node): Change tree_common to tree_base
20075         and add the chain field.
20076         * tree-phinodes.c (make_phi_node): Don't set
20077         TREE_TYPE on the new node.
20078         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
20079         instead of checking GIMPLE_TUPLE_P in chain_next.
20080         * tree-vect-transform.c
20081         (get_initial_def_for_induction): Look at
20082         PHI_RESULT_TREE for the type of the phi node.
20083         (update_vuses_to_preheader): Use PHI_CHAIN
20084         instead of TREE_CHAIN on the phi node.
20085         * tree-ssa-structalias.c (compute_points_to_sets):
20086         Likewise.
20087         (ipa_pta_execute): Likewise.
20088
20089 2007-04-21  Richard Guenther  <rguenther@suse.de>
20090
20091         PR middle-end/31136
20092         * fold-const.c (fold_unary): Call fold_convert_const on the
20093         original tree.
20094
20095 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
20096
20097         * gcse.c (store_killed_in_insn): Handle PARALLELs.
20098         (store_killed_in_pat): New.
20099
20100 2007-04-20  Richard Henderson  <rth@redhat.com>
20101
20102         PR target/31628
20103         * config/i386/i386.c (type_has_variadic_args_p): Look for any
20104         TREE_LIST with a void_type_node value, not void_list_node exactly.
20105
20106 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
20107
20108         * doc/standards.texi: Re-arrange into language-specific
20109         subsections. Add a C++ section, documenting which standards we
20110         support.
20111
20112 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
20113
20114         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
20115         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
20116
20117 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
20118
20119         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
20120         ecrti.o and crtbegin.o.
20121         (LIB_DEFAULT_SPEC): Include -lc.
20122         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
20123
20124 2007-04-20  Richard Henderson  <rth@redhat.com>
20125
20126         PR target/28623
20127         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
20128         argument; update all callers.
20129         (get_unaligned_offset): New.
20130         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
20131         get_unaligned_address, just pass on the address directly.
20132         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
20133         the subreg in the helper patterns.
20134         (unaligned_extendqidi_le): Use get_unaligned_offset.
20135         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
20136         (unaligned_extendhidi_be): Likewise.
20137         (unaligned_extendhidi): Tidy.
20138         * config/alpha/alpha-protos.h: Update.
20139
20140 2007-04-20  Richard Henderson  <rth@redhat.com>
20141
20142         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
20143         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
20144         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
20145         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
20146         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
20147         (CPP_SPEC): Don't include %(cpp_subtarget).
20148         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
20149         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
20150         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
20151
20152 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
20153
20154         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
20155         for __builtin_ia32_cmpordss.
20156
20157         PR tree-optimization/31632
20158         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
20159         and arg1 for optimizations of comparison against min/max values.
20160         Fold arg0 to arg1's type for optimizations of comparison against
20161         min+1 and max-1 values.
20162
20163 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
20164
20165         * reload.c (combine_reloads): When trying to use a dying register,
20166         check whether it's uninitialized and don't use if so.
20167
20168 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
20169
20170         * fold-const.c: Remove prototypes for native_encode_expr and
20171         native_interpret_expr.
20172         (native_encode_expr): Make non-static.
20173         (native_interpret_expr): Likewise.
20174         * tree.h: Add prototypes for the above.
20175
20176 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
20177
20178         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
20179         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
20180         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
20181         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
20182         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
20183         Add length attributes.
20184
20185 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
20186
20187         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
20188         not that it is 1.
20189
20190         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
20191         __STDC_WANT_DEC_FP__.
20192
20193 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
20194
20195         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
20196         for long double compatibility.
20197         * configure: Regenerate.
20198
20199 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
20200
20201         PR rtl-optimization/29841
20202         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
20203         trap instructions.
20204         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
20205         that may cause control flow transfer from being moved.
20206
20207 2007-04-18  Jan Hubicka  <jh@suse.cz>
20208
20209         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
20210         types.
20211
20212 2007-04-18  Eric Christopher  <echristo@apple.com>
20213
20214         * config/rs6000/darwin.md (load_macho_picbase): Use link register
20215         only. Update operands.
20216         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
20217         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
20218         link register to pic register.
20219
20220 2007-04-18  Dirk Mueller  <dmueller@suse.de>
20221
20222         PR diagnostic/31227
20223         * tree-vrp.c (search_for_addr_array): New.
20224         (check_array_bounds): Suppress warning about
20225         address taken of array refs if its not de-referenced.
20226
20227 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
20228
20229         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
20230         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
20231
20232         * tree-vectorizer.h (NITERS_KNOWN_P): New.
20233         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
20234         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
20235
20236         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
20237         dump print.
20238         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
20239         print message.
20240         (vect_analyze_scalar_cycles): Fix indentation.
20241         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
20242         (vect_mark_relevant): Include phis in relevance analysis.
20243
20244         * tree-vect-transform.c (vect_transform_loop): Add an assert.
20245
20246 2007-04-18  Anatoly Sokolov <aesok@post.ru>
20247
20248         * config/avr/avr.c (ptrreg_to_str): Replace error() with
20249         output_operand_lossage().
20250
20251 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
20252
20253         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
20254         the unused code for reduction without adjust-in-epilog to simplify the
20255         function.
20256
20257 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
20258
20259         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
20260         (S390_TDC_NEGATIVE_ZERO): New constant.
20261         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
20262         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
20263         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
20264         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
20265         (S390_TDC_POSITIVE_INFINITY): New constant.
20266         (S390_TDC_NEGATIVE_INFINITY): New constant.
20267         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
20268         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
20269         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
20270         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
20271         (S390_TDC_INFINITY): New constant.
20272         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
20273         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
20274         optimization for UNSPEC_CCZ_TO_INT.
20275         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
20276         ("*ccz_to_int"): New insn.
20277         ("isinf<mode>2"): New insn.
20278         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
20279         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
20280         (UNSPEC_CCZ_TO_INT): New constant.
20281
20282 2007-04-18  Richard Guenther  <rguenther@suse.de>
20283
20284         PR tree-optimization/19431
20285         PR tree-optimization/21463
20286         * tree-pass.h (pass_phiprop): Declare.
20287         * passes.c (init_optimization_passes): New phiprop pass.
20288         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
20289         (phivn_valid_p): New helper function.
20290         (phiprop_insert_phi): Likewise.
20291         (propagate_with_phi): Likewise.
20292         (tree_ssa_phiprop): New propagator propagating loads
20293         through phi nodes if profitable.
20294
20295 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
20296
20297         * tree-vect-analyze.c (process_use): New function.
20298         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
20299         Check phis in all bbs.
20300         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
20301         assert.
20302
20303 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
20304
20305         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
20306         we use REG_EQUAL.
20307
20308 2007-04-17  Anatoly Sokolov <aesok@post.ru>
20309
20310         PR target/30483
20311         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
20312         error().
20313
20314 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
20315
20316         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
20317         on "0".
20318         (sse_vmmulv4sf3): Likewise.
20319         (sse2_vmaddv2df3): Likewise.
20320         (sse2_vmmulv2df3): Likewise.
20321
20322 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
20323
20324         PR rtl-optimization/31360
20325         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
20326         (target_reg_cost): New.
20327         (init_set_costs): Initialize target_reg_cost.  Add comments
20328         regarding the rationale of the costs.
20329         (global_cost_for_size): Renamed to...
20330         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
20331         of register pressure.
20332         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
20333         estimate_reg_pressure_cost.  Add number of ivs.
20334         (determine_set_costs): Dump target_reg_cost.
20335         * loop-invariant.c (gain_for_invariant): Use
20336         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
20337         (best_gain_for_invariant, find_invariants_to_move): Remove
20338         n_inv_uses.
20339         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
20340         (target_reg_cost): Declare.
20341         (global_cost_for_size): Declaration removed.
20342         (estimate_reg_pressure_cost): Declare.
20343
20344 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
20345
20346         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
20347         regnos into even/odd register pairs.
20348         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
20349         TDmode similar to the other floating point modes.
20350         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
20351         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
20352         define_expand's.
20353         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
20354         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
20355         (movdd_hardfloat64): Use TARGET_MFPGPR.
20356
20357 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
20358
20359         * reload1.c (delete_output_reload): Don't count output in n_inherited.
20360
20361         Revert
20362         2005-01-05  Richard Henderson  <rth@redhat.com>
20363         PR rtl-opt/10692
20364         * reload1.c (do_input_reload): Restrict the optimization deleteing
20365         a previous output reload to RELOAD_FOR_INPUT.
20366
20367 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
20368
20369         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
20370         induc_vec_info_type.
20371         (vectorizable_induction): New function declaration.
20372         * tree-vect-transform.c (get_initial_def_for_induction): No need to
20373         check if already vectorized.  Find first place in BB where new stmts
20374         can be inserted.  Takes only one argument.
20375         (vectorizable_induction): New function.
20376         (vect_transform_stmt): Add case for induc_vec_info_type to call
20377         vectorizable_induction.
20378         (vect_transform_loop): Consider phis for vectorization.
20379         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
20380         condition.
20381         (analyze_operations): Call vectorizable_induction when analyzing phis.
20382         Fix comment.
20383         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
20384         (vect_mark_relevant): Include phis in relevance analysis.
20385         (vect_mark_stmts_to_be_vectorize): Likewise.
20386         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
20387
20388 2007-04-16  Lawrence Crowl  <crowl@google.com>
20389
20390         * doc/invoke.texi (Debugging Options): Add documentation for the
20391         -femit-struct-debug options -femit-struct-debug-baseonly,
20392         -femit-struct-debug-reduced, and
20393         -femit-struct-debug-detailed[=...].
20394
20395         * c-opts.c (c_common_handle_option): Add
20396         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
20397         and OPT_femit_struct_debug_detailed_.
20398         * c.opt: Add specifications for
20399         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
20400         and -femit-struct-debug-detailed[=...].
20401         * opts.c (set_struct_debug_option): Parse the
20402         -femit-struct-debug-... options.
20403         * opts.c (matches_main_base, main_input_basename,
20404         main_input_baselength, base_of_path, matches_main_base): Add
20405         variables and functions to compare header base name to compilation
20406         unit base name.
20407         * opts.c (should_emit_struct_debug): Add to determine to emit a
20408         structure based on the option.
20409         (dump_struct_debug) Also disabled function to debug this
20410         function.
20411         * opts.c (handle_options): Save the base name of the
20412         compilation unit.
20413
20414         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
20415         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
20416         This hook indicates if a type is generic.  Set it by default
20417         to "never generic".
20418         * langhooks.h (struct lang_hooks_for_types): Add a new hook
20419         to determine if a struct type is generic or not.
20420         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
20421         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
20422         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
20423         with live C++ hook.
20424
20425         * flags.h (enum debug_info_usage): Add an enumeration to describe
20426         a program's use of a structure type.
20427         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
20428         to indicate the program's usage of the type.  Filter structs based
20429         on the -femit-struct-debug-... specification.
20430         (gen_type_die): Split into two routines, gen_type_die and
20431         gen_type_die_with_usage.  gen_type_die is now a wrapper
20432         that assumes direct usage.
20433         (gen_type_die_with_usage): Replace calls to gen_type_die
20434         with gen_type_die_with_usage adding the program usage of
20435         the referenced type.
20436         (dwarf2out_imported_module_or_decl): Suppress struct debug
20437         information using should_emit_struct_debug when appropriate.
20438
20439 2007-04-16  Ian Lance Taylor  <iant@google.com>
20440
20441         PR tree-optimization/31522
20442         * tree-vrp.c (vr_phi_edge_counts): New static variable.
20443         (vrp_initialize): Allocate vr_phi_edge_counts.
20444         (vrp_visit_phi_node): Don't push to infinity if we saw a new
20445         executable edge.  Drop test for all constants.
20446         (vrp_finalize): Free vrp_phi_edge_counts.
20447
20448         * doc/cpp.texi (Common Predefined Macros): Clarify description of
20449         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
20450
20451         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
20452         predecessors at head rather than tail.
20453
20454 2007-04-16  Matthias Klose  <doko@debian.org>
20455
20456         * config/alpha/linux.h (CPP_SPEC): Define.
20457         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
20458
20459 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
20460
20461         * function.h: Remove sequence_stack extern declaration.
20462
20463 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
20464
20465         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
20466         TARGET_FIDOA.
20467         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
20468         defined.
20469
20470 2007-04-16  Anatoly Sokolov <aesok@post.ru>
20471
20472         * config/avr/avr.c (avr_arch_types): Rearranging  array.
20473         (enum avr_arch): Add.
20474         (avr_mcu_types): Use avr_arch enumeration constants instead of
20475         numbers.
20476         * config/avr/avr.h (LINK_SPEC): Simplify.
20477
20478 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
20479
20480         * config/m68k/m68k.c (m68k_libcall_value,
20481         m68k_function_value): Use macros for register names more.
20482
20483         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
20484         instead.
20485         (M68K_REGNAME): Use A6_REG.
20486         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
20487
20488 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20489
20490         PR middle-end/28071
20491         * sched-int.h (struct deps): Split field 'pending_lists_length' into
20492         'pending_read_list_length' and 'pending_write_list_length'.  Update
20493         comment.
20494         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
20495         to handle two length counters instead of one.  Update all uses.
20496         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
20497         two length counters instead of one.
20498         * sched-rgn.c (propagate_deps): Update to handle two length counters
20499         instead of one.
20500
20501 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
20502
20503         PR target/31582
20504         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
20505         copy of source, pass it to ix86_expand_vector_set and return
20506         it as target.
20507
20508 2007-04-16  David Ung  <davidu@mips.com>
20509             Joseph Myers  <joseph@codesourcery.com>
20510
20511         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
20512         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
20513         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
20514         Add 74K processor information.
20515         * config/mips/mips.md: Include 74k.md.
20516         (cpu): Add 74kc,74kf,74kx.
20517         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
20518         * config/mips/74k.md: New.
20519         * doc/invoke.texi (MIPS Options): Document 74K support.
20520
20521 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
20522
20523         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
20524         vectorizable_* functions.
20525         * tree-vect-transform.c (vectorizable_call): Add check for
20526         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
20527         (vectorizable_store): likewise.
20528         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
20529         Add comments.
20530         (vectorizable_operation, vectorizable_type_demotion): Likewise.
20531         (vectorizable_type_promotion, vectorizable_load): Likewise.
20532         (vectorizable_live_operation, vectorizable_condition): Likewise.
20533         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
20534         STMT_VINFO_LIVE_P.
20535         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
20536
20537 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
20538
20539         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
20540         register numbers more.
20541         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
20542         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
20543         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
20544         FUNCTION_VALUE_REGNO_P): Likewise.
20545         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
20546         STATIC_CHAIN_REGNUM): Likewise.
20547         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
20548         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
20549         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
20550         * config/m68k/m68k.md (FP_REG): New.
20551
20552 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
20553
20554         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
20555         alignment on fido.
20556
20557 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
20558
20559         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
20560         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
20561         comment typos.
20562
20563 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
20564
20565         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
20566         cold loops.
20567
20568 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20569
20570         PR c/31520
20571         * c-decl.c (finish_decl): Grab the type of the decl after the call
20572         to store_init_value.
20573
20574 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
20575
20576         * common.opt (fforward-propagate): Fix "Optimization" annotation.
20577
20578 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
20579
20580         PR c++/25874
20581         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
20582         dominators, post dominators and cleanup cfg before returning.
20583
20584 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
20585
20586         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
20587         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
20588
20589 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
20590
20591         * config.gcc: Recognize fido.
20592         * config/m68k/m68k-devices.def (fidoa): New.
20593         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
20594         __mfido__.
20595         (FL_FIDOA, TARGET_FIDOA): New.
20596         * config/m68k/m68k.opt (mfidoa): New.
20597
20598 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20599
20600         PR middle-end/31322
20601         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
20602         when a personality function is used.
20603
20604 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
20605
20606         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
20607
20608 2007-04-13  Mike Stump  <mrs@apple.com>
20609
20610         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
20611         we can...
20612         * config/darwin.opt (fapple-kext): Make C++ only.
20613         * config/darwin.c (darwin_override_options): Remove code to ensure
20614         -fapple-kext is given for C++ only.
20615
20616 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
20617
20618         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
20619         * config/mips/mips.c (override_options): Call
20620         SUBTARGET_OVERRIDE_OPTIONS, if defined.
20621
20622 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
20623
20624         * config/i386/i386.opt (msvr3-shlib): Removed.
20625
20626         * doc/invoke.texi: Remove -msvr3-shlib.
20627
20628 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
20629
20630         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
20631         with "popcnt" instruction.
20632
20633 2007-04-13  Richard Guenther  <rguenther@suse.de>
20634
20635         PR tree-optimization/21258
20636         * tree-vrp.c (compare_case_labels): New helper.
20637         (find_switch_asserts): New function.
20638         (find_assert_locations): Call it for SWITCH_EXPRs.
20639
20640 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
20641
20642         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
20643         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
20644         check is now implied in X87_FLOAT_MODE_P.
20645         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
20646         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
20647         (fix_trunc<mode>_i386_fisttp): Ditto.
20648         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
20649         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
20650         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
20651         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
20652         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
20653         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
20654         (unnamed_splitters): Ditto.
20655         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
20656         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
20657         FIRST_SSE_REG for local functions when SSE math is enabled or
20658         for functions with sseregparm attribute.
20659         (standard_80387_constant_p): Return -1 if mode is not
20660         X87_FLOAT_MODE_P.
20661         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
20662         (ix86_expand_compare): Ditto.
20663         (ix86_expand_carry_flag_compare): Ditto.
20664         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
20665         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
20666         DECIMAL_FLOAT_MODE_P.
20667         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
20668         of SCALAR_FLOAT_MODE_P.
20669         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
20670         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
20671         checks before FLOAT_MODE_P.
20672         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
20673         before FLOAT_MODE_P.
20674         [DIV]: Ditto.
20675         [NEG]: Ditto.
20676         [ABS]: Ditto.
20677         [SQRT]: Ditto.
20678         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
20679
20680 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
20681             Charles Wilson  <libtool@cwilson.fastmail.fm>
20682
20683         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
20684         (libgcc.mvars): Don't depend on them.
20685         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
20686         * exec-tool.in: New.
20687
20688 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
20689
20690         * doc/invoke.text (--help): Document --help=common.
20691
20692 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
20693
20694         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
20695
20696 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20697
20698         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
20699         * genemit.c (main): Emit #include "integrate.h".
20700         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
20701         (LOADGP_RTP): New mips_loadgp_style.
20702         * config/mips/mips.h: Include config/vxworks-dummy.h.
20703         (TARGET_RTP_PIC): New macro.
20704         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
20705         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
20706         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
20707         for TARGET_RTP_PIC.
20708         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
20709         -mvxworks-pic when using -mrtp and a PIC option.
20710         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
20711         for RTP PIC.
20712         (mips_symbolic_constant_p, mips_symbolic_address_p)
20713         (mips_symbol_insns): Handle SYMBOL_HALF.
20714         (override_options): Warn about -G and -mrtp being used together.
20715         Initialize mips_lo_relocs[SYMBOL_HALF].
20716         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
20717         (mips_emit_loadgp): Handle LOADGP_RTP.
20718         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
20719         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
20720         (tablejump): Handle function-relative case table entries if
20721         TARGET_RTP_PIC.
20722         * config/mips/predicates.md (symbol_ref_operand): New predicate.
20723
20724 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20725
20726         * config/mips/mips.md (load_call<mode>): Allow any general register.
20727         destination.
20728         (sibcall_value_internal, sibcall_value_multiple_internal)
20729         (call_value_internal, call_value_split, call_value_multiple_internal)
20730         (call_value_multiple_split): Remove constraints from operand 0.
20731
20732 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20733
20734         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
20735         rather than loadgp_noshared.
20736         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
20737         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
20738         gen_loadgp.
20739         * config/mips/mips.md (loadgp): Rename to...
20740         (loadgp_newabi): ...this.
20741         (loadgp_noshared): Rename to...
20742         (loadgp_absolute): ...this.
20743
20744 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20745
20746         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
20747         false for locally-binding symbols.
20748         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
20749
20750 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20751
20752         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
20753         (SYMBOL_GOT_PAGE_OFST): ...this.
20754         (SYMBOL_GOT_GLOBAL): Rename to...
20755         (SYMBOL_GOT_DISP): ...this.
20756         (SYMBOL_GOTOFF_GLOBAL): Rename to...
20757         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
20758         * config/mips/mips.c (mips_global_symbol_p): New function.
20759         (mips_symbol_binds_local_p): Likewise.
20760         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
20761         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
20762         mips_global_symbol_p and mips_symbol_binds_local_p.
20763         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
20764         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
20765         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
20766         SYMBOL_GOTOFF_DISP.
20767         (mips_ok_for_lazy_binding_p): New function.
20768         (mips_load_call_address, mips_expand_call): Use it.
20769         (mips_dangerous_for_la25_p): Likewise.
20770         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
20771         (*got_disp<mode>): Use got_disp_operand instead of
20772         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
20773         SYMBOL_GOTOFF_GLOBAL.
20774         (*got_page<mode>): Use got_page_ofst_operand instead of
20775         local_got_operand.
20776         * config/mips/predicates.md (const_call_insn_operand): Use
20777         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
20778         (global_got_operand): Rename to...
20779         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
20780         SYMBOL_GOT_GLOBAL.
20781         (local_got_operand): Rename to...
20782         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
20783         of SYMBOL_GOT_LOCAL.
20784
20785 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20786
20787         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
20788         TARGET_CALL_CLOBBERED_GP.
20789         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
20790         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
20791         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
20792         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
20793         of TARGET_ABICALLS && !TARGET_NEWABI.
20794         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
20795         * config/mips/mips.c (mips_load_call_address): Check
20796         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
20797         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
20798         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
20799         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
20800         TARGET_ABICALLS && TARGET_NEWABI.
20801         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
20802         TARGET_ABICALLS.
20803         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
20804         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
20805         TARGET_ABICALLS && TARGET_NEWABI.
20806         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
20807         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
20808         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
20809         whether indirect calls must use $25.
20810         (mips_extra_live_on_entry): Check TARGET_GOT instead of
20811         TARGET_ABICALLS.
20812         * config/mips/mips.md (jal_macro): Check flag_pic and
20813         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
20814         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
20815         instead of TARGET_ABICALLS.
20816         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
20817         TARGET_ABICALLS && TARGET_OLDABI.
20818         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
20819         (sibcall): In the comment above the define_insn, mention
20820         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
20821         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
20822         instead of TARGET_ABICALLS.
20823
20824 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
20825
20826         * doc/md.texi (Blackfin family constraints): Document PA and PB.
20827         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
20828         (MACFLAGS_MATCH_P): New macro.
20829         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
20830         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
20831         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
20832         the other MACFLAG constants.
20833         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
20834         (flag_machi): Tighten constraints.  Renumber some of the operands.
20835         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
20836         output template.
20837         (flag_machi_parts_acconly): New pattern.
20838         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
20839         used.
20840         (flag_macinit1hi): Tighten constraints.
20841         (flag_mul_macv2hi_parts_acconly): New pattern.
20842
20843         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
20844         Use a more efficient implementation.
20845         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
20846         inline sequences when not optimizing for size.
20847
20848         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
20849         movhi_high2low): Delete, merge functionality into...
20850         (packv2hi): ... this pattern.
20851
20852         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
20853         * config/bfin/bfin.opt (msim): New option.
20854         (mcpu=): New option.
20855         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
20856         (bfin_cpu_t): Typedef of enum bfin_cpu.
20857         (bfin_cpu_type): New declaration.
20858         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
20859         -msim and -mcpu= options.
20860         (LIB_SPEC): Likewise.
20861         * config/bfin/bfin.c (bfin_cpu_type): Define.
20862         (bfin_handle_option): Handle -mcpu= option.
20863         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
20864         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
20865         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
20866
20867 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20868
20869         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
20870         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
20871         (powerpc-wrs-vxworksae): Use ${tm_file}.
20872         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
20873         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
20874         * config/i386/vx-common.h: New file.
20875
20876 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20877
20878         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
20879         of crt0.o%s.
20880
20881 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
20882
20883         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
20884         ldxtr.
20885
20886 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
20887
20888         PR c++/31078
20889         PR c++/31103
20890         * c-common.c (c_build_qualified_type): Set canonical type
20891         appropriately.
20892
20893 2007-04-12  Richard Guenther  <rguenther@suse.de>
20894
20895         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
20896         lower bound and element size if lower bound is not zero
20897         or either of the ARRAY_REF operands is set.
20898
20899 2007-04-12  Richard Guenther  <rguenther@suse.de>
20900
20901         PR tree-optimization/24689
20902         PR tree-optimization/31307
20903         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
20904         indices by value.
20905         * gimplify.c (canonicalize_addr_expr): To be consistent with
20906         gimplify_compound_lval only set operands two and three of
20907         ARRAY_REFs if they are not gimple_min_invariant.  This makes
20908         it never at this place.
20909         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
20910
20911 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20912
20913         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
20914         null before emitting a .nsubspa directive.
20915
20916 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
20917
20918         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
20919         need_to_partition_p if there are no memory statements in the
20920         function.
20921
20922 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
20923
20924         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
20925         (gcd_of_steps_may_divide_p): New function.
20926         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
20927
20928 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
20929
20930         * reload.c (find_reloads_toplev, find_reloads_address,
20931         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
20932         not a pointer equality test, to decide if we need to call
20933         push_reg_equiv_alt_mem.
20934
20935 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
20936
20937         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
20938         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
20939         New.
20940         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
20941
20942 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
20943
20944         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
20945         vector to be positive.
20946
20947 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
20948
20949         PR 30735
20950         PR 31090
20951         * doc/invoke.texi: Document --params max-aliased-vops and
20952         avg-aliased-vops.
20953         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
20954         debug_memory_partitions): Move to tree-flow.h
20955         * params.h (AVG_ALIASED_VOPS): Define.
20956         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
20957         users.
20958         (mp_info_t): Likewise.
20959         (get_mem_sym_stats_for): New.
20960         (set_memory_partition): Move from tree-flow-inline.h.
20961         (mark_non_addressable): Only clear the set of symbols for the
20962         partition if it exists.
20963         (dump_memory_partitions): Move from tree-ssa-operands.c
20964         (debug_memory_partitions): Likewise.
20965         (need_to_partition_p): New.
20966         (dump_mem_ref_stats): New.
20967         (debug_mem_ref_stats): New.
20968         (dump_mem_sym_stats): New.
20969         (debug_mem_sym_stats): New.
20970         (update_mem_sym_stats_from_stmt): New.
20971         (compare_mp_info_entries): New.
20972         (mp_info_cmp): Call it.
20973         (sort_mp_info): Change argument to a list of mem_sym_stats_t
20974         objects.
20975         (get_mpt_for): Move from tree-ssa-operands.c.
20976         (find_partition_for): New.
20977         (create_partition_for): Remove.
20978         (estimate_vop_reduction): New.
20979         (update_reference_counts): New.
20980         (build_mp_info): New.
20981         (compute_memory_partitions): Refactor.
20982         Document new heuristic.
20983         Call build_mp_info, update_reference_counts,
20984         find_partition_for and estimate_vop_reduction.
20985         (compute_may_aliases): Populate virtual operands before
20986         calling debugging dumps.
20987         (delete_mem_sym_stats): New.
20988         (delete_mem_ref_stats): New.
20989         (init_mem_ref_stats): New.
20990         (init_alias_info): Call it.
20991         (maybe_create_global_var): Remove alias_info argument.
20992         Get number of call sites and number of pure/const call sites
20993         from gimple_mem_ref_stats().
20994         (dump_alias_info): Call dump_memory_partitions first.
20995         (dump_points_to_info_for): Show how many times a pointer has
20996         been dereferenced.
20997         * opts.c (decode_options): For -O2 set --param
20998         max-aliased-vops to 500.
20999         For -O3 set --param max-aliased-vops to 1000 and --param
21000         avg-aliased-vops to 3.
21001         * fortran/options.c (gfc_init_options): Remove assignment to
21002         MAX_ALIASED_VOPS.
21003         * tree-flow-inline.h (gimple_mem_ref_stats): New.
21004         * tree-dfa.c (dump_variable): Dump memory reference
21005         statistics.
21006         Dump NO_ALIAS* settings.
21007         (referenced_var_lookup): Tidy.
21008         (mem_sym_stats): New.
21009         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
21010         and ORIG are different SSA names for a memory partition.
21011         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
21012         * tree-flow.h (struct mem_sym_stats_d): Define.
21013         (mem_sym_stats_t): Define.
21014         (struct mem_ref_stats_d): Define.
21015         (struct gimple_df): Add field mem_ref_stats.
21016         (enum noalias_state): Define.
21017         (struct var_ann_d): Add bitfield noalias_state.
21018         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
21019         debug_mem_ref_stats, debug_memory_partitions,
21020         debug_mem_sym_stats): Declare.
21021         * tree-ssa-structalias.c (update_alias_info): Update call
21022         sites, pure/const call sites and asm sites in structure
21023         returned by gimple_mem_ref_stats.
21024         Remove local variable IS_POTENTIAL_DEREF.
21025         Increase NUM_DEREFS if the memory expression is a potential
21026         dereference.
21027         Call update_mem_sym_stats_from_stmt.
21028         If the memory references memory, call
21029         update_mem_sym_stats_from_stmt for all the direct memory
21030         symbol references found.
21031         (intra_create_variable_infos): Set noalias_state field for
21032         pointer arguments according to the value of
21033         flag_argument_noalias.
21034         * tree-ssa-structalias.h (struct alias_info): Remove fields
21035         num_calls_found and num_pure_const_calls_found.
21036         (update_mem_sym_stats_from_stmt): Declare.
21037         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
21038         Set default value to 100.
21039         (PARAM_AVG_ALIASED_VOPS): Define.
21040
21041 2007-04-11  Richard Guenther  <rguenther@suse.de>
21042
21043         PR middle-end/31530
21044         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
21045         a * -b + c as c - a * b if we honor sign dependent rounding.
21046
21047 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
21048
21049         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
21050         bfin_expand_strmov.
21051         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
21052         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
21053         variables.
21054         (initialize_trampoline): Don't use old-style function definition.
21055         (bfin_secondary_reload): Mark IN_P argument as unused.
21056
21057 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
21058
21059         PR tree-optimization/31343
21060         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
21061         (build_polynomial_chrec): Return a scalar when the evolution is zero.
21062         * testsuite/gcc.dg/vect/pr31343.c: New.
21063
21064 2007-04-10  Eric Christopher  <echristo@apple.com>
21065
21066         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
21067         * config/i386/i386.md (*cmpfp0): Use.
21068         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
21069         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
21070         (fix_trunc<mode>_i386_fisttp): Ditto.
21071         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
21072         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
21073         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
21074         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
21075         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
21076         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
21077         (unnamed_splitters): Ditto.
21078         * config/i386/i386.c (output_fix_trunc): Assert that
21079         we're not being passed a TFmode operand.
21080
21081 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
21082
21083         PR tree-optimization/31526
21084         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
21085         n_basic_blocks to find newly added blocks.
21086
21087 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
21088
21089         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
21090         alternative.
21091         (fix_trunc<mode>si_sse): Ditto.
21092         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
21093         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
21094         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
21095         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
21096         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
21097         expander using SSEMODEF mode macro.
21098         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
21099         expander using SSEMODEF mode macro.
21100         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
21101         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
21102         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
21103         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
21104         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
21105         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
21106         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
21107         Macroize insn using X87MODEF mode macro.
21108
21109 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
21110
21111         * config/i386/sse.md (sse2_pinsrw): Removed.
21112         (sse2_pextrw): Renamed to ...
21113         (*sse2_pextrw): This.
21114
21115 2007-04-09  Jan Hubicka  <jh@suse.cz>
21116
21117         PR target/27869
21118         * config/i386/sse.md
21119         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
21120         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
21121         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
21122         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
21123
21124 2007-04-09  Jan Hubicka  <jh@suse.cz>
21125
21126         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
21127         multiple fields of union.
21128
21129 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
21130
21131         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
21132         (create_preheaders): Check that loops are available.
21133         (fix_loop_structure): Clean up, improve comments.
21134         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
21135         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
21136         state flags.
21137         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
21138         * predict.c (tree_estimate_probability): Do not call
21139         calculate_dominance_info.  Call create_preheaders.
21140         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
21141         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
21142         flags.
21143         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
21144         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
21145         * tree-cfg.c (tree_split_edge): Make an assert more precise.
21146         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
21147         arguments.
21148
21149 2007-04-08  Jan Hubicka  <jh@suse.cz>
21150
21151         * tree.h (maybe_fold_offset_to_component_ref): Declare.
21152         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
21153         * fold-const.c (fold_unary): Use it.
21154
21155 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21156
21157         * varasm.c (assemble_variable): Remove call to
21158         lang_hooks.decls.prepare_assemble_variable.
21159         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
21160         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
21161         * langhooks.h (lang_hooks_for_decls): Remove
21162         prepare_assemble_variable.
21163
21164 2007-04-08  Mike Stump  <mrs@apple.com>
21165
21166         * config/i386/i386.c: Use inc/dec on Core2.
21167
21168 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
21169
21170         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
21171         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
21172         lhd_tree_inlining_end_inlining): Remove.
21173         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
21174         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
21175         end_inlining hooks.
21176         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
21177         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
21178         lhd_tree_inlining_end_inlining): Remove prototypes.
21179         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
21180         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
21181         LANG_HOOKS_TREE_INLINING_START_INLINING,
21182         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
21183
21184         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
21185         not set it.
21186
21187 2007-04-08  Anatoly Sokolov <aesok@post.ru>
21188
21189         PR target/29932
21190         * config/avr/predicates.md (io_address_operand): Delete predicate.
21191         (low_io_address_operand): Don't use 'mode' argument.
21192         (higth_io_address_operand): Rename ...
21193         (high_io_address_operand): ... to this. Don't use 'mode' argument.
21194         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
21195         for above change.
21196
21197 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
21198
21199         Revert change removing staticp.
21200
21201 2007-04-07  Anatoly Sokolov <aesok@post.ru>
21202
21203         PR target/30289
21204         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
21205         earlyclobber.
21206
21207 2007-04-07  Bruce Korb  <bkorb@gnu.org>
21208
21209         * c.opt: Add -Wformat-contains-nul.
21210         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
21211           -Wformat setting.
21212         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
21213         the NUL byte warning.
21214
21215 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
21216
21217         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
21218
21219 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
21220
21221         * tree.c (staticp): No longer use staticp langhook.
21222         * langhooks.c (lhd_staticp): Removed.
21223         * langhooks.h (struct lang_hooks): Remove staticp.
21224         * c-common.c (c_staticp): Remove.
21225         * c-common.h (c_staticp): Ditto.
21226         * langhooks-defs.h (lhd_staticp): Ditto.
21227         (LHD_HOOKS_STATICP): Ditto
21228         * tree.h (gcc_assert_lowered): New macro.
21229
21230 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
21231
21232         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
21233         argument "reliable".
21234         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
21235         Add argument "reliable".  Propagate it through calls.
21236         (infer_loop_bounds_from_undefined): Derive number of iterations
21237         estimates from references in blocks that do not dominate loop latch.
21238         (gcov_type_to_double_int): New function.
21239         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
21240         and expected_loop_iterations_unbounded.
21241         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
21242         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
21243         * tree-data-ref.c (estimated_loop_iterations): Export.
21244         (get_references_in_stmt): Fix -- do not return addresses of local
21245         objects.
21246         * cfgloop.h (expected_loop_iterations_unbounded,
21247         estimated_loop_iterations): Declare.
21248
21249 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
21250
21251         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
21252
21253 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
21254
21255         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
21256         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
21257         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
21258         Use output_387_reg_move().
21259         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
21260         expander using X87MODEF12 mode macro.
21261         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
21262         choosing register preferences.  Use output_387_reg_move().
21263         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
21264         instead of "x".  Use output_387_reg_move().
21265         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
21266         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
21267         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
21268         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
21269         Use output_387_reg_move().
21270         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
21271         mode macro.
21272         (*truncxf?f_i387 splitter): Ditto.
21273
21274 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
21275
21276         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
21277         LANG_HOOKS_SAFE_FROM_P.
21278         * expr.c (safe_from_p): Remove langhook call.
21279         * langhooks.h (lang_hooks): Remove safe_from_p.
21280         (lhd_safe_from_p): Remove prototype.
21281         * langhooks.c (lhd_safe_from_p): Remove.
21282
21283 2007-04-06  Jan Hubicka  <jh@suse.cz>
21284
21285         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
21286         functions.
21287
21288 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
21289
21290         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
21291         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
21292         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
21293         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
21294         alternative.
21295         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
21296         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
21297
21298 2007-04-05  Richard Henderson  <rth@redhat.com>
21299
21300         * config/alpha/alpha.c (print_operand) [+]: Remove.
21301         (alpha_end_function): Print nop if call at end of function.
21302         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
21303         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
21304         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
21305         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
21306         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
21307         the call pattern. Update peepholes to match.
21308
21309 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
21310
21311         * doc/extend.texi (Other Builtins): Add decimal float variants
21312         of signbit.
21313         * builtins.def: Ditto.
21314         * builtins.c (expand_builtin): Ditto.
21315
21316 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
21317             H.J. Lu  <hongjiu.lu@intel.com>
21318
21319         PR target/31478
21320         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
21321         of V8HImode when calling ix86_binary_operator_ok.
21322         (sse2_pmaddwd): Call ix86_binary_operator_ok.
21323         (sdot_prodv8hi): Operands 1 and 2 must be register.
21324
21325 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
21326
21327         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
21328         initialize align to silence bogus warning.
21329
21330 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
21331
21332         PR middle-end/22156
21333         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
21334         all_no_warning.
21335         (struct sra_walk_fns): Remove use_all parameter from use.
21336         (sra_hash_tree): Handle BIT_FIELD_REFs.
21337         (sra_elt_hash): Don't hash bitfld blocks.
21338         (sra_elt_eq): Skip them in parent compares as well.  Handle
21339         BIT_FIELD_REFs.
21340         (sra_walk_expr): Don't maintain or pass down use_all_p.
21341         (scan_use): Remove use_all parameter.
21342         (scalarize_use): Likewise.  Re-expand assignment to
21343         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
21344         output, and re-scalarize after output.  Don't mark anything
21345         for no warning.
21346         (scalarize_ldst): Adjust.
21347         (scalarize_walk_gimple_modify_statement): Likewise.
21348         (build_element_name_1): Handle BIT_FIELD_REFs.
21349         (instantiate_element): Don't warn for any element whose parent
21350         is used as a whole.
21351         (instantiate_missing_elements_1): Return the sra_elt.
21352         (canon_type_for_field): New.
21353         (try_instantiate_multiple_fields): New.
21354         (instantiate_missing_elemnts): Use them.
21355         (mark_no_warning): Removed.
21356         (generate_one_element_ref): Handle BIT_FIELD_REFs.
21357         (REPLDUP, sra_build_elt_assignment): New.
21358         (generate_copy_inout): Use them.
21359         (generate_element_copy): Likewise.  Handle bitfld differences.
21360         (generate_element_zero): Don't recurse for blocks.  Use
21361         sra_build_elt_assignment.
21362         (generate_one_element_int): Take elt instead of var.  Use
21363         sra_build_elt_assignment.
21364         (generate_element_init_1): Adjust.
21365         (scalarize_use, scalarize_copy): Use REPLDUP.
21366         (scalarize_ldst): Move assert before dereference.
21367         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
21368
21369 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
21370
21371         * regmove.c: Fix unused variable warnings due to previous commit.
21372
21373 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
21374
21375         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
21376         (regmove_bb_head): Remove.
21377         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
21378         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
21379         problems with fixup_match_1.
21380         Don't initialize/free regmove_bb_head.
21381
21382         (reg_is_remote_constant_p): If an insn is in the same basic block
21383         but not before INSN, consider it remote, too.
21384
21385 2007-04-05  Anatoly Sokolov <aesok@post.ru>
21386
21387         PR target/25448
21388         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
21389         DECL_ASSEMBLER_NAME, not the DECL_NAME.
21390
21391 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
21392
21393         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
21394         (CONDITIONAL_REGISTER_USAGE): Likewise.
21395
21396 2007-04-04  Richard Henderson  <rth@redhat.com>
21397
21398         * config/alpha/lib1funcs.asm: Remove unused file.
21399
21400 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
21401
21402         PR other/31356
21403         * opts.c (print_specific_help): Fix --help=<language>
21404         header line.
21405         (common_handle_option): Support --help=common.
21406
21407 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
21408
21409         PR other/31353
21410         * gcc.c (main): Do not run the linker if
21411         print_subprocess_help indicates that it shouldn't be
21412         run.
21413
21414 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
21415
21416         PR doc/31355
21417         * doc/invoke.texi (--help=): Document <languages> value, fix
21418         formatting in tables of values.
21419
21420 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
21421
21422         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
21423         dllimport attribute of virtual methods.
21424
21425 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
21426
21427         * config/score/crti.asm: Change _bss_start to __bss_start.
21428         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
21429         (OUTGOING_REG_PARM_STACK_SPACE) update.
21430         * config/score/score.opt: add options to make backend support
21431         score5, score5u, score7 and score7d.
21432         * config/score/score.md: Likewise.
21433         * config/score/misc.md: Likewise.
21434         * config/score/mac.md: Likewise.
21435         * doc/invoke.texi: Likewise.
21436         * doc/md.texi: update constraints define.
21437
21438 2007-04-03  Richard Henderson  <rth@redhat.com>
21439
21440         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
21441         an appropriate type, use the mode instead.
21442
21443 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
21444
21445         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
21446         Set the default --with-arch setting to mips2.
21447         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
21448         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
21449         (MULTILIB_OSDIRNAMES): Delete.
21450         (MULTILIB_DIRNAMES): Define.
21451         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
21452         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
21453         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
21454         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
21455         VXWORKS_OS_CPP_BUILTINS.
21456         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
21457         (MIPS_DEBUGGING_INFO): Undefine.
21458         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
21459
21460 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
21461
21462         PR middle-end/30704
21463         * fold-const.c (native_encode_real): Encode real.c provided longs
21464         as a series of 32-bit native integers.
21465         (native_interpret_real): Interpret buffer as a series of 32-bit
21466         native integers.
21467
21468 2007-04-03  Richard Guenther  <rguenther@suse.de>
21469
21470         * genpreds.c (write_insn_constraint_len): Write function
21471         optimized for CONSTRAINT_LEN implementation.
21472         (write_tm_preds_h): Output insn_constraint_len inline and
21473         use it for CONSTRAINT_LEN.
21474         (write_insn_preds_c): Don't output insn_constraint_len.
21475         * doc/md.texi (define_register_constraint): Document multi-letter
21476         constraints shall have the same length if they start with the same
21477         letter.
21478
21479 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
21480
21481         PR target/31175
21482         * config/i386/i386.md (isinf<mode>2): Expand only when
21483         TARGET_C99_FUNCTIONS is set.
21484
21485 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
21486
21487         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
21488         (x86_64-*-linux*): Ditto.
21489         * config/i386/i386.opt (mpc): New option.
21490         * config/i386/i386.c (overrride_options): Handle
21491         ix87_precision_string.
21492         * config/i386/crtprec.c: New file.
21493         * config/i386/t-crtpc: Ditto.
21494         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
21495         and -mpc80 options.
21496         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
21497         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
21498         crtprec32.o, crtprec64.o and crtprec80.o.
21499
21500         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
21501         and -mpc80 options.
21502         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
21503
21504 2007-04-02  Eric Christopher  <echristo@apple.com>
21505
21506         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
21507         limitations on darwin.
21508
21509 2007-04-02  Anatoly Sokolov <aesok@post.ru>
21510
21511         PR target/31137
21512         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
21513
21514 2007-04-02  Dave Korn  <dave.korn@artimi.com>
21515
21516         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
21517
21518 2007-04-02  Dave Korn  <dave.korn@artimi.com>
21519
21520         * libgcc2.h (exception_descriptor): Don't forward-declare.
21521         (__get_eh_table_language, __get_eh_table_version): Delete
21522         prototypes of long-dead functions.
21523
21524 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
21525
21526         * ebitmap.h: New file
21527         * ebitmap.c: New file
21528         * Makefile.in (ebitmap.o): New target.
21529
21530 2007-04-01  Jan Hubicka  <jh@suse.cz>
21531
21532         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
21533         before very first instruction.
21534
21535 2007-04-01  Jan Hubicka  <jh@suse.cz>
21536
21537         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
21538         waring on 64bit hosts.
21539         * bitmap.h: Fix typo in bitmap_head_def.
21540
21541 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
21542
21543         PR rtl-optimization/31391
21544         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
21545         into a DELETED_LABEL note, and the label is in an empty basic
21546         block, update BB_END as well as BB_HEAD.
21547
21548 2007-04-01  Richard Henderson  <rth@redhat.com>
21549
21550         PR tree-optimization/31169
21551         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
21552         to varying if the range is outside [0,  prec-1].
21553
21554 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
21555
21556         PR target/31388
21557         * config/mips/mips.md (load_const_gp): New insn.
21558         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
21559         the MIPS16 GP pseudo register if no_new_pseudos.
21560         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
21561
21562 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21563
21564         PR target/31364
21565         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
21566         secureplt.
21567         (call_value): Likewise.
21568
21569 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
21570             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21571
21572         PR 14737
21573         * doc/invoke.texi: (optimization options): Reword description
21574         of -ffast-math. Document its primary purpose.
21575
21576 2007-03-31  Richard Guenther  <rguenther@suse.de>
21577
21578         * omp-low.c (splay-tree.h): Include.
21579         (lookup_decl): Replace splay-tree usage by pointer-map.
21580         (maybe_lookup_decl): Likewise.
21581         (new_omp_context): Likewise.
21582         (delete_omp_context): Likewise.
21583         * gimplify.c (splay-tree.h): Include.
21584         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
21585         pointer-map.
21586         (remap_ssa_name): Likewise.
21587         (remap_decl): Likewise.
21588         (remap_type_1): Likewise.
21589         (remap_type): Likewise.
21590         (copy_body_r): Likewise.
21591         (expand_call_inline): Likewise.
21592         (clone_body): Likewise.
21593         (copy_tree_r): Likewise.
21594         (remap_save_expr): Likewise.
21595         (unsave_r): Likewise.
21596         (unsave_expr_now): Likewise.
21597         (tree_function_versioning): Likewise.
21598         (build_duplicate_type): Likewise.
21599         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
21600         (struct copy_body_data): Replace splay-tree by pointer-map.
21601         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
21602         not $(SPLAY_TREE_H).
21603         (gimplify.o): Depend on $(SPLAY_TREE_H).
21604         (omp-low.p): Likewise.
21605
21606 2007-03-31  Anatoly Sokolov <aesok@post.ru>
21607
21608         * config/avr/predicates.md (even_register_operand,
21609         odd_register_operand): New predicates.
21610         * config/avr/avr.md (movw peephole2): New.
21611         (movw_r peephole2): New.
21612
21613 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
21614
21615         * tree.h (get_signed_or_unsigned_type): New.
21616         * fold-const.c (operand_equal_for_comparison_p): Use
21617         get_signed_or_unsigned_type instead of
21618         lang_hooks.types.signed_or_unsigned_type.
21619         * expr.c (store_expr): Ditto.
21620         * langhooks.c (get_signed_or_unsigned_type): New.
21621         (lhd_signed_or_unsigned_type): New.
21622         * langhooks.h (lhd_signed_or_unsigned_type): New.
21623         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
21624
21625 2007-03-30  Richard Henderson  <rth@redhat.com>
21626
21627         * tree-ssa-loop-ivopts.c: Include target.h.
21628         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
21629         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
21630         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
21631         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
21632
21633 2007-03-30  Richard Henderson  <rth@redhat.com>
21634             Kai Tietz  <kai.tietz@onevision.com>
21635
21636         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
21637         default for 64-bit.
21638         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
21639         (TARGET_64BIT_MS_ABI): New.
21640         (DBX_REGISTER_NUMBER): Handle 64-bit.
21641         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
21642         (LONG_TYPE_SIZE): Force to 32.
21643         (REG_PARM_STACK_SPACE): New.
21644         (OUTGOING_REG_PARM_STACK_SPACE): New.
21645         (REGPARM_MAX, SSE_REGPARM_MAX): New.
21646         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
21647         (STACK_BOUNDARY): Use 128 for 64-bit.
21648         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
21649         Add 64-bit implementation.
21650         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
21651         argument unused.
21652         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
21653         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
21654         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
21655         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
21656         (ix86_handle_cconv_attribute): Don't warn when ignoring if
21657         TARGET_64BIT_MS_ABI.
21658         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
21659         (ix86_pass_by_reference): Likewise.
21660         (ix86_function_value_regno_p): Likewise.
21661         (ix86_build_builtin_va_list): Likewise.
21662         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
21663         (function_arg_advance_ms_64): New.
21664         (function_arg_advance): Call it.
21665         (function_arg_ms_64): New.
21666         (function_arg): Call it.
21667         (function_value_ms_64): New.
21668         (ix86_function_value_1): Call it.
21669         (return_in_memory_ms_64): New.
21670         (ix86_return_in_memory): Call it.
21671         (setup_incoming_varargs_ms_64): New.
21672         (ix86_setup_incoming_varargs): Call it.
21673         (ix86_expand_prologue): Handle 64-bit stack probing.
21674         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
21675         (output_pic_addr_const): Likewise.
21676         (x86_this_parameter): Likewise.
21677         (x86_output_mi_thunk): Likewise.
21678         (x86_function_profiler): Likewise.
21679         (TARGET_STRICT_ARGUMENT_NAMING): New.
21680         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
21681         (TARGET_64BIT_MS_ABI): New.
21682         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
21683         * config/i386/i386.md (allocate_stack_worker): Remove.
21684         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
21685         describe the clobber of eax without a match_scratch.
21686         (allocate_stack_worker_postreload): Remove.
21687         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
21688         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
21689         (allocate_stack_worker_rex64_postreload): Remove.
21690         (allocate_stack): Handle 64-bit.
21691         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
21692         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
21693         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
21694         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
21695         (STANDARD_STARTFILE_PREFIX_1): Likewise.
21696         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
21697         * config.build (x86_64-*-mingw*): New host.
21698         * config.host (x86_64-*-mingw*): New host.
21699         * config.gcc (x86_64-*-mingw*): New target.
21700         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
21701
21702 2007-03-30  Richard Henderson  <rth@redhat.com>
21703             Kai Tietz  <kai.tietz@onevision.com>
21704
21705         * c-pragma.c (struct def_pragma_macro_value): New.
21706         (struct def_pragma_macro): New.
21707         (pushed_macro_table): New.
21708         (dpm_hash, dpm_eq): New.
21709         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
21710         (init_pragma): Install them.
21711         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
21712
21713 2007-03-30  Anatoly Sokolov <aesok@post.ru>
21714
21715         * config/avr/avr.c (avr_override_options): Clear
21716         'flag_delete_null_pointer_checks'.
21717
21718 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
21719
21720         PR c++/26099
21721         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
21722         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
21723         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
21724         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
21725         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
21726         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
21727         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
21728         C++ extensions.
21729         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
21730
21731 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
21732
21733         * regmove.c: Move all of pass_stack_adjustments from here...
21734         * combine-stack-adj.c: ...to this new file.
21735         * Makefile.in: Add rules for combine-stack-adj.o.
21736
21737 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
21738
21739         PR tree-optimization/31383
21740         * tree-data-ref.c (affine_function_equal_p): Do not require the
21741         vectors to have the same length.
21742
21743 2007-03-30  Jan Hubicka  <jh@suse.cz>
21744
21745         PR middle-end/30700
21746         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
21747         availablility; add more sanity checking; ask varpool only about
21748         VAR_DECL.
21749
21750 2007-03-29  Richard Henderson  <rth@redhat.com>
21751
21752         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
21753         to decide, but __SIZEOF_LONG_LONG__.
21754
21755 2007-03-29  Richard Henderson  <rth@redhat.com>
21756
21757         * emutls.c (struct __emutls_array): New.
21758         (emutls_destroy): Use it instead of casting element 0 from void*.
21759         (__emutls_get_address): Likewise.
21760
21761 2007-03-29  Richard Henderson  <rth@redhat.com>
21762
21763         * varasm.c (initializer_constant_valid_p): Don't deny
21764         DECL_DLLIMPORT_P on functions.
21765
21766         * config/i386/cygming.h: Remove function declarations.
21767         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
21768         (ASM_OUTPUT_LABELREF): Remove.
21769         (COMMON_ASM_OP): Remove.
21770         (ASM_OUTPUT_COMMON): Remove.
21771         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
21772         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
21773         (ASM_DECLARE_FUNCTION_NAME): Likewise.
21774         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
21775         Rename from TARGET_ENCODE_SECTION_INFO.
21776         * config/i386/netware.h: Likewise.
21777         * config/i386/i386-protos.h: Update.
21778         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
21779         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
21780         (legitimate_constant_p): Reject dllimports.
21781         (dllimport_map, get_dllimport_decl): New.
21782         (legitimize_dllimport_symbol): New.
21783         (legitimize_address, ix86_expand_move): Use it.
21784         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
21785         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
21786         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
21787         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
21788         * config/i386/predicates.md (constant_call_address_operand): Only
21789         accept symbols; reject dllimport_p symbols.
21790         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
21791         i386_pe_maybe_record_exported_symbol.
21792         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
21793         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
21794         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
21795         trust the setting of DECL_DLLIMPORT_P.
21796         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
21797         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
21798         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
21799         tidy the argument scanning loop.
21800         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
21801         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
21802         (i386_pe_strip_name_encoding): Remove.
21803         (i386_pe_binds_local_p): New.
21804         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
21805         (i386_pe_output_labelref): Remove.
21806         (i386_pe_asm_output_aligned_decl_common): New.
21807         (i386_pe_maybe_record_exported_symbol): Rename from
21808         i386_pe_record_exported_symbol; check for dllexported symbols.
21809
21810 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
21811
21812         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
21813         add comment explaining why vsnprintf cannot be used.
21814
21815 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
21816
21817         PR tree-optimization/30666
21818         * tree.c (build_complex_type): When creating type names for DWARF2
21819         debug info, create TYPE_DECLs for TYPE_NAME instead of
21820         IDENTIFIER_NODEs.
21821         (build_common_tree_nodes_2): Use build_complex_type when building
21822         predefined complex types, to preserve canonical types.
21823
21824 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
21825
21826         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
21827         (noce_get_alt_condition): Look at it to determine whether to
21828         reverse the condition or not.
21829         (noce_get_condition): Substitute the truth for lies.
21830         (noce_find_if_block): Set the then_else_reversed field.
21831
21832 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
21833
21834         * config/fr30/fr30.md (movdi): Do not accept immediates as the
21835         destination of this insn.
21836         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
21837         than calling gen_rtx_SET directly.  Use r0 to hold the value of
21838         'address + 4' rather than a stack based temporary which can be
21839         mis-optimized away.
21840
21841 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
21842
21843         * config/s390/s390.c (s390_secondary_input_reload_class,
21844         s390_secondary_output_reload_class): Functions removed.
21845         (s390_secondary_reload): New function.
21846         (TARGET_SECONDARY_RELOAD): Target macro defined.
21847         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
21848         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
21849         * config/s390/s390.md ("reload_outti", "reload_outdi",
21850         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
21851         "reload_out<mode>"): Expanders removed.
21852         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
21853         "reload<mode>_nonoffmem_out"): Expanders added.
21854
21855 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
21856
21857         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
21858         action if SRC->DEST replacement failed anyway.
21859
21860 2007-03-28  Mike Stump  <mrs@apple.com>
21861
21862         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
21863         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
21864         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
21865
21866 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
21867
21868         * config.gcc: Accept barcelona as a variant of amdfam10.
21869         * config/i386/i386.c (override_options): Likewise.
21870         * doc/invoke.texi: Likewise.
21871
21872 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
21873
21874         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
21875         offsets for BIT_FIELD_REF and COMPONENT_REF.
21876
21877 2007-03-28  Richard Guenther  <rguenther@suse.de>
21878
21879         * tree.c (is_global_var): Move ...
21880         * tree-flow-inline.h (is_global_var): ... here.
21881         * tree.h (is_global_var): Remove declaration.
21882
21883 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
21884
21885         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
21886         option.
21887         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
21888         * config/i386/i386.c (ix86_tune_features): Initialize new
21889         tuning option.
21890         * config/i386/predicates.md (promotable_binary_operator): Use
21891         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
21892
21893 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
21894
21895         PR target/31380
21896         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
21897
21898 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
21899
21900         * config/fr30/fr30.md (movsi_internal): Change destination
21901         constraint from m to V and add m to the end.
21902
21903 2007-03-28  Christian Bruel  <christian.bruel@st.com>
21904
21905         * config/sh/sh.md (movsi_i): Fix type attribute.
21906
21907 2007-03-28  Christian Bruel  <christian.bruel@st.com>
21908
21909         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
21910         (movsf_ie): Likewise.
21911
21912 2007-03-28  Christian Bruel  <christian.bruel@st.com>
21913
21914         * config.gcc: Add sh4-300 to multilib.
21915         * config/sh/t-mlib-sh4-300: New file.
21916
21917 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
21918
21919         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
21920         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
21921         fix_trunc<mode>di2.
21922         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
21923         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
21924         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
21925         "fixuns_trunctddi2"): Whitespace fix.
21926
21927 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
21928
21929         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
21930         the definition of struct sh_args.
21931         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
21932         CALL_COOKIE_INT_REG_GET): Likewise.
21933
21934 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
21935
21936         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
21937         transformations are applied successfully.
21938
21939 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
21940
21941         * tree.c (tree_contains_struct): Permit 512 tree codes.
21942         * tree.h (tree_contains_struct): Ditto.
21943         (MAX_TREE_CODES): Ditto.
21944         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
21945         SPARE member to store remaining padding bits.
21946
21947 2007-03-27  Anatoly Sokolov <aesok@post.ru>
21948
21949         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
21950         architecture.
21951
21952 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
21953
21954         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
21955         * configure: Regenerate.
21956
21957         * configure: Regenerate using the correct version of autoconf.
21958
21959 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
21960
21961         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
21962         pointer regs.
21963         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
21964         regs to "__SP_L__" and "__SP_H__".
21965
21966 2007-03-27  Richard Guenther  <rguenther@suse.de>
21967
21968         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
21969         computations with it with a HOST_WIDE_INT variable.
21970
21971 2007-03-26  Mike Stump  <mrs@apple.com>
21972
21973         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
21974         objective-c-header, objective-c++-header and objc++-cpp-output
21975         support.
21976         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
21977
21978 2007-03-26  Richard Henderson  <rth@redhat.com>
21979
21980         PR target/31361
21981         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
21982         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
21983         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
21984         IX86_BUILTIN_PSRLQ128): New.
21985         (ix86_init_mmx_sse_builtins): Add them.
21986         (ix86_expand_builtin): Expand them.
21987         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
21988         operand 2 be TImode.
21989         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
21990         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
21991         _mm_srli_epi64): Mark __B const.
21992         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
21993         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
21994         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
21995         new two-vector shift builtins.
21996
21997 2007-03-26  Ian Lance Taylor  <iant@google.com>
21998
21999         PR tree-optimization/31345
22000         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
22001         [+INF, +INF(OVF)] into VARYING.
22002
22003 2007-03-26  Zack Weinberg  <zackw@panix.com>
22004
22005         * gengtype-parse.c: New file.
22006         * gengtype-yacc.y: Delete.
22007         * gengtype-lex.l: Don't include gengtype-yacc.h.
22008         Define YY_DECL and yyterminate appropriately for recursive
22009         descent parser.  yylval is now a string out-parameter to yylex.
22010         (HWS, EOID): New shorthand.
22011         (IWORD): Add a couple more types.
22012         (yylex): Add a setup stanza.  Remove the complex rules for
22013         detecting GTY'ed types and typedefs; replace with simple
22014         keyword detectors.  Adjust everything for the changed
22015         definition of yylval.  Ignore all pp-directives, not just #define.
22016         (yyerror): Delete.
22017         (parse_file): Rename yybegin; do not call yyparse.
22018         (yyend): New.
22019         * gengtype.c (xasprintf): Export again.
22020         (this_file): New.  Use everywhere __FILE__ was being used.
22021         (get_lang_bitmap): Special case types defined in gengtype.c.
22022         (do_typedef, new_structure): Suppress definition of certain types.
22023         (new_structure): Improve diagnostics of duplicate definitions.
22024         Make sure location_s is associated with input.h.
22025         (nreverse_pairs, define_location_structures): New functions.
22026         (main): Improve tagging of kludge types.  Remove old kludges
22027         for input.h types; use define_location_structures.
22028         * gengtype.h: Update prototypes.  Define token codes here.
22029         * Makefile.in: Remove all references to gengtype-yacc.
22030         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
22031         and gengtype.
22032         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
22033         add GTY((skip)) to the field that's only conditionally there.
22034         * doc/install.texi: Document that Bison is no longer required
22035         unless building treelang.
22036
22037         * gengtype.c: Don't include gtyp-gen.h.
22038         (srcdir): Declare here.
22039         (base_files, lang_dir_names): Allocate dynamically.
22040         (gt_files, num_gt_files, num_lang_dirs): New globals.
22041         (measure_input_list, read_input_line, read_input_list)
22042         (set_lang_bitmap): New functions.
22043         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
22044         simplify, relying on read_input_list to set up the bitmaps.
22045         (main): Arguments are no longer unused.  Check for correct number
22046         of command line arguments, set srcdir and srcdir_len, then call
22047         read_input_list, before doing anything else.  No need to worry
22048         about duplicates in main loop.
22049         * configure.ac: Simplify the calculation of all_gtfiles.
22050         Put language tags in there.  Don't set or substitute
22051         all_gtfiles_files_langs or all_gtfiles_files_frags.
22052         * Makefile.in: Revamp the way gengtype is invoked, now that it
22053         takes a file on its command line with a much simpler format.
22054         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
22055         (GTFILES): Remove duplicates and C source files.
22056         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
22057         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
22058         * configure: Regenerate.
22059
22060         * gengtype.h: Remove all type definitions to gengtype.c; leave
22061         only definitions of options_p, type_p, and pair_p as opaque
22062         pointers.  Update prototypes.
22063         * gengtype.c: Many type definitions moved here from gengtype.h.
22064         Consolidate type definitions at the top of the file.
22065         (xvasprintf): Delete.
22066         (xasprintf): Make static.
22067         (create_nested_pointer_option): Add 'next' parameter.
22068         (create_field_all, create_field_at): New functions.
22069         (create_field): Now a thin wrapper around create_field_all.
22070         (create_optional_field): Rename create_optional_field_ and add
22071         line argument.  Original name is now a macro which supplies
22072         __LINE__.
22073         (oprintf): Use vsnprintf directly.
22074         (close_output_files): Use fatal rather than perror/exit.
22075         (note_def_vec, note_def_vec_alloc): Use create_field_at.
22076         (main): Set progname.  Don't use exit.
22077         * gengtype-yacc.y (struct_fields): Use create_field_at.
22078         (option, optionseqopt): Delete.
22079         (optionseq): Consolidate productions from option here so we
22080         can use the first argument to create_option.
22081
22082         * gengtype-lex.l: Distinguish unions from structures in the
22083         token type.  Don't call find_structure; return the tag as a string.
22084         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
22085         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
22086         string.  Reorganize typedef_struct production accordingly.
22087         Use create_nested_ptr_option.
22088         * gengtype.c (create_nested_ptr_option): New function.
22089         * gengtype.h: Declare it.
22090
22091         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
22092         (string_type): Don't declare.
22093         (do_scalar_typedef): Declare.
22094         (create_scalar_type): Update prototype.
22095         * gengtype.c (string_type): Make static.
22096         (scalar_nonchar, scalar_char): New.
22097         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
22098         (resolve_typedef): Use scalar_nonchar for error recovery.
22099         (create_scalar_type): Remove name_len field.  Return scalar_char
22100         or scalar_nonchar as appropriate.
22101         (adjust_field_type): Look at scalar_is_char boolean to decide whether
22102         to use string_type.
22103         (throughout): Use scalar_nonchar instead of calling
22104         create_scalar_type, whenever possible.
22105         (main): Initialize scalar_char and scalar_nonchar before calling
22106         gen_rtx_next.
22107         * gengtype-lex.l: Adjust for removal of second argument to
22108         create_scalar_type.  Use yylval.s instead of yylval.t when
22109         returning SCALAR.
22110         * gengtype-yacc.y: Type of SCALAR is string.  Call
22111         create_scalar_type from type:SCALAR rule.  Adjust for removal of
22112         second argument to create_scalar_type.
22113
22114         * vec.h: Remove all #if IN_GENGTYPE blocks.
22115         Add comment saying that changes may require adjustments to gengtype.
22116         * gengtype.c: Don't include coretypes.h or tm.h.
22117         Add comment to inclusion of errors.h.
22118         (note_def_vec, note_def_vec_alloc): New functions.
22119         * gengtype.h: Declare new functions.
22120         * gengtype-lex.l: Don't include coretypes.h.
22121         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
22122         Delete.
22123         (update_lineno): Remove unnecessary prototype.
22124         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
22125         (VEC rule): Just return VEC_TOKEN.
22126         * gengtype-yacc.y (VEC_TOKEN): New token type.
22127         (type): Add a production for VEC(a,b).
22128         * Makefile.in: Update dependencies.
22129
22130         * gengtype-lex.l: Remove rules for parsing pointer-to-function
22131         typedefs that use the old PARAMS macro.
22132
22133         * gengtype-lex.l: Remove all rules and states relating to yacc
22134         input files.
22135         * gengtype-yacc.y: Similarly.
22136         * gengtype.c (note_yacc_type): Delete function.
22137         * gengtype.h: Update prototypes.
22138
22139 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
22140
22141         * tree-pretty-print.c (dump_generic_node): Report precision of
22142         unnamed integer types.
22143
22144 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
22145
22146         * ifcvt.c (noce_try_store_flag_constants): Don't check
22147         no_new_pseudos here.
22148         (noce_try_store_flag_constants): Don't check no_new_pseudos.
22149         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
22150         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
22151         noce_try_sign_mask): Likewise.
22152         (if_convert): Check no_new_pseudos here.
22153
22154         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
22155         Remove prototypes.
22156         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
22157         (noce_get_condition): Handle new then_else_reversed argument.
22158         (noce_init_if_info): Remove, fold into noce_find_if_block.
22159         (noce_process_if_block): Take a struct noce_if_info as the
22160         argument.  Don't set up one based on ce_if_info.  Update pointer
22161         references accordingly.
22162         (cond_move_process_if_block): Likewise.
22163         (process_if_block): Removed.
22164         (find_if_block): Removed.  Move functionality two new functions,
22165         noce_find_if_block and cond_exec_find_if_block.
22166         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
22167         blocks and the symmetric IF-ELSE-JOIN case.
22168         (cond_exec_find_if_block): Also new function mostly based on old
22169         find_if_block and process_if_block.
22170         (find_if_header): Replace find_if_block call with separately
22171         guarded calls to noce_find_if_block and cond_exec_find_if_block.
22172         (find_cond_trap): Update noce_get_condition call.
22173         (dead_or_predicable): Likewise.
22174
22175 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
22176
22177         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
22178         Remove.
22179         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
22180         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
22181         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
22182         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
22183         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
22184         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
22185         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
22186         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
22187         __builtin_ia32_psrad128 builtins.
22188
22189 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
22190
22191         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
22192         * config/i386/constraints.md
22193         (define_constraint "I"): Use IN_RANGE macro.
22194         (define_constraint "J"): Ditto.
22195         (define_constraint "K"): Ditto.
22196         (define_constraint "M"): Ditto.
22197         (define_constraint "N"): Ditto.
22198         (define_constraint "O"): Ditto.
22199         * config/i386/predicates.md
22200         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
22201         (define_predicate "const_0_to_3_operand"): Ditto.
22202         (define_predicate "const_0_to_7_operand"): Ditto.
22203         (define_predicate "const_0_to_15_operand"): Ditto.
22204         (define_predicate "const_0_to_63_operand"): Ditto.
22205         (define_predicate "const_0_to_255_operand"): Ditto.
22206         (define_predicate "const_1_to_31_operand"): Ditto.
22207         (define_predicate "const_2_to_3_operand"): Ditto.
22208         (define_predicate "const_4_to_7_operand"): Ditto.
22209
22210 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
22211
22212         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
22213         in SImode for save_world.
22214         * config/rs6000/altivec.md (save_world, restore_world): Convert to
22215         LR hard reg.
22216
22217 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
22218
22219         PR tree-optimization/30784
22220         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
22221         BIT_FIELD_REF.
22222
22223 2007-03-25  Revital Eres  <eres@il.ibm.com>
22224
22225         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
22226           Fold movement_possibility function into it.
22227
22228 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
22229
22230         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
22231         (load_macho_picbase_{si,di}): Convert to LR hard reg.
22232         (call_indirect_nonlocal_darwin64): Same.
22233         (call_nonlocal_darwin64): Same.
22234         (call_value_indirect_nonlocal_darwin64): Same.
22235         (call_value_nonlocal_darwin64): Same.
22236         (sibcall_nonlocal_darwin64): Same.
22237         (sibcall_value_nonlocal_darwin64): Same.
22238         (sibcall_symbolic_64): Same.
22239         (sibcall_value_symbolic_64): Same.
22240         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
22241         LR pseudo.
22242         (rs6000_emit_load_toc_table): Same.
22243         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
22244         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
22245         (mull_call): Same.
22246         (divss_call): Same.
22247         (divus_call): Same.
22248         (quoss_call): Same.
22249         (quous_call): Same.
22250         (load_toc_v4_pic_si): Same
22251         (load_toc_v4_PIC_1): Same.
22252         (load_toc_v4_PIC_1b): Same.
22253         (call_indirect_aix{32,64}): Same.
22254         (call_value_indirect_aix{32,64}): Same.
22255         (call): Same.
22256         (call_value): Same.
22257         (call_local{32,64}): Same.
22258         (call_value_local{32,64}): Same.
22259         (call_indirect_nonlocal_aix{32,64}): Same.
22260         (call_nonlocal_aix{32,64}): Same.
22261         (call_value_indirect_nonlocal_aix{32,64}): Same.
22262         (call_value_nonlocal_aix{32,64}): Same.
22263         (call_indirect_nonlocal_sysv<mode>): Same.
22264         (call_nonlocal_sysv<mode>): Same.
22265         (call_value_indirect_nonlocal_sysv<mode>): Same.
22266         (call_value_nonlocal_sysv<mode>): Same.
22267         (sibcall): Same.
22268         (sibcall_local{32,64}): Same.
22269         (sibcall_value_local{32,64}): Same.
22270         (sibcall_nonlocal_aix{32,64}): Same.
22271         (sibcall_value_nonlocal_aix{32,64}): Same.
22272         (sibcall_nonlocal_sysv<mode>): Same.
22273         (sibcall_value): Same.
22274         (sibcall_value_nonlocal_sysv<mode>): Same.
22275
22276 2007-03-24  Paul Brook  <paul@codesourcery.com>
22277
22278         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
22279         * config/arm/linux-eabi.h: Remove legacy syscall hack.
22280
22281 2007-03-24  Richard Henderson  <rth@redhat.com>
22282
22283         * config/ia64/constraints.md: New file.
22284         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
22285         satisfies_constraint_?.
22286         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
22287         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
22288         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
22289         ia64_output_mi_thunk): Likewise.
22290         (ia64_const_ok_for_letter_p): Remove.
22291         (ia64_const_double_ok_for_letter_p): Remove.
22292         (ia64_extra_constraint): Remove.
22293         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
22294         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
22295         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
22296         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
22297         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
22298         EXTRA_MEMORY_CONSTRAINT): Remove.
22299         * config/ia64/ia64.md: Include constriants.md.  Replace
22300         CONST_OK_FOR_? with satisfies_constraint_?.
22301
22302 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
22303             H.J. Lu  <hongjiu.lu@intel.com>
22304
22305         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
22306         DPD or BID name.
22307         (name macros): Use DPD_BID_NAME to convert names properly.
22308
22309         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
22310         decimal floating point format.
22311         (init_floating_libfuncs): Change decimal functions so that they
22312         have a "bid_" prefix if the decimal system uses the BID format,
22313         and "dpd_" prefix if the decimal system uses the DPD format.
22314         (init_interclass_conv_libfuncs): Ditto.
22315         (init_intraclass_conv_libfuncs): Ditto.
22316
22317         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
22318         using the BID format.
22319
22320         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
22321         whether we are using the BID decimal format.
22322         * configure: Regenerate.
22323
22324         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
22325         the compiler has decimal floating point enabled.  Define
22326         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
22327         instead of DPD.
22328
22329         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
22330         using the BID format.
22331
22332         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
22333         whether we are using the BID decimal format.
22334         * configure: Regenerate.
22335
22336         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
22337         the compiler has decimal floating point enabled.  Define
22338         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
22339         instead of DPD.
22340
22341         * doc/install.texi (--enable-decimal-float): Document BID and DPD
22342         options, and that it is enabled for i386/x86_64 systems.
22343
22344         * Makefile.in (enable_decimal_float): New.
22345         (DECNUMFMT): New.
22346         (DECNUMINC): Add  -I$(DECNUMFMT).
22347         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
22348         to $(DECNUMFMT) from $(DECNUM).
22349
22350         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
22351         Substitute enable_decimal_float.
22352         * configure: Regenerated.
22353
22354         PR other/30529
22355         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
22356         unsigned long.
22357
22358         * configure.ac: Enable decimal float for x86_64-*-linux*.
22359         * configure: Regenerated.
22360
22361         PR other/30530
22362         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
22363         decimal128ClearSign to flip and clear the sign bit in decimal128.
22364         (decimal_real_maxval): Set decimal128SetSign to set the sign
22365         bit in decimal128.
22366
22367 2007-03-23  Ian Lance Taylor  <iant@google.com>
22368
22369         * fold-const.c (fold_binary): Correct warning for X - c >= X.
22370
22371 2007-03-23  Ian Lance Taylor  <iant@google.com>
22372
22373         * tree-dump.c (dump_files): Correct comment.
22374
22375 2007-03-23  Ian Lance Taylor  <iant@google.com>
22376
22377         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
22378
22379 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
22380
22381         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
22382         in cfglayout mode.  Don't go into and out of cfglayout mode.
22383         Link the blocks in the order of the constructed traces.
22384         (rest_of_handle_tracer): Adjust call to tracer.
22385         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
22386         Don't go into cfglayout mode.
22387         (rtl_loop_done): Don't go out of cfglayout mode.
22388         * cfglayout.c (relink_block_chain): New function, split out from...
22389         (fixup_reorder_chain): ...here.  Remove redundant checking.
22390         (cfg_layout_finalize): Don't clear the header, footer, and aux
22391         fields here, move the code to do so to relink_block_chain.  Likewise
22392         for free_original_copy_tables.
22393         * rtl.h (tracer): Update prototype.
22394         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
22395         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
22396         mode.  Use relink_block_chain to serialize the CFG according to the
22397         new basic block order.  Move targetm.cannot_modify_jumps_p check from
22398         here...
22399         (gate_handle_reorder_blocks): ...to here.
22400         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
22401         from here...
22402         (gate_duplicate_computed_gotos): ...to here.
22403         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
22404         something always changes when going into and out of cfglayout mode.
22405         Perform an expensive cfg cleanup while going into cfglayout mode.
22406         Always update liveness information on HAVE_conditional_execution
22407         targets.  Reserialize the basic blocks and go out of cfglayout mode.
22408         * reg-stack.c: Include cfglayout.h.
22409         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
22410         the call to reorder_basic_blocks.
22411         * basic-block.h (reorder_basic_blocks): Update prototype.
22412         (relink_block_chain): New prototype.
22413         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
22414
22415 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
22416
22417         * config/mips/mips.md (type, hazard, *movdi_32bit,
22418         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
22419         *movhi_internal, *movqi_internal, *movsf_hardfloat,
22420         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
22421         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
22422         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
22423         applicable.
22424         (movcc): Change first xfer to multi.
22425         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
22426         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
22427         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
22428         config/mips/generic.md: Change reservations using "xfer" to use
22429         "mfc,mtc".
22430         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
22431         using match_operand.
22432         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
22433         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
22434         examining mode.
22435         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
22436
22437 2007-03-22  Richard Henderson  <rth@redhat.com>
22438
22439         * config/i386/i386.c: Remove unnecessary function declarations.
22440         Move targetm definition, and all related macros, to the end of
22441         the file.  Resort some functions to put definitions before uses.
22442         (ix86_attribute_table): Make static.  Move to end of file.
22443         (ix86_gimplify_va_arg): Make static.
22444
22445 2007-03-22  Richard Henderson  <rth@redhat.com>
22446
22447         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
22448         don't increase local_regparm with force_align_arg_pointer check.
22449         (ix86_function_sseregparm): Assert 32-bit.
22450         (type_has_variadic_args_p): New.
22451         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
22452         type_has_variadic_args_p.
22453         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
22454         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
22455         use memset instead.  Do maybe_vaarg check first; skip attribute
22456         tests if true; skip attribute tests for 64-bit.
22457         (construct_container): Remove TARGET_DEBUG_ARG.
22458         (function_arg_advance_32, function_arg_advance_64): Split out ...
22459         (function_arg_advance): ... from here.
22460         (function_arg_32, function_arg_64): Split out ...
22461         (function_arg): ... from here.
22462         (ix86_pass_by_reference): Tidy.
22463         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
22464         (function_value_32): New, from parts of ix86_function_value
22465         and ix86_value_regno.
22466         (function_value_64): New, from parts of ix86_function_value
22467         and ix86_libcall_value.
22468         (ix86_function_value_1): New.
22469         (ix86_function_value, ix86_libcall_value): Use it.
22470         (return_in_memory_32, return_in_memory_64): Split out ...
22471         (ix86_return_in_memory): ... from here.
22472         (ix86_struct_value_rtx): Skip for 64-bit.
22473         (ix86_libcall_value, ix86_value_regno): Remove.
22474         (setup_incoming_varargs_64): Split out ...
22475         (ix86_setup_incoming_varargs): ... from here.
22476         (ix86_va_start): Remove TARGET_DEBUG_ARG.
22477         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
22478         * config/i386/i386-protos.h (ix86_function_value): Remove.
22479         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
22480
22481 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22482
22483         PR other/23572
22484         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
22485         infinities not supported, otherwise emit warning if -Woverflow. On
22486         underflow, emit warning if -Woverflow.
22487         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
22488         and 0 otherwise.
22489         * real.h (real_from_string): Update declaration
22490
22491 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
22492             Richard Henderson  <rth@redhat.com>
22493
22494         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
22495         * calls.c (compute_argument_block_size, expand_call,
22496         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
22497         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
22498         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
22499         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
22500         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
22501         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
22502         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
22503         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
22504         Set to 1.
22505
22506 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
22507
22508         * c-incpath.c (add_sysroot_to_chain): New.
22509         (merge_include_chains): Add sysroot argument.  Call
22510         add_sysroot_to_chain if sysrooted.
22511         (register_include_chains): Update call to merge_include_chains.
22512         * doc/cppopts.texi: Document use of '=' in include directory
22513         arguments.
22514
22515 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
22516
22517         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
22518         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
22519         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
22520         insn pattern using X87MODEF12 mode macro.
22521
22522 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
22523
22524         * regmove.c (regmove_optimize): Use reg_mentioned_p
22525         instead of reg_overlap_mentioned_p for DST.
22526
22527 2007-03-21  Mike Stump  <mrs@apple.com>
22528
22529         * c.opt: Fixup for Objective-C/C++.
22530
22531 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
22532
22533         * explow.c (convert_memory_address): Fold memory reference when
22534         POINTERS_EXTEND_UNSIGNED < 0
22535
22536 2007-03-21  Richard Henderson  <rth@redhat.com>
22537
22538         PR target/31245
22539         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
22540         * config/i386/mmintrin.h (__m64): Likewise.
22541         * config/i386/xmmintrin.h (__m128): Likewise.
22542
22543 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
22544
22545         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
22546         (VXWORKS_OS_CPP_BUILTINS): Define.
22547         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
22548         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
22549
22550 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
22551
22552         * rtl.h (constant_pool_reference_p): Delete.
22553         (find_constant_src): Declare.
22554         * rtlanal.c (find_constant_src): New function.
22555         * simplify-rtx.c (constant_pool_reference_p): Delete.
22556         * config/i386/i386.md: Use find_constant_src instead of
22557         constant_pool_reference_p/avoid_constant_pool_reference pairs.
22558
22559 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
22560
22561         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
22562         * c-cppbuiltin.c (c_cpp_builtins): Define them.
22563
22564 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
22565
22566         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
22567         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
22568         (arm_elf_asm_constructor): Use it.
22569         (arm_elf_asm_destructor): New function.
22570
22571 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
22572
22573         * jump.c (mark_jump_label): Treat SEQUENCE specially.
22574
22575 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
22576
22577         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
22578
22579 2007-03-19  Andrew Haley  <aph@redhat.com>
22580
22581         PR tree-optimization/31264
22582         * tree-vrp.c (register_edge_assert_for_1): Don't look though
22583         VIEW_CONVERT_EXPRs.
22584
22585 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
22586
22587         PR rtl-optimization/30907
22588         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
22589         (fwprop_init): Always call loop_optimizer_initialize.
22590         (fwprop_done): Always call loop_optimizer_finalize.
22591         (fwprop): We always have loop info now.
22592         (gate_fwprop_addr): Remove.
22593         (pass_fwprop_addr): Use gate_fwprop as gate.
22594
22595         PR rtl-optimization/30841
22596         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
22597         df_chain_alloc): Call df_reorganize_refs unconditionally.
22598         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
22599         refs_organized to refs_organized_size.
22600         (df_ref_create_structure): Use refs_organized_size instead of
22601         bitmap_size if refs had been organized, and keep refs_organized_size
22602         up-to-date.
22603         * df.h (struct df_ref_info): Change refs_organized to
22604         refs_organized_size.
22605         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
22606         bitmap_size.
22607
22608 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
22609
22610         * except.c (output_function_exception_table): Do not reference the
22611         EH personality routine for functions that do not require an
22612         exception table.
22613
22614 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
22615
22616         PR c/30762
22617         * c-typeck.c (convert_for_assignment): Call comptypes for
22618         RECORD_TYPE or UNION_TYPE.
22619
22620         PR inline-asm/30505
22621         * reload1.c (reload): Do invalid ASM checking after
22622         cleanup_subreg_operands.
22623
22624 2007-03-19  Jeff Law  <law@redhat.com>
22625
22626         * tree-cfg.c (find_taken_edge): Tighten conditions for
22627         optimizing computed gotos.
22628
22629 2007-03-19  Michael Matz  <matz@suse.de>
22630
22631         * builtins.c (expand_builtin_sync_operation,
22632         expand_builtin_compare_and_swap,
22633         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
22634         correctly.
22635
22636         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
22637         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
22638         for operand 3.
22639
22640 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22641
22642         * doc/tm.texi: Add brackets around the return type of
22643         TARGET_SECONDARY_RELOAD.
22644
22645 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22646         Richard Guenther  <rguenther@suse.de>
22647
22648         PR tree-optimization/31254
22649         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
22650         Use handled_component_p () where appropriate.  Continue
22651         propagating into the rhs if we propagated into an INDIRECT_REF
22652         on the lhs.
22653
22654 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22655
22656         * config/s390/s390.md (op_type attribute): RRR instruction type added.
22657         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
22658         (xde, xdee): Mode attributes adjusted to support DFP modes.
22659         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
22660         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
22661         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
22662         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
22663         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
22664         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
22665         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
22666         numbers.
22667         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
22668         "movsf"): Insn definitions removed.
22669         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
22670         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
22671         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
22672         definitions added.
22673         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
22674         "reload_in<mode>", "reload_out<mode>"): Expander added.
22675         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
22676         Expander removed.
22677
22678 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22679
22680         * config/s390/s390.md: Only non-functional changes.  Renamed
22681         FPR mode macro to BFP all over the file.
22682
22683 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22684
22685         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
22686         (op_type attribute): RRF instruction type added.
22687         (fT0): New mode attribute.
22688         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
22689         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
22690         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
22691         instruction no secondary memory is needed when moving DFmode values
22692         between GPRs and FPRs.
22693
22694 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22695
22696         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
22697         inverted and documentation adjusted.
22698         ("mhard-dfp", "msoft-dfp"): New options.
22699         * config/s390/s390.c (s390_handle_arch_option): New architecture
22700         switch: z9-ec.
22701         (override_options): Sanity checks for the new options added.
22702         * config.gcc: New architecture switch: z9-ec.
22703         * config/s390/s390.h (processor_flags): PF_DFP added.
22704         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
22705         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
22706         when the bit is NOT set so remove it from the defaults.
22707
22708 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22709
22710         * genemit.c (main): Print include statement for dfp.h.
22711         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
22712         is not available.
22713
22714 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
22715
22716         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
22717
22718 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
22719
22720         PR target/31022
22721         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
22722         instead of PATTERN.
22723
22724 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22725
22726         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
22727         attr_length_call, output_call, output_indirect_call): Cleanup
22728         formatting of targetm calls.
22729
22730 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
22731
22732         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
22733
22734 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22735
22736         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
22737         reservation, bypass and anti-bypass descriptions for these
22738         instructions.  Update move patterns.
22739         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
22740         TYPE_FPSTORE.
22741
22742 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
22743
22744         * tree-vect-transform.c (get_initial_def_for_induction): Replace
22745         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
22746         (get_initial_def_for_reduction): Likewise.
22747
22748 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
22749
22750         Fix PR tree-optimization/29922
22751         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
22752         (get_representative): Removed.
22753         (value_dies_in_block_x): Update for rvuse removal.
22754         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
22755         (compute_antic_aux): Handle when PHI nodes appear in
22756         non-single-successors.
22757         (dump_bitmap_of_names): Removed.
22758         (compute_antic_safe): Renamed and removed rvuse calculation.
22759         Calculate only antic safe.
22760         (insert_into_preds_of_block): Remove assert.
22761         (execute_pre): Update for renamed functions.
22762         (defer_or_phi_translate_block): New function.
22763
22764 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
22765
22766         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
22767         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
22768         typos.
22769         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
22770         Follow spelling conventions.
22771
22772         * tree-data-ref.h: Remove the prototype for analyze_array.
22773
22774 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
22775
22776         PR tree-optimization/31041
22777         * tree-vect-transform.c (get_initial_def_for_induction): Call
22778         force_gimple_operand.
22779
22780 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
22781
22782         * ipa-type-escape.c (look_for_casts) : Revert code to use
22783         handled_component_p due to ada test a-numaux.adb.
22784
22785 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
22786
22787         * final.c (final_scan_insn): Alter the condition of a
22788         conditional trap if we have nonstandard CC.
22789
22790 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
22791
22792         * configure.ac: Remove excess quoting from asm line 0 test.
22793         * configure: Rebuilt.
22794
22795 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22796
22797         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
22798         * c-common.c (convert_and_check): Move warning logic to...
22799         (warnings_for_convert_and_check): ...here. Define.
22800         * c-common.h (warnings_for_convert_and_check): Declare.
22801
22802 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22803
22804         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
22805         (output_call): Likewise.
22806
22807 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
22808
22809         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
22810
22811 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
22812
22813         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
22814
22815 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
22816
22817         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
22818         opteron, athlon-64 and athlon-fx processor_alias_table entries.
22819
22820 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
22821
22822         PR tree-optimization/31183
22823         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
22824         Use double_int instead of unsigned int for representing access_strides.
22825         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
22826
22827 2007-03-16  Richard Guenther  <rguenther@suse.de>
22828
22829         PR tree-optimization/31146
22830         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
22831         to allow recursion of forward_propagate_addr_expr.
22832         (forward_propagate_addr_into_variable_array_index): Likewise.
22833         (forward_propagate_addr_expr): Likewise.
22834         (tree_ssa_forward_propagate_single_use_vars): Likewise.
22835         (forward_propagate_addr_expr_1): Recurse on simple copies
22836         instead of propagating into them.  Do so for useless conversions
22837         as well.
22838         (forward_propagate_addr_expr): Clean up unused statements after
22839         recursion.
22840
22841 2007-03-16  Richard Guenther  <rguenther@suse.de>
22842
22843         * builtins.c (expand_builtin_cexpi): Use the right argument
22844         for the expansion via cexp.
22845
22846 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
22847
22848         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
22849         * configure: Rebuilt.
22850
22851 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
22852
22853         PR debug/29906
22854         * dwarf2out.c (force_type_die): Adjust comment.
22855         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
22856
22857 2007-03-15  DJ Delorie  <dj@redhat.com>
22858
22859         * config/frv/predicates.md (minmax_operator): Don't check operands
22860         here.
22861
22862 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
22863
22864         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
22865         Update constant estimates of number of iterations.
22866         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
22867         argument renamed to "realistic".
22868         (compute_estimated_nb_iterations): Removed.
22869         (record_niter_bound): New function.
22870         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
22871         call record_nonwrapping_iv with upper = false.
22872         (infer_loop_bounds_from_signedness): Pass upper argument to
22873         record_nonwrapping_iv.
22874         (estimate_numbers_of_iterations_loop): Do not call
22875         compute_estimated_nb_iterations.  Record estimate based on profile
22876         information.  Initialize the constant estimates of number of
22877         iterations.
22878         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
22879         estimates.
22880         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
22881         number of iterations is too small.
22882         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
22883         (EST_NOT_AVAILABLE): Removed.
22884         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
22885         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
22886         fields.
22887
22888 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
22889
22890         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
22891         Handle NE_EXPR guards.
22892
22893 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22894
22895         PR c++/24924
22896         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
22897         Set also -pedantic-errors by default for the  preprocessor unless
22898         -fpermissive is given.
22899
22900 2007-03-15  Richard Guenther  <rguenther@suse.de>
22901
22902         PR middle-end/29719
22903         PR middle-end/31161
22904         * builtins.c (expand_builtin_cexpi): As a fallback if we
22905         don't have builtins for sincos or cexp create a function
22906         declaration for cexp and expand to a call to that.
22907         (expand_builtin_int_roundingfn): Always fall
22908         back to floor/ceil and its variants even if they may be
22909         not available.
22910
22911 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
22912
22913         PR middle-end/31159
22914         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
22915         jump tables, move the call to delete_dead_jumptables from here...
22916         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
22917         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
22918         don't allow merging of blocks that try_redirect_by_replacing_jump
22919         also does not handle when not optimizing.
22920
22921 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
22922             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
22923
22924         * config/i386/i386.md (x86_sahf_1): Correctly handle
22925         HAVE_AS_IX86_SAHF.
22926
22927 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
22928
22929         PR target/31167
22930         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
22931         x86_64_general_operand as operand[2] predicate.  Remove "iF"
22932         from operand constraints and use "e" constraint instead.
22933         (*subti3_1, *subti3_1 splitter): Ditto.
22934         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
22935         operand[1] predicate.
22936
22937 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
22938
22939         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
22940         arrays, multiply the access strides by the size of the sub-array.
22941         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
22942
22943 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
22944
22945         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
22946         the configured assembler supports the sahf mnemonic.
22947         * configure: Regenerate.
22948         * config.in: Regenerate.
22949
22950         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
22951         emit "sahf" or ".byte\t0x9e" as asm template.
22952
22953 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
22954
22955         PR 31018
22956         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
22957         option to replace hard coded TARGET_xxx in md file.
22958         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
22959         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
22960         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
22961         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
22962         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
22963         (X86_TUNE_NOT_VECTORMODE): Ditto.
22964         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
22965         (TUNE_AVOID_VECTOR_DECODE): Ditto.
22966         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
22967         (TUNE_SLOW_IMUL_IMM8): Ditto.
22968         (TUNE_MOVE_M1_VIA_OR): Ditto.
22969         (TUNE_NOT_UNPAIRABLE): Ditto.
22970         (TUNE_NOT_VECTORMODE): Ditto.
22971
22972         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
22973         options.
22974
22975         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
22976         tuning options instead of hard coded TARGET_xxx.
22977         (fix ssemode peephole2's): Ditto.
22978         (imul peephole2's): Ditto.
22979         (movsi_or): Ditto.
22980         (movdi_or_rex64): Ditto.
22981         (move peephole2): Ditto.
22982         (not peephole2's): Ditto.
22983
22984 2007-03-14  Dirk Mueller  <dmueller@suse.de>
22985
22986         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
22987         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
22988         * c-parser.c (c_parser_if_body): Always add an empty statement in case
22989         of empty body.
22990         * c-parser.c (c_parser_do_statement): Warn about empty body in
22991         do/while statement.
22992         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
22993         * doc/invoke.texi (-Wempty-body): Update documentation.
22994
22995 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22996
22997         PR c/21438
22998         * c-common.h (warn_for_div_by_zero): Declare.
22999         * c-common.c (warn_for_div_by_zero): Define.
23000         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
23001         warning.
23002
23003 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
23004
23005         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
23006         to PREFIX and STANDARD_PREFIX.
23007
23008 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
23009             Phil Edwards  <phil@codesourcery.com>
23010
23011         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
23012         (__gthread_once_t): Remove busy field for RTPs.
23013         (__GTHREAD_ONCE_INIT): Update accordingly.
23014
23015 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
23016
23017         * doc/invoke.texi: Document VxWorks options.
23018
23019 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
23020
23021         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
23022
23023 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
23024
23025         PR tree-optimization/30590
23026         * tree-nrv.c (tree_nrv): Check for the partial update of the
23027         return value.
23028
23029 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
23030
23031         * flags.h (flag_random_seed): Remove declaration, in favor of...
23032         * toplev.h (get_random_seed, set_random_seed): ... these.
23033         * tree.c (get_file_function_name): Use the former.
23034         * opts.c (common_handle_option): Use the latter.
23035         * toplev.c
23036
23037 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
23038
23039         PR middle-end/31127
23040         * cse.c (cse_find_path): Do not bail out if a basic block that
23041         we already visited now becomes part of a path that starts at a
23042         different basic block.  Just disallow this, to make sure we
23043         visit each basic block at most once.
23044
23045 2007-03-13  Jan Hubicka  <jh@suse.cz>
23046
23047         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
23048         attributes, when profile esitmate is present, calls with very low
23049         frequency are cold.
23050
23051 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
23052
23053         PR tree-optimization/30730
23054         PR tree-optimization/26900
23055         * tree-ssa-loop-niter.c: Include gmp.h.
23056         (bounds): New type.
23057         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
23058         split_to_var_and_offset, determine_value_range,
23059         bound_difference_of_offsetted_base, refine_bounds_using_guard,
23060         bound_difference, bounds_add, bounds_negate,
23061         number_of_iterations_ne_max, dump_affine_iv): New functions.
23062         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
23063         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
23064         difference of initial and final value of control iv to validate
23065         results.
23066         (number_of_iterations_cond): Add loop parameter.  Determine bounds
23067         on the difference of the extremes of the control iv.  Add dumps.
23068         (expand_simple_operations): Handle phi nodes.
23069         (simplify_using_initial_conditions): Do not record used conditions.
23070         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
23071         Do not set additional_info.
23072         (implies_nonnegative_p, implies_ge_p): Removed.
23073         (derive_constant_upper_bound): Do not use parameter `additional'.
23074         (record_estimate): Parameter `additional' removed.  Parameter
23075         `i_bound' added.  Do not call derive_constant_upper_bound.
23076         (record_nonwrapping_iv): Use derive_constant_upper_bound to
23077         bound the number of iterations estimate.
23078         (estimate_numbers_of_iterations_loop): Pass the estimate from
23079         the number of iterations analysis to record_estimate.
23080         * tree.h (multiple_of_p): Declare.
23081         * tree-scalar-evolution.c (expression_expensive_p): Removed.
23082         (scev_const_prop): Do not check expression_expensive_p.
23083         * fold-const.c (multiple_of_p): Exported.
23084         * double-int.c (double_int_mask): Exported.
23085         * double-int.h (double_int_mask): Declare.
23086         * tree-flow.h (struct tree_niter_desc): Removed additional_info
23087         field.  Added max field.
23088
23089 2007-03-13  David Taylor  <taylor@candd.org>
23090
23091         PR driver/12448:
23092         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
23093         default -MQ.
23094
23095 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23096
23097         PR target/31123
23098         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
23099         two unamed patterns.
23100
23101 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
23102
23103         * config/i386/i386.opt (mcx16, msahf): New options.
23104         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
23105         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
23106
23107         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
23108         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
23109         Output -mcx16 and -msahf options when corresponding bit is set.
23110
23111         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
23112         and -msahf options.
23113
23114 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
23115
23116         * configure.ac: Test for assembler tolerance to # 0 "".
23117         * configure, config.in: Rebuilt.
23118         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
23119
23120 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
23121
23122         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
23123
23124         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
23125         (handle_syscall): Handle direct system calls.
23126         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
23127
23128 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
23129
23130         * doc/invoke.texi: Fix cpp.info cross-reference.
23131         * doc/passes.texi: Fix gcc.info cross-reference.
23132
23133 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
23134
23135         PR tree-optimization/30835
23136         * lambda-code.c (can_convert_to_perfect_nest): Check whether
23137         bb_for_stmt is not NULL before accessing it.
23138
23139 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
23140
23141         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
23142         some multilibs.
23143
23144 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
23145
23146         PR 30635
23147         * doc/install.texi: Document --enable-stage1-languages
23148
23149 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
23150
23151         * tree-pass.h (pass_into_cfg_layout_mode,
23152         pass_outof_cfg_layout_mode): Declare.
23153         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
23154         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
23155         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
23156         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
23157
23158 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
23159
23160         * c-decl.c (warn_variable_length_array): New function.
23161         Refactored from grokdeclarator to handle warn_vla
23162         and handle unnamed array case.
23163         (grokdeclarator): Refactored VLA warning case.
23164         * c.opt (Wvla): New flag.
23165         * doc/invoke.texi (Wvla): New warning.
23166
23167 2007-03-12  Richard Henderson  <rth@redhat.com>
23168
23169         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
23170         (TARGET_SECTION_TYPE_FLAGS): New.
23171
23172 2007-03-12  Richard Henderson  <rth@redhat.com>
23173
23174         * config/darwin.c (machopic_reloc_rw_mask): New.
23175         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
23176         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
23177
23178 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
23179
23180         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
23181         * cppdefault.h (cpp_PREFIX): Document.
23182         (cpp_PREFIX_len): Likewise.
23183         (cpp_EXEC_PREFIX): New variable.
23184         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
23185         * c-incpath.c (add_standard_paths): Correct logic for relocating
23186         paths within prefix.
23187
23188 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
23189
23190         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
23191         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
23192         mode macro.
23193         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
23194         fix_truncdfdi_sse using SSEMODEF mode macro.
23195         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
23196         fix_truncdfsi_sse using SSEMODEF mode macro.
23197         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
23198         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
23199
23200 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
23201
23202         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
23203         elfos.h to tm_file.
23204
23205 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
23206
23207         * tree.h : Add multiple_of_p declaration.
23208         * fold-const.c (multiple_of_p): Make multiple_of_p public.
23209         * ipa-type-escape.c (results_of_malloc): Redundant.
23210         (visited_stmts): New. Visited stmt for walk_use_def_chains.
23211         (cast_type): Extended with new members.
23212         (check_cast): Returns cast_type.
23213         (cast): New structure for data of walk_use_def_chains.
23214         (is_malloc_result, is_cast_from_non_pointer_1,
23215         is_cast_from_non_pointer,
23216         is_array_access_through_pointer_and_index): New functions.
23217         (look_for_casts): Returns cast types.
23218         (check_call): Returns void.
23219         (okay_pointer_operation): Use support of pointer plus index,
23220         pointer plus constant and allow all multiplications.
23221
23222 2007-03-11  Richard Guenther  <rguenther@suse.de>
23223
23224         PR tree-optimization/31115
23225         * tree-vrp.c (extract_range_from_binary_expr): Make sure
23226         the shift count is positive and non-anti-range for RSHIFT_EXPR.
23227         A shift count of zero is not special as with *_DIV_EXPR.
23228         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
23229         direction.
23230
23231 2007-03-11  Ian Lance Taylor  <iant@google.com>
23232
23233         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
23234         the *_DIV_EXPR codes correctly with overflow infinities.
23235
23236 2007-03-11  Ira Rosen  <irar@il.ibm.com>
23237
23238         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
23239         indicate success/failure of the analysis. Add negation to subtrahend
23240         in case of subtraction. Fail if both operands contain constants.
23241         (create_data_ref): Fail if analyze_offset fails.
23242
23243 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
23244
23245         * config/i386/i386.md (frndintxf2): Rename to ...
23246         (rintxf2): ... this. Remove expander having same name.
23247         (rintsf2, rintdf2): Implement using SSEMODEF macro.
23248         (roundsf2, rounddf2): Ditto.
23249         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
23250         (lround<mode>di2, lround<mode>si2): Ditto.
23251
23252 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
23253
23254         * lower-subreg.c: Include except.h.
23255         (decompose_multiword_subregs): Verify that the only control flow
23256         insns we can split are loads to multi-words pseudos.
23257         Handle breaking such blocks after splitting, instead of calling
23258         find_many_sub_basic_blocks.
23259
23260         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
23261         on the new basic block.  Add a lengthy comment explaining why we
23262         thought this was necessary.
23263         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
23264
23265 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
23266
23267         PR c++/30924
23268         * tree.c (walk_type_fields): Recurse into the element type of
23269         ARRAY_TYPEs if there is a pointer set.
23270
23271 2007-03-10  Dirk Mueller  <dmueller@suse.de>
23272
23273         * c-common.c (warn_logical_operator): Fix condition.
23274
23275 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
23276
23277         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
23278         quotation mark.
23279         * config/darwin.c (machopic_select_section): Remove superfluous
23280         argument in call to categorize_decl_for_section.  Remove unused
23281         variable shlib.
23282
23283 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
23284
23285         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
23286         defined.
23287         * configure: Regenerate.
23288
23289 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
23290
23291         PR target/31101
23292         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
23293         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
23294         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
23295         Add LABEL_NUSES to emitted label.
23296         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
23297         branch probability value to emitted jump insn.
23298         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
23299         Do not check life information and do not re-arrange input operands
23300         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
23301
23302 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
23303
23304         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
23305         the change of decode_asm_operands.
23306
23307 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
23308
23309         * mode-switching.c (create_pre_exit): Skip blockage insn.
23310
23311 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
23312
23313         * tree-pass.h (TODO_update_smt_usage): Remove.
23314         Update all users.
23315         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
23316         argument SOME.
23317         Update all users.
23318
23319 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23320
23321         * pa.c (attr_length_call): Revise condition for long
23322         pc-relative branch.
23323         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
23324         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
23325         sequence on SOM target.
23326
23327 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
23328
23329         * gcc.c: Document %{, in big comment at top.
23330         (input_suffix_matches): Remove special handling for .s and
23331         .S.
23332         (input_spec_matches): New.
23333         (handle_braces): Handle %{,.
23334         (validate_switches): ',' indicates a value which is not a switch.
23335         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
23336         to detect assembler input.
23337         * config/i386/sol2.h (CPP_SPEC): Likewise.
23338         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
23339         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
23340         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
23341         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
23342         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
23343         -m64 causes deployment target to default to 10.5.
23344         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
23345
23346 2007-03-09  Richard Henderson  <rth@redhat.com>
23347
23348         PR target/26090
23349         * target.h (targetm.asm.out.reloc_rw_mask): New.
23350         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
23351         (TARGET_ASM_OUT): Use it.
23352         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
23353         * varasm.c (categorize_decl_for_section): Remove shlib argument;
23354         use the new reloc_rw_mask target hook instead.
23355         (default_section_type_flags_1): Merge into...
23356         (default_section_type_flags): ... here.
23357         (decl_readonly_section_1): Merge into...
23358         (decl_readonly_section): ... here.
23359         (default_elf_select_section_1): Merge into...
23360         (default_elf_select_section): ... here.
23361         (default_unique_section_1): Merge into...
23362         (default_unique_section): ... here.
23363         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
23364         (default_select_rtx_section): Use it.
23365         (default_elf_select_rtx_section): Likewise.
23366         * output.h: Update to match.
23367         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
23368         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
23369         (TARGET_ASM_RELOC_RW_MASK): New.
23370         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
23371         to categorize_decl_for_section.
23372         (x86_64_elf_unique_section): Likewise.
23373         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
23374         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
23375         (TARGET_ASM_RELOC_RW_MASK): New.
23376         * config/ia64/ia64.c (ia64_rwreloc_select_section,
23377         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
23378         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
23379         (TARGET_RWRELOC): Remove.
23380         (ia64_section_type_flags): Adjust call to default_section_type_flags.
23381         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
23382         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
23383         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
23384         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
23385         (rs6000_xcoff_select_section): Use decl_readonly_section.
23386         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
23387         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
23388         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
23389         (TARGET_SECTION_TYPE_FLAGS): Remove.
23390         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
23391
23392 2007-03-09  Roger Sayle  <roger@eyesopen.com>
23393
23394         * fold-const.c (fold_comparison): Remove compile-time evaluation of
23395         complex constant equality/inequality comparisons for here.
23396         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
23397         known at compile-time or can be simplified to a scalar comparison.
23398         (fold_relational_const): Move compile-time evaluation of complex
23399         constant equality/inequality comparisons to here.
23400
23401 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
23402
23403         PR rtl-optimization/30643
23404         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
23405         dest_addr_elt.
23406         (fold_rtx): Recurse, like before 2006-11-03.
23407
23408 2007-03-09  DJ Delorie  <dj@redhat.com>
23409
23410         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
23411         m32c-pragma.o.
23412
23413 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
23414
23415         PR tree-optimization/30375
23416         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
23417         LHS of statements is not the same.
23418         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
23419
23420 2007-03-09  Chao-ying Fu  <fu@mips.com>
23421
23422         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
23423         REV 2.
23424         * doc/invoke.texi (-mdspr2): Document new option.
23425         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
23426         New unspec for DSP REV 2.
23427         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
23428         these instructions are extended in DSP REV 2.
23429         (mips-dspr2.md): Include.
23430         * config/mips/mips.opt (mdspr2): New option.
23431         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
23432         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
23433         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
23434         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
23435         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
23436         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
23437         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
23438         and 2 builtins.
23439         (bdesc_map): Add one field of unsupported_target_flags.
23440         (bdesc_arrays): Update entries to have extra fields.  Add
23441         dsp_32only_bdesc.
23442         (mips_init_builtins): Initialize new function types.
23443         Check unsupported_target_fileds to filter out builtins.
23444         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
23445         TARGET_DSPR2.
23446         (ASM_SPEC): Pass mdspr2 to the assembler.
23447         * config/mips/mips-dspr2.md: New file.
23448
23449 2007-03-09  Sa Liu  <saliu@de.ibm.com>
23450
23451         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
23452
23453 2007-03-09  Ian Lance Taylor  <iant@google.com>
23454
23455         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
23456         argument) like -Wstrict-overflow=2.
23457         * doc/invoke.texi (Warning Options): Update documentation.
23458
23459 2007-03-09  Dirk Mueller  <dmueller@suse.de>
23460
23461         PR c++/17946
23462         * doc/invoke.texi (-Wlogical-op): Document.
23463         * common.opt (-Wlogical-op): New.
23464         * c-common.h (warn_logical_operator): Declare.
23465         * c-common.c (warn_logical_operator): Define.
23466         * c-typeck.c (parser_build_binary_op): Call
23467         warn_logical_operator.
23468
23469 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
23470
23471         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
23472         * final.c (final_scan_insn): Test for non-"" file name.
23473
23474 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
23475
23476         * doc/loop.texi: Document the Omega linear constraints solver.
23477         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
23478         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
23479         omega-hash-table-size, omega-max-keys, and
23480         omega-eliminate-redundant-constraints.
23481         * tree-pass.h (pass_check_data_deps): Declared.
23482         * omega.c: New.
23483         * omega.h: New.
23484         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
23485         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
23486         pass_check_data_deps): New.
23487         * tree-data-ref.c (init_data_ref): Remove declaration.
23488         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
23489         (analyze_array): Renamed init_array_ref, move up initializations.
23490         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
23491         Removed arguments that are set to NULL.
23492         (analyze_indirect_ref): Correct indentation, correct call to
23493         init_pointer_ref.
23494         (object_analysis): Call init_array_ref instead of analyze_array.
23495         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
23496         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
23497         of DR_ACCESS_FNS_ADDR.
23498         (init_omega_eq_with_af, omega_extract_distance_vectors,
23499         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
23500         ddr_consistent_p): New.
23501         (compute_affine_dependence): Check consistency of ddrs when
23502         flag_check_data_deps is passed.
23503         (analyze_all_data_dependences): Uncomment.
23504         (tree_check_data_deps): New.
23505         * tree-data-ref.h: Include omega.h.
23506         (DR_ACCESS_FNS_ADDR): Removed.
23507         (data_dependence_relation): Add inner_loop.
23508         (DDR_INNER_LOOP): New.
23509         * common.opt (fcheck-data-deps): New.
23510         * tree-flow.h (tree_check_data_deps): Declare.
23511         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
23512         (OBJS-common): Depend on omega.o.
23513         (omega.o): Define.
23514         * passes.c (pass_check_data_deps): Scheduled.
23515         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
23516         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
23517         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
23518         PARAM_VECT_MAX_VERSION_CHECKS,
23519         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
23520
23521 2007-03-09  Richard Guenther  <rguenther@suse.de>
23522
23523         PR tree-optimization/30904
23524         PR middle-end/31058
23525         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
23526         the same way as *_DIV_EXPR.
23527
23528 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
23529
23530         * recog.c (decode_asm_operands): No mixed declarations and code.
23531
23532 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
23533
23534         * rtl.def (ASM_INPUT): Add location.
23535         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
23536         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
23537         (decode_asm_operands): Add loc operand.
23538         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
23539         * stmt.c (expand_asm): Rename to...
23540         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
23541         gen_rtx_ASM_INPUT_loc.
23542         (expand_asm_expr): Adjust.
23543         * recog.c (decode_asm_operands): Add loc operand.
23544         (check_asm_operands, extract_insn): Adjust.
23545         * reload1.c (maybe_fix_stack_asms): Likewise.
23546         * final.c (asm_insn_count): Likewise.
23547         (final_scan_insn): Output # line before and after asm.
23548
23549 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
23550
23551         * tree-ssa-structalias.c (variable_info): Remove
23552         finished_solution.
23553         (new_var_info): Ditto.
23554         (shared_bitmap_info_t): New structure.
23555         (shared_bitmap_table): New variable.
23556         (shared_bitmap_hash): New function.
23557         (shared_bitmap_eq): Ditto
23558         (shared_bitmap_lookup): Ditto.
23559         (shared_bitmap_add): Ditto.
23560         (merge_smts_into): Change to take bitmap directly.
23561         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
23562         (init_alias_vars): Init shared bitmap hashtable.
23563         (delete_points_to_sets): Delete shared bitmap hashtable.
23564         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
23565         is_aliased removal as a change that was still necessary was
23566         deleted.
23567
23568 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
23569
23570         * config/i386/i386.h (override_options): Conditionally disable
23571         x86_sahf for 64bit targets only.
23572
23573 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23574
23575         PR C/31072
23576         * c-decl.c (merge_decls): Don't call make_var_volatile.
23577         * varasm.c (make_var_volatile): Remove.
23578         * output.h (make_var_volatile): Remove.
23579
23580 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
23581
23582         PR tree-optimization/31085
23583         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
23584
23585 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23586
23587         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
23588         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
23589         ATTR_CONST_NOTHROW_LIST.
23590
23591         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
23592         FIX_TRUNC_EXPR.
23593
23594 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
23595
23596         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
23597
23598 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
23599
23600         PR 31013
23601         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
23602         is declared.
23603         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
23604         passed, use shared libgcc.
23605
23606 2007-03-08  Roger Sayle  <roger@eyesopen.com>
23607
23608         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
23609         instead of calling build2 with a GIMPLE_MODIFY_STMT.
23610         (honor_protect_cleanup_actions, lower_try_finally_switch):
23611         Likewise.
23612         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
23613         ifc_temp_var): Likewise.
23614         * tree-inline.c (setup_one_parameter): Likewise.
23615         * tree-mudflap.c (mf_decl_cache_locals,
23616         mf_build_check_statement_for): Likewise.
23617         * tree-nested.c (init_tmp_var, save_tmp_var,
23618         finalize_nesting_tree_1): Likewise.
23619         * tree-outof-ssa.c (insert_copy_on_edge,
23620         insert_backedge_copies): Likewise.
23621         * tree-profile.c (tree_gen_edge_profiler,
23622         tree_gen_ic_profiler): Likewise.
23623         * tree-scalar-evolution.c (scev_const_prop): Likewise.
23624         * tree-sra.c (sra_build_assignment): Likewise.
23625         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
23626         * tree-ssa-math-opts.c (insert_reciprocals,
23627         execute_cse_sincos_1): Likewise.
23628         * tree-tailcall.c (adjust_accumulator_values,
23629         adjust_return_value): Likewise.
23630         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
23631         * tree-vect-transform.c (vect_create_data_ref_ptr,
23632         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
23633         vect_create_epilog_for_reduction, vectorizable_reduction,
23634         vectorizable_call, vectorizable_conversion,
23635         vectorizable_assignment, vectorizable_operation,
23636         vectorizable_type_demotion, vect_gen_widened_results_half,
23637         vect_permute_store_chain, vectorizable_store,
23638         vect_setup_realignment, vect_permute_load_chain,
23639         vectorizable_load, vectorizable_condition,
23640         vect_create_cond_for_align_checks): Likewise.
23641         * tree-vrp.c (build_assert_expr_for): Likewise.
23642
23643 2007-03-08  Ian Lance Taylor  <iant@google.com>
23644
23645         * tree-vrp.c: Include "intl.h".
23646         (usable_range_p): New static function.
23647         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
23648         overflowed values, juts set *strict_overflow_p.
23649         (compare_values): Only return -2 if one of the operands is not a
23650         constant.
23651         (compare_ranges): Call usable_range_p.
23652         (compare_range_with_value): Likewise.
23653         (vrp_evaluate_conditional_warnv): Rename from
23654         vrp_evaluate_conditional.  Make static.  Change all callers.
23655         (vrp_evaluate_conditional): New function.
23656         (simplify_div_or_mod_using_ranges): Issue warning about reliance
23657         on signed overflow.
23658         (simplify_abs_using_ranges): Likewise.
23659         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
23660         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
23661         within_stmt parameter.
23662         * tree-ssa-propagate.c (fold_predicate_in): Update call to
23663         vrp_evaluate_conditional.
23664         * tree-ssa-threadedge.c
23665         (record_temporary_equivalences_from_stmts_at_dest): Change
23666         simplify parameter to take a second tree parameter.
23667         (simplify_control_stmt_condition): Likewise.
23668         (thread_across_edge): Likewise.
23669         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
23670         (thread_across_edge): Likewise.
23671         * Makefile.in (tree-vrp.o): Depend upon intl.h.
23672
23673 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
23674
23675         * config/i386/i386.h (TARGET_SAHF): New define.
23676         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
23677         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
23678         (x86_sahf): New global variable.
23679         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
23680         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
23681         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
23682         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
23683         for 64-bit.
23684         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
23685         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
23686         when expanding fcomi/sahf based tests.
23687         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
23688         expanding sahf based alternative. Emit sahf based sequence when
23689         optimizing for code size.
23690         * config/i386/i386.md (x86_sahf_1): Do not disable for
23691         TARGET_64BIT, enable for TARGET_SAHF.
23692
23693 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
23694
23695         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
23696         spurious whitespace from error message.
23697
23698 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
23699
23700         PR c++/30852
23701         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
23702
23703 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
23704
23705         * c-decl.c (grokdeclarator): Disable warnings for anonymous
23706         bitfields.
23707         * tree-sra.c (instantiate_element): Propagate disabled warnings
23708         from the element itself to the created variable.
23709
23710 2007-03-07  Richard Henderson  <rth@redhat.com>
23711
23712         PR target/30848
23713         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
23714         silently fix up the stack in the case of a missing register.
23715
23716 2007-03-07  Paul Brook  <paul@codesourcery.com>
23717
23718         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
23719
23720 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
23721
23722         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
23723         New.
23724         (phase1_vrs): Use them.
23725         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
23726         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
23727         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
23728         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
23729         __gnu_Unwind_Restore_WMMXC if required.
23730         (_Unwind_VRS_Pop): Implement iWMMXt support.
23731         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
23732         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
23733         gnu_Unwind_Save_WMMXC): Define.
23734
23735 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
23736
23737         * config/vxworks.h (vxworks_override_options): Declare.
23738         (VXWORKS_OVERRIDE_OPTIONS): Use it.
23739         * config/vxworks.c: Include target.h and toplev.h.
23740         (vxworks_override_options): New function.
23741         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
23742
23743 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
23744
23745         * config/s390/s390.c (override_options): Don't emit an error when
23746         -mstack-size is used without providing -mstack-guard.
23747         (s390_emit_prologue): Choose stack_guard value automatically if not
23748         provided via command line.
23749         * doc/invoke.texi: Adjust description of -mstack-guard and
23750         -mstack-size.
23751
23752 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
23753
23754         * config/i386/i386.c (output_set_got): Add a GOT initialization
23755         sequence for VxWorks PIC.
23756         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
23757         around labels as well as symbols.  Use gotoff_operand instead
23758         of local_symbolic_operand.
23759         (legitimize_pic_address): Use gotoff_operand instead of
23760         local_symbolic_operand.  Use @GOT accesses for labels as
23761         well as symbols.
23762         (ix86_output_addr_diff_elt): Use PC-relative rather than
23763         GP-relative offsets for VxWorks PIC.
23764         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
23765         no_new_pseudos.  Check whether the returned register is op0.
23766         * config/i386/i386.md (tablejump): Use PC-relative rather than
23767         GP-relative offsets for VxWorks PIC.
23768         * config/i386/predicates.md (gotoff_operand): New predicate.
23769
23770 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23771
23772         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
23773         before defining.
23774         * config/vxworks-dummy.h: New file.
23775         * config/i386/i386.h: Include it.
23776
23777 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
23778
23779         * dwarf2out.c (is_inlined_entry_point): New
23780         (add_high_low_attributes): Emit DW_AT_entry_pc along with
23781         DW_AT_ranges if the first subblock is the entry point.
23782
23783 2007-03-06  David Daney  <ddaney@avtrex.com>
23784
23785         * doc/install.texi (mips-*-*): Change recommended binutils
23786         version.
23787
23788 2007-03-06  Anatoly Sokolov <aesok@post.ru>
23789
23790         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
23791         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
23792         devices.
23793         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
23794         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
23795
23796 2007-03-06  Jan Hubicka  <jh@suse.cz>
23797
23798         * errors.h (warning, error, fatal, internal_error): Mark as cold.
23799         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
23800         functions are hot.
23801         (probably_cold_bb_p): Cold functions are cold.
23802         (probably_never_executed_bb_p): Cold functions are cold.
23803         (tree_bb_level_predictions): Predict calls to cold functions as not
23804         taken.
23805         (compute_function_frequency): Check hot/cold attributes.
23806         * function.h (function_frequency): Update comments.
23807         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
23808         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
23809         (c_common_att): Add cold and hot.
23810
23811         * doc/extend.texi (hot,cold attributes): Document.
23812
23813 2007-03-06  Andrew Haley  <aph@redhat.com>
23814
23815         * function.c (expand_function_end): Move blockage to just after we
23816         emit the label for the naked return from the function.
23817
23818 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23819
23820         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
23821         before redefining.
23822
23823 2007-03-06  Jan Hubicka  <jh@suse.cz>
23824
23825         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
23826         loaded for constant large models.  Non-large 64bit PIC can do.
23827         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
23828         * cmodel.h: Add LARGE PIC.
23829         * i386.md (UNSPEC_PLTOFF): New.
23830         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
23831         unspecs as needed.
23832         (*call_1_rex64): Disable for large models.
23833         (*call_1_rex64_large): New.
23834         (*call_value_1_rex64): Disable for large models.
23835         (*call_value_1_rex64_large): New.
23836         (set_rip_rex4): New.
23837         (set_got_offset_rex64): New.
23838         * predicates.md (constant_call_address_operand): For large model
23839         constant calls are not possible.
23840         * i386-protos.h (construct_plt_address): Declare.
23841         * i386.c (override_options): Accept large models.
23842         (ix86_expand_prologue): Expand large PIC GOT pointer load.
23843         (legitimate_constant_p): Add new UNSPECs.
23844         (legitimate_pic_operand_p): Likewise.
23845         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
23846         (legitimize_pic_address): Do easy RIP relative way for TLS only for
23847         non-large model.
23848         (output_pic_addr_const): Add PLTOFF.
23849         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
23850         (ix86_expand_move): Legitimize pic address when in PIC mode.
23851         (construct_plt_address): New function.
23852         (ix86_expand_call): Offload the address to register and use GOT
23853         pointer for large model.
23854         * invoke.texi (mcmodel=large): Update documentation.
23855
23856 2007-03-06  Richard Henderson  <rth@redhat.com>
23857
23858         * config/i386/i386.c (x86_use_leave, x86_push_memory,
23859         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
23860         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
23861         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
23862         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
23863         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
23864         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
23865         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
23866         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
23867         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
23868         x86_partial_reg_dependency, x86_memory_mismatch_stall,
23869         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
23870         x86_sse_partial_reg_dependency, x86_sse_split_regs,
23871         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
23872         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
23873         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
23874         x86_schedule, x86_use_bt, x86_pad_returns,
23875         x86_use_xchgb): Merge into ...
23876         (ix86_tune_features): ... here.  New array.
23877         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
23878         x86_bswap): Merge into ...
23879         (ix86_arch_features): ... here.  New array.
23880         (x86_3dnow_a): Remove.
23881         (x86_accumulate_outgoing_args): Make static.
23882         (x86_arch_always_fancy_math_387): Make static.
23883         (ix86_tune_mask, ix86_arch_mask): Move ...
23884         (override_options): ... to local variables here.  Apply the
23885         appropriate mask to each element of ix86_arch_features and
23886         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
23887         as were done in the old macros.
23888         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
23889         * config/i386/i386.h (x86_use_leave, x86_push_memory,
23890         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
23891         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
23892         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
23893         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
23894         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
23895         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
23896         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
23897         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
23898         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
23899         x86_partial_reg_dependency, x86_memory_mismatch_stall,
23900         x86_accumulate_outgoing_args, x86_prologue_using_move,
23901         x86_epilogue_using_move, x86_decompose_lea,
23902         x86_arch_always_fancy_math_387, x86_shift1,
23903         x86_sse_partial_reg_dependency, x86_sse_split_regs,
23904         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
23905         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
23906         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
23907         x86_use_incdec, x86_pad_returns, x86_bswap,
23908         x86_partial_flag_reg_stall): Remove.
23909         (enum ix86_tune_indices): New.
23910         (ix86_tune_features): New.
23911         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
23912         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
23913         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
23914         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
23915         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
23916         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
23917         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
23918         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
23919         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
23920         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
23921         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
23922         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
23923         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
23924         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
23925         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
23926         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
23927         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
23928         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
23929         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
23930         TARGET_EXT_80387_CONSTANTS): Use it.
23931         (enum ix86_arch_indices): New.
23932         (ix86_arch_features): New.
23933         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
23934         TARGET_BSWAP): Use it.
23935         (ix86_tune_mask, ix86_arch_mask): Remove.
23936
23937 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
23938
23939         PR bootstrap/31020
23940         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
23941         Define using $${sysroot_headers_suffix}.
23942         * configure: Regenerate.
23943         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
23944         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
23945         defined.
23946         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
23947         * gcc.c (print_sysroot_headers_suffix): New.
23948         (option_map): Include --print-sysroot-headers-suffix.
23949         (display_help): Mention -print-sysroot-headers-suffix.
23950         (process_command): Handle -print-sysroot-headers-suffix.
23951         (do_spec_1): Append multilib directory to include-fixed path if
23952         sysroot suffixes in use.
23953         (main): Handle -print-sysroot-headers-suffix.
23954         * Makefile.in (start.encap): Don't depend on xlimits.h
23955         (xlimits.h): Remove.
23956         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
23957         limits.h for each multilib in fixinc_list.
23958         (fixinc_list, s-fixinc_list): New.
23959         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
23960         generate them for each multilib in fixinc_list.
23961         (stmp-fixproto): Use include-fixed.  Run fixproto for each
23962         multilib in fixinc_list.
23963         (mostlyclean): Don't remove xlimits.h.
23964         (clean): Remove include-fixed.
23965         (real-install-headers-tar, real-install-headers-cpio,
23966         real-install-headers-cp): Don't copy include, only include-fixed.
23967         (install-mkheaders): Depend on fixinc_list.  Don't depend on
23968         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
23969         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
23970         SYSTEM_HEADER_DIR setting in mkheaders.conf.
23971
23972 2007-03-06  Jan Hubicka  <jh@suse.cz>
23973
23974         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
23975         NANs easilly.
23976
23977 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23978
23979         * configure.ac: Allow tm_file to contain build-directory files.
23980         * configure: Regenerate.
23981         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
23982         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
23983         * config/m68k/print-sysroot-suffix.sh: New file.
23984
23985 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23986
23987         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
23988         of pic_offset_table_rtx if reload_completed.
23989         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
23990         PIC_OFFSET_TABLE_REGNUM.
23991         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
23992         return true.
23993         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
23994         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
23995
23996 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23997
23998         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
23999         functions that call eh_return.
24000
24001 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24002
24003         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
24004         functions that need a constant pool.
24005
24006 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24007
24008         PR target/28181
24009         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
24010         (m68k_preferred_reload_class): Likewise.
24011         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
24012         (SECONDARY_RELOAD_CLASS): Define.
24013         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
24014         (LIMIT_RELOAD_CLASS): Delete.
24015         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
24016         registers from storing bytes.
24017         (m68k_secondary_reload_class): New function.
24018         (m68k_preferred_reload_class): Likewise.
24019
24020 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24021
24022         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
24023         leaf functions.
24024         (m68k_expand_prologue): Likewise.
24025
24026 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24027
24028         * config/m68k/m68k-protos.h (output_sibcall): Declare.
24029         (mips_expand_epilogue): Add a bool parameter.
24030         (m68k_legitimize_sibcall_address): Declare.
24031         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
24032         (m68k_expand_epilogue): Add a parameter to select between sibling
24033         and normal epilogues.  Only generate a return for the latter.
24034         (m68k_ok_for_sibcall_p): New function.
24035         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
24036         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
24037         (sibcall_value, *sibcall_value): Likewise.
24038         (*call, *call_value): Require !SIBLING_CALL_P.
24039         (epilogue): Update call to m68k_expand_epilogue.
24040         (sibcall_epilogue): New pattern.
24041         * config/m68k/predicates.md (const_call_operand): Say that this
24042         predicate applies to sibling calls too.
24043         (sibcall_operand): New predicate.
24044
24045 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24046
24047         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
24048         alternatives as movsi_cf.
24049         (movsf_cf_hard): Add commentary.
24050
24051 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
24052             Richard Sandiford  <richard@codesourcery.com>
24053
24054         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
24055         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
24056         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
24057         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
24058         as being live on exit from an interrupt function.
24059         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
24060         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
24061         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
24062         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
24063         (m68k_interrupt_function_p): Globalize.
24064         (m68k_compute_frame_layout): Remove reverse mask code.
24065         (m68k_emit_movem, m68k_set_frame_related): New functions.
24066         (m68k_output_function_prologue): Delete in favor of...
24067         (m68k_expand_prologue): ...this new function.
24068         (m68k_output_function_epilogue): Delete in favor of...
24069         (m68k_expand_epilogue): ...this new function.
24070         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
24071         functions.
24072         (print_operand): Handle %?.
24073         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
24074         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
24075         (prologue, epilogue): New patterns.
24076         (return): Turn into a define_expand.
24077         (*return): New pattern, derived from old "return" pattern.  Use rte
24078         rather than rts for interrupt functions.  Only use rtd if the pop
24079         count is nonzero.
24080         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
24081         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
24082         (link, *link, unlink, *unlink, load_got): Likewise.
24083
24084 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24085
24086         PR target/23482
24087         PR target/17114
24088         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
24089         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
24090         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
24091         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
24092         and m68k_matches_u_p.
24093         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
24094         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
24095         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
24096         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
24097         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
24098         (REG_STRICT_P): New macro.
24099         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
24100         PCREL_GENERAL_OPERAND_OK.
24101         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
24102         m68k_legitimate_base_reg_p.
24103         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
24104         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
24105         (PIC_CASE_VECTOR_ADDRESS): Update comment.
24106         * config/m68k/m68k.c (m68k_address): New structure.
24107         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
24108         (m68k_decompose_index, m68k_legitimate_constant_address_p)
24109         (m68k_jump_table_ref_p, m68k_decompose_address)
24110         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
24111         (m68k_matches_u_p): New functions.
24112         (print_operand_address): Rewrite to use m68k_decompose_index.
24113
24114 2007-03-05  David Taylor  <dtaylor@emc.com>
24115
24116         * gcc.c: Correct copyright date in --version output.
24117
24118 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24119
24120         * pa.md: In unamed move patterns, disparge copies between general
24121         and floating point registers using '?' modifier.  Don't include 'f'
24122         constraint for register preferences in DImode, SImode, HImode and
24123         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
24124         Remove constraints for copies between general and floating registers
24125         in soft-float DFmode pattern.
24126         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
24127         floating register.
24128         (movsf): Likewise.
24129
24130 2007-03-05  Mike Stump  <mrs@apple.com>
24131
24132         * c-common.c (targetcm): Add.
24133         * c-opts.c (c_common_handle_option): Handle language specific
24134         target options.
24135         * opts.c (handle_option): Verify language for target options, if
24136         any are given.
24137         * opth-gen.awk: Add CL_LANG_ALL.
24138         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
24139         (TARGETCM_INITIALIZER): Add.
24140         * target.h (struct gcc_targetcm): Add.
24141         (targetcm): Add.
24142         * targhooks.c (default_handle_c_option): Add.
24143         * targhooks.h (default_handle_c_option): Add.
24144         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
24145
24146         * config/darwin.opt (iframework): Add.
24147         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
24148         * config/darwin-c.c (handle_c_option): Add.
24149         (TARGET_HANDLE_C_OPTION): Add.
24150         (targetcm): Add.
24151         * doc/invoke.texi (Darwin Options): Add -iframework.
24152
24153 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24154
24155         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
24156         conversion.
24157
24158 2007-03-05  Ian Lance Taylor  <iant@google.com>
24159
24160         * c.opt (fgnu89-inline): New option.
24161         * c-opts.c (c_common_post_options): Set default value for
24162         flag_gnu89_inline.
24163         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
24164         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
24165         inline functions.
24166         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
24167         (grokdeclarator, start_function): Likewise.
24168         * c-cppbuiltin.c (c_cpp_builtins): Define either
24169         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
24170         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
24171         (C Dialect Options): Document -fgnu89-inline.
24172         * doc/extend.texi (Function Attributes): Explain what the
24173         gnu_inline attribute does.
24174         * doc/cpp.texi (Common Predefined Macros): Document
24175         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
24176
24177 2007-03-05  Ian Lance Taylor  <iant@google.com>
24178
24179         PR tree-optimization/31034
24180         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
24181         half-range if the other side is an overflow infinity.
24182
24183 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
24184
24185         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
24186         (bfin*-linux-uclibc*): New configuration.
24187         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
24188         defining.
24189         * config/bfin/linux.h: New file.
24190         * config/bfin/libgcc-bfin.ver: New file.
24191         * config/bfin/t-bfin-uclinux: New file.
24192         * config/bfin/t-bfin-linux: New file.
24193         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
24194         (TARGET_OS_CPP_BUILTINS): New macro.
24195
24196 2007-03-05  Richard Guenther  <rguenther@suse.de>
24197
24198         * fold-const.c (fold_binary): Remove duplicate folding
24199         of comparison of non-null ADDR_EXPR against null.
24200
24201 2007-03-05  Richard Guenther  <rguenther@suse.de>
24202             Dorit Nuzman  <dorit@il.ibm.com>
24203
24204         PR tree-optimization/26420
24205         * tree-vectorizer.c (vectorize_loops): Bail out early if there
24206         are no loops in the function.  Only print the number of
24207         vectorized loops if it is greater than zero or we are supposed
24208         to print information about unvectorized loops.
24209
24210 2007-03-05  Revital Eres  <eres@il.ibm.com>
24211
24212         * gcc.dg/var-expand1.c: New test.
24213         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
24214         when an accumulator is expanded.
24215
24216 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24217
24218         PR other/30465
24219         * c-common.c (convert_and_check): Don't give warnings for
24220         conversion if 'expr' already overflowed.
24221
24222 2007-03-04  Roger Sayle  <roger@eyesopen.com>
24223
24224         PR middle-end/30744
24225         * fold-const.c (fold_comparison): Enforce type consistency when
24226         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
24227
24228 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
24229
24230         * tree-ssa-address.c (create_mem_ref): Do not put an expression
24231         containing a cast to the base of TARGET_MEM_REF.
24232
24233 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
24234
24235         * tree.c (tree_contains_struct_check_failed): Remove spurious
24236         whitespace from error message.
24237
24238 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
24239
24240         PR target/30406
24241         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
24242         instead of precision.
24243
24244 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
24245             Nathan Sidwell  <nathan@codesourcery.com>
24246
24247         * emit-rtl.c (find_auto_inc): New.
24248         (try_split): recreate REG_INC notes,
24249         Use regular for loops rather than whiles.
24250
24251 2007-03-03  Andreas Schwab  <schwab@suse.de>
24252
24253         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
24254         * configure: Regenerate.
24255
24256 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24257
24258         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
24259         flag_rounding_math, not flag_unsafe_math_optimizations.
24260
24261         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
24262         fold_build2.
24263         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
24264         alpha_fold_vector_minmax): Likewise.
24265         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
24266         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
24267
24268 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
24269
24270         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
24271         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
24272         if the lhs has side-effects.
24273         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
24274
24275 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
24276
24277         * config/i386/i386.h (TUNEMASK): Remove define.
24278         (ARCHMASK): Remove define.
24279         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
24280          Use ix86_arch_mask variable instead of ARCHMASK.
24281         * config/i386/i386.c (override_options): Ditto.
24282         (standard_80387_constant_p): Ditto.
24283
24284 2007-03-02  Ian Lance Taylor  <iant@google.com>
24285
24286         Used signed infinities in VRP.
24287         * tree-vrp.c (uses_overflow_infinity): New static function.
24288         (supports_overflow_infinity): New static function.
24289         (make_overflow_infinity): New static function.
24290         (negative_overflow_infinity): New static function.
24291         (positive_overflow_infinity): New static function.
24292         (is_negative_overflow_infinity): New static function.
24293         (is_positive_overflow_infinity): New static function.
24294         (is_overflow_infinity): New static function.
24295         (overflow_infinity_range_p): New static function.
24296         (compare_values_warnv): New function split out of compare_values.
24297         (compare_value): Call it.
24298         (set_value_range_to_nonnegative): Add overflow_infinity
24299         parameter.  Change caller.
24300         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
24301         Change callers.
24302         (vrp_expr_computes_nonzero): Likewise.
24303         (compare_ranges, compare_range_with_value): Likewise.
24304         (compare_name_with_value, compare_names): Likewise.
24305         (vrp_evaluate_conditional): Likewise.
24306         (set_value_range): Handle infinity
24307         (vrp_operand_equal_p, operand_less_p): Likewise.
24308         (extract_range_from_assert): Likewise.
24309         (vrp_int_const_binop): Likewise.
24310         (extract_range_from_binary_expr): Likewise.
24311         (extract_range_from_unary_expr): Likewise.
24312         (extract_range_from_comparison): Likewise.
24313         (extract_range_from_expr): Likewise.
24314         (dump_value_range): Likewise.
24315         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
24316         (test_for_singularity): Likewise.
24317         (vrp_int_const_binop): Remove inline qualifier.
24318         (adjust_range_with_scev): Add comment.
24319         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
24320
24321 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
24322
24323         * tree-ssa-structalias.c (could_have_pointers): Tidy.
24324         (get_constraint_for): Likewise.
24325         (do_structure_copy): Likewise.
24326         (find_func_aliases): Fix references to MODIFY_EXPR.
24327         (intra_create_variable_infos): Tidy.
24328         * tree-ssa-operands.c (add_virtual_operand): Add argument
24329         IS_CALL_SITE.
24330         When adding members of alias sets, if IS_CALL_SITE is true and
24331         the symbol is not call-clobbered, skip it.
24332         Adjust all callers.
24333
24334 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
24335
24336         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
24337         entry by means of emit_insn_at_entry.
24338
24339 2007-03-02  Richard Henderson  <rth@redhat.com>
24340
24341         * expr.h (promoted_input_arg): Remove decl.
24342         * function.c (promoted_input_arg): Merge into ...
24343         * combine.c (setup_incoming_promotions): ... only caller.
24344         Rearrange to avoid double loop.
24345
24346 2007-03-02  Ben Elliston  <bje@au.ibm.com>
24347             Peter Bergner  <bergner@vnet.ibm.com>
24348             Janis Johnson  <janis187@us.ibm.com>
24349
24350         * config/rs6000/dfp.md: New file.
24351         * config/rs6000/rs6000.md: Include dfp.md.
24352         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
24353         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
24354         and TDmode decimal float modes in FP registers.
24355         (num_insns_constant): Likewise.
24356         (rs6000_legitimate_offset_address_p): Likewise.
24357         (rs6000_legitimize_address): Likewise.
24358         (rs6000_legitimize_reload_address): Likewise.
24359         (rs6000_legitimate_address): Likewise.
24360         (rs6000_emit_move): Likewise.
24361         (function_arg_boundary): Likewise.
24362         (function_arg_advance): Likewise.
24363         (rs6000_darwin64_record_arg_recurse): Likewise.
24364         (function_arg): Likewise.
24365         (rs6000_gimplify_va_arg): Likewise.
24366         (rs6000_split_multireg_move): Likewise.
24367         (rs6000_output_function_epilogue): Likewise.
24368         (rs6000_output_function_epilogue): Likewise.
24369         (rs6000_register_move_cost): Likewise.
24370         (rs6000_function_value): Likewise.
24371         (rs6000_libcall_value): Likewise.
24372
24373 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
24374
24375         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
24376
24377 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
24378
24379         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
24380         Use $MULTIDIR to choose between the kernel and RTP headers,
24381         and use $WIND_BASE and $WIND_USR to locate them.
24382
24383 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
24384
24385         * config/i386/i386.c (override_options): Put initialization of
24386         ix86_tune_mask and ix86_arch_mask to the correct place.
24387
24388 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
24389             Michael Meissner  <michael.meissner@amd.com>
24390
24391         PR target/31019
24392         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
24393         (ARCHMASK): Define.
24394         (TARGET_CMOVE): Use ARCHMASK.
24395         (TARGET_CMPXCHG): Ditto.
24396         (TARGET_CMPXCHG8B): Ditto.
24397         (TARGET_XADD): Ditto.
24398         (TARGET_BSWAP): Ditto.
24399         * config/i386/i386.c (ix86_tune_mask): New global variable.
24400         (ix86_arch_mask): Ditto.
24401         (override_options): Initialize ix86_tune_mask and
24402         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
24403         target_flags.
24404
24405 2007-03-02  Ben Elliston  <bje@au.ibm.com>
24406
24407         PR 30992
24408         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
24409
24410 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
24411
24412         * target.h (init_dwarf_reg_sizes_extra): New target hook.
24413         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
24414         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
24415         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
24416         hook.
24417         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
24418         rs6000_init_dwarf_reg_sizes_extra): New.
24419         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
24420         SPE register high parts.
24421
24422 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
24423
24424         * Makefile.in: Add install-pdf target as
24425         copied from automake v1.10 rules.
24426         * configure.ac: Add install-pdf to target list.
24427         * configure: Regenerate.
24428
24429 2007-03-01  Paul Brook  <paul@codesourcery.com>
24430
24431         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
24432         modes to LDRD for DImode.
24433         (output_move_double): Fixup out of range ldrd/strd.
24434         (vfp_secondary_reload_class): Rename...
24435         (coproc_secondary_reload_class): ... to this.  Add wb argument.
24436         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
24437         coproc_secondary_reload_class for CLASS_IWMMXT.
24438         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
24439         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
24440
24441 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
24442
24443         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
24444         unroll factor by the estimated number of iterations.
24445         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
24446         than prefetch latency.
24447
24448         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
24449         decode_caches_intel, detect_caches_intel): New functions.
24450         (host_detect_local_cpu): Use detect_caches_amd and
24451         detect_caches_intel.
24452
24453 2007-03-01  Richard Henderson  <rth@redhat.com>
24454
24455         * expr.c (emit_move_complex_push): Export.
24456         (emit_move_complex_parts): Split out from ...
24457         (emit_move_complex): ... here.
24458         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
24459         * config/i386/i386.md (movcdi): New.
24460
24461 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
24462
24463         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
24464         size of mode1 to check for tieable modes in MMX case.
24465
24466 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
24467
24468         * Makefile.in (rtlanal.o): Depend on tree.h.
24469         * rtl.h (offset_within_section_p, split_const): Declare.
24470         * rtlanal.c: Include tree.h.
24471         (offset_within_block_p): New function, taken from
24472         mips_offset_within_object_p.
24473         (split_const): New function, taken from mips_split_const.
24474         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
24475         Declare.
24476         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
24477         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
24478         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
24479         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
24480         (m68k_illegitimate_symbolic_constant_p): New function.
24481         * config/m68k/m68k.md (movsi): Remove misleading predicates.
24482         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
24483         symbolic constant that might be outside the symbol's section,
24484         move the symbol first and then add the offset.
24485         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
24486         Override.
24487         * config/mips/mips.c (mips_split_const): Delete.
24488         (mips_offset_within_object_p): Delete.
24489         (mips_symbolic_constant_p): Use offset_within_section_p and
24490         split_const instead of mips_offset_within_object_p and
24491         mips_split_const.
24492         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
24493         (mips_legitimize_const_move, print_operand_reloc)
24494         (mips_dangerous_for_la25_p): Use split_const instead of
24495         mips_split_const.
24496
24497 2007-02-28  Eric Christopher  <echristo@apple.com>
24498
24499         * Makefile.in (install-include-dir): Don't rm -rf include.
24500
24501 2007-02-28  Richard Guenther  <rguenther@suse.de>
24502
24503         PR middle-end/30364
24504         * fold-const.c (fold_binary): Do not associate expressions
24505         with more than one variable for integer types that do not wrap.
24506
24507 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
24508
24509         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
24510         Delete, and replace with...
24511         (fold_builtin_call_array): This.  Update callers to use it.
24512         * fold-const.c (fold_build_call_list): Delete, and replace with...
24513         (fold_build_call_array): This.
24514         (fold_build_call_list_initializer): Delete, and replace with...
24515         (fold_build_call_array_initializer): This.
24516         * tree.h: Update declarations to reflect above changes.
24517
24518         * c-typeck.c (build_function_call): Store converted arguments
24519         in a stack-allocated array instead of building a list.
24520         (convert_arguments): Store arguments in the array passed in as an
24521         argument, and return the actual number of arguments.
24522         * c-format.c: (check_function_format): Pass arguments in an
24523         array instead of a list.
24524         * c-common.c (check_function_nonnull): Likewise.
24525         (check_function_sentinel): Likewise.
24526         (check_function_arguments): Likewise.
24527         * c-common.h: Update declarations to reflect above changes.
24528
24529 2007-02-28  Jan Hubicka  <jh@suse.cz>
24530
24531         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
24532         PRED_NEGATIVE_RETURN): Update outcomes.
24533
24534 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
24535
24536         * calls.c (emit_library_call_value_1): Handle partial registers
24537         correctly when building up CALL_INSN_FUNCTION_USAGE.
24538
24539 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24540
24541         * pa/predicates.md (move_src_operand): Allow zero for mode.
24542         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
24543         move pattern.
24544
24545 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
24546
24547         PR target/30970
24548         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
24549         *movv2df_internal): Enable pattern only for valid operand
24550         combinations.
24551         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
24552         tie only 128bit modes. For MMX registers, tie only 64bit modes.
24553
24554 2007-02-27  Mike Stump  <mrs@apple.com>
24555
24556         * config/darwin-crt3.c: Avoid compilation when compiling for a
24557         kext multilib.
24558
24559 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
24560
24561         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
24562         FIXED_INCLUDE_DIR.
24563         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
24564         for fixed headers and limits.h.
24565         (install-include-dir, install-headers-tar, install-headers-cpio,
24566         install-headers-cp, real-install-headers-tar,
24567         real-install-headers-cpio, real-install-headers-cp): Handle
24568         include-fixed as well as include.
24569         (install-mkheaders): Don't install files that go only in include
24570         not include-fixed.
24571         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
24572         from GCC_INCLUDE_DIR.
24573         * gcc.c (process_command): Remove special -BstageN/ handling.
24574         (do_spec_1): Add include-fixed directories.
24575
24576 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
24577
24578         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
24579         _smulsi3_highpart.
24580         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
24581         New functions.
24582         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
24583         patterns.
24584
24585 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
24586
24587         * c-common.c (get_priority): Add check for
24588         SUPPORTS_INIT_PRIORITY.
24589
24590 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
24591
24592         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
24593
24594         * config/bfin/bfin.c: Include "cfglayout.h".
24595         (MAX_LSETUP_DISTANCE): New macro.
24596         (struct loop_info): New members incoming, incoming_src and
24597         incoming_dest.  Delete member predecessor.
24598         (length_for_loop): New function.
24599         (bfin_optimize_loop): Handle more different loop structures.
24600         (bfin_discover_loop): Rework detection of predecessor blocks by
24601         examining incoming edges.
24602         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
24603         bfin_reorg_loops.
24604         (bfin_reorder_loops): New function.
24605         (bfin_reorg_loops): Use these three new functions.
24606
24607         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
24608         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
24609         (CONSTRAINT_LEN): Add entry for 'q'.
24610         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
24611         Add 'q' constraints.
24612         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
24613         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
24614
24615         * config/bfin/bfin.md (add_with_carry): New pattern.
24616         (s_or_u, su_optab, su_modifier): New code macros/attrs.
24617         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
24618         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
24619         support unsigned multiplies too.  Removed incorrect commutativity from
24620         operand 1 constraint where appropriate.
24621         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
24622         patterns.
24623         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
24624         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
24625         New patterns.
24626         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
24627         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
24628         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
24629         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
24630         usmulhisi_hh_huh): New patterns.
24631
24632         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
24633         lshifthi3): Fix output template to use half reg for operand 2.
24634
24635         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
24636         instead of R2.
24637
24638         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
24639
24640 2007-02-27  Andreas Schwab  <schwab@suse.de>
24641
24642         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
24643
24644 2007-02-27  Jan Hubicka  <jh@suse.cz>
24645
24646         * predict.c (last_basic_block_p): Remove.
24647         (tree_estimate_probability): Update return heuristic for commonized
24648         return blocks.
24649
24650 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
24651
24652         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
24653
24654 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
24655
24656         * doc/include/gcc-common.texi (versionsubtitle): New macro.
24657         * doc/cpp.texi: Standardize title page.
24658         * doc/cppinternals.texi: Likewise.
24659         * doc/gcc.texi: Standardize title page, remove version number
24660         from copyright page.
24661         * doc/gccint.texi: Likewise.
24662         * doc/install.texi: Standardize title page, add table of
24663         contents.
24664
24665 2007-02-26  Jan Hubicka  <jh@suse.cz>
24666
24667         * predict.def: Set outcomes according to more recent results.
24668         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
24669         Remove dead predictors.
24670         * predict.c (return_prediction): Fix pasto.
24671
24672 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
24673
24674         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
24675         change; avoid a memory leak when returning early.
24676
24677 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
24678
24679         * c-decl.c (static_ctors): Move to c-common.c.
24680         (static_dtors): Likewise.
24681         (finish_function): Use c_record_cdtor_fn.
24682         (build_cdtor): Move to c-common.c.
24683         (c_write_global_declarations): Use c_build_cdtor_fns.
24684         * c-common.h (static_ctors): Declare.
24685         (static_dtors): Likewise.
24686         (c_record_cdtor_fn): Likewise.
24687         (c_build_cdtor_fns): Likewise.
24688         * c-common.c (static_ctors): New variable.
24689         (static_dtors): Likewise.
24690         (c_record_cdtor_fn): New function.
24691         (build_cdtor): Move from c-decl.c
24692         (c_build_cdtor_fns): New function.
24693
24694         * output.h (assemble_addr_to_section): Declare.
24695         (get_cdtor_priority_section): Likewise.
24696         * varasm.c (assemble_addr_to_section): New function.
24697         (get_cdtor_priority_section): Likewise.
24698         (default_named_section_asm_out_destructor): Use them.
24699         (destor_dtor_section_asm_out_destructor): Likewise.
24700         (default_named_section_asm_out_constructor): Likewise.
24701         (default_ctor_section_asm_out_constructor): Likewise.
24702         * config.gcc (*-*-vxworks*): Include vxworks.o.
24703         * config/t-vxworks (vxworks.o): New target.
24704         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
24705         (TARGET_ASM_CONSTRUCTOR): Define.
24706         (TARGET_ASM_DESTRUCTOR): Likewise.
24707         (vxworks_asm_out_constructor): Declare.
24708         (vxworks_asm_out_destructor): Likewise.
24709
24710         * c-common.c (get_priority): Check that we have not just an
24711         INTEGER_CST, but an integer constant with integeral type.
24712
24713 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
24714
24715         PR tree-optimization/30938
24716         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
24717         use &dt[nargs-1] instead of &dt[nargs] in the call to
24718         vect_is_simple_use().
24719
24720 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
24721
24722         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
24723         from register elimination as PRE_MODIFY / POST_MODIFY increments.
24724         Do not attempt to handle MEM inside auto-inc expressions.
24725         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
24726         of a register modified by an auto-inc expression.  However, do handle
24727         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
24728         (elimination_effects): Prohibit elimination of a register modified
24729         by an auto-inc expression.  Disable register elimination rules whose
24730         target register is modified by an auto-inc expression with variable
24731         increment.
24732
24733 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
24734
24735         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
24736         off-by-one error.
24737         (array_at_struct_end_p): New function.
24738         (idx_infer_loop_bounds): Use it.
24739         (estimate_numbers_of_iterations_loop): Export.
24740         * predict.c (predict_loops): Use estimated_loop_iterations_int.
24741         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
24742         (tree_estimate_probability): Call record_loop_exits.
24743         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
24744         (estimated_loop_iterations, estimated_loop_iterations_int,
24745         estimated_loop_iterations_tree): New functions.
24746         (analyze_siv_subscript_cst_affine,
24747         compute_overlap_steps_for_affine_1_2,
24748         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
24749         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
24750         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
24751         (PRED_LOOP_ITERATIONS_GUESSED): New.
24752         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
24753         * cfgloop.h (estimate_numbers_of_iterations_loop,
24754         estimated_loop_iterations_int): Declare.
24755
24756 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
24757
24758         * doc/extend.texi: Document optional priority argument to
24759         constructors and destructors.
24760         * tree.c (init_priority_for_decl): Adjust GTY markers.
24761         (init_ttree): Use priority-info hash functions for
24762         init_priority_for_decl.
24763         (tree_map_eq): Rename to ...
24764         (tree_map_base_eq): ... this.
24765         (tree_map_marked_p): Rename to ...
24766         (tree_map_base_marked_p): ... this.
24767         (tree_map_base_hash): New function.
24768         (decl_init_priority_lookup): Rework.
24769         (decl_fini_priority_lookup): New function.
24770         (decl_priority_info): New function.
24771         (decl_init_priority_insert): Use it.
24772         (decl_fini_priority_insert): Likewise.
24773         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
24774         hierarchy.
24775         (decl_restrict_base_insert): Likewise.
24776         (decl_debug_expr_insert): Likewise.
24777         (decl_value_expr_lookup): Likewise.
24778         (decl_value_expr_insert): Likewise.
24779         * tree.h (priority_type): New type.
24780         (decl_init_priority_lookup): Use priority_type.
24781         (decl_fini_priority_lookup): New function.
24782         (decl_init_priority_insert): Use priority_type.
24783         (decl_fini_priority_insert): New function.
24784         (DECL_HAS_INIT_PRIORITY): Tweak comments.
24785         (DECL_INIT_PRIORITY): Likewise.
24786         (SET_DECL_INIT_PRIORITY): Add comment.
24787         (DECL_FINI_PRIORITY): New macro.
24788         (SET_DECL_FINI_PRIORITY): Likewise.
24789         (DEFAULT_INIT_PRIORITY): Document.
24790         (MAX_INIT_PRIORITY): Likewise.
24791         (MAX_RESERVED_INIT_PRIORITY): Likewise.
24792         (tree_map_base): New type.
24793         (tree_map_base_eq): New function.
24794         (tree_map_base_hash): Likewise.
24795         (tree_map_base_marked_p): Likewise.
24796         (tree_map): Inherit from tree_map_base.
24797         (tree_map_eq): Make it a macro.
24798         (tree_map_marked_p): Likewise.
24799         (tree_int_map): Inherit from tree_map_base.
24800         (tree_int_map_eq): Make it a macro.
24801         (tree_int_map_hash): Likewise.
24802         (tree_int_map_marked_p): Likewise.
24803         (tree_priority_map): New type.
24804         (tree_priority_map_eq): New macro.
24805         (tree_priority_map_hash): Likewise.
24806         (tree_priority_map_marked_p): Likewise.
24807         * varasm.c (emults_decl): Adjust for refactoring of tree_map
24808         hierarchy.
24809         (emutls_common_1): Likewise.
24810         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
24811         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
24812         of tree_map hierarchy.
24813         * tree-cfg.c (move_stmt_r): Likewise.
24814         (new_label_mapper): Likewise.
24815         * c-tree.h (c_expand_body): Move to ...
24816         * c-common.h (c_expand_body): ... here.
24817         * c-decl.c (c_expand_body): Move to ...
24818         * c-common.c (c_expand_body): ... here.
24819         (c_common_attribute_table): Allow 1 argument for the constructor
24820         and destructor attributes.
24821         (get_priority): New function.
24822         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
24823         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
24824
24825 2007-02-24  Jan Hubicka  <jh@suse.cz>
24826
24827         PR middle-end/30509
24828         * tree-inline.c (copy_bb): Produce exact copy of EH info when
24829         copying for inlining.
24830
24831 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
24832             Jan Hubicka  <jh@suse.cz>
24833
24834         PR target/30778
24835         * i386.c (counter_mode): New function.
24836         (expand_set_or_movmem_via_loop): Use it.
24837         (expand_movmem_epilogue): Likewise; fix pasto.
24838         (ix86_expand_movmem): Do emit guard even for constant counts.
24839         (ix86_expand_setmem): Likewise.
24840
24841 2007-02-25  Nick Clifton  <nickc@redhat.com>
24842
24843         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
24844         (JUMP_TABLES_IN_TEXT_SECTION): Define.
24845
24846 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
24847
24848         PR target/30770
24849         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
24850         count argument with 0x10, not with 0x16.
24851         (expand_setmem_epilogue): Ditto.
24852
24853 2007-02-24  Mike Stump  <mrs@apple.com>
24854
24855         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
24856         symbols.
24857
24858 2007-02-24  Richard Guenther  <rguenther@suse.de>
24859
24860         PR middle-end/30951
24861         * fold-const.c (fold_binary): Fold x +- CST op x for
24862         EQ_EXPR and NE_EXPR.
24863
24864 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24865
24866         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
24867
24868 2007-02-24  Jan Hubicka  <jh@suse.cz>
24869
24870         * cgraphunit.c (decide_is_function_needed): Honor
24871         -fkeep-inline-functions.
24872
24873 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24874
24875         * builtins.c (fold_builtin_modf): New.
24876         (fold_builtin_2): Use it.
24877
24878 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
24879
24880         * loop-iv.c (implies_p): Detect additional cases where A implies B.
24881         (determine_max_iter): Take additional LOOP arg; all callers changed.
24882         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
24883         one using simplifications.
24884         (simplify_using_initial_values): Return if the expression becomes
24885         invalid due to altered regs.
24886
24887 2007-02-23  DJ Delorie  <dj@redhat.com>
24888
24889         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
24890
24891 2007-02-23  Mike Stump  <mrs@apple.com>
24892
24893         * tlink.c (scan_linker_output): Parse linker messages from
24894         darwin9's linker better.
24895
24896 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
24897
24898         PR debug/29614
24899         * varpool.c (varpool_assemble_pending_decls): Set
24900         varpool_last_needed_node to null.
24901
24902 2007-02-23  DJ Delorie  <dj@redhat.com>
24903
24904         * config/i386/i386.c (ix86_data_alignment): Don't specify an
24905         alignment bigger than the object file can handle.
24906
24907 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
24908
24909         PR target/30825
24910         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
24911         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
24912         (*movsf_1): Penalize MMX moves.
24913
24914 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
24915
24916         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
24917         2^32-1 or more times unless flag_unsafe_loop_optimizations.
24918
24919         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
24920
24921 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24922
24923         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
24924         (fold_builtin_1): Use them.
24925         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
24926         BUILT_IN_SIGNIFICAND.
24927
24928 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
24929
24930         * config/i386/i386.c (bdesc_1arg): Initialize
24931         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
24932         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
24933         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
24934         and IX86_BUILTIN_MOVSLDUP.
24935
24936 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
24937
24938         PR rtl-optimization/30841
24939         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
24940
24941 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24942
24943         * builtins.c (fold_builtin_frexp): New.
24944         (fold_builtin_2): Use it.
24945
24946 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
24947
24948         * doc/invoke.texi (Spec Files): Document getenv spec function.
24949
24950         * gcc.c (getenv_spec_function): New function.
24951         (static_spec_functions): Add it.
24952         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
24953         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
24954         header files.
24955
24956 2007-02-22  Michael Matz  <matz@suse.de
24957
24958         PR c++/29433
24959         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
24960         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
24961
24962 2007-02-22  Ian Lance Taylor  <iant@google.com>
24963
24964         PR debug/30898
24965         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
24966         (mem_loc_descriptor): Call it.
24967
24968 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
24969             Ira Rosen  <irar@il.ibm.com>
24970
24971         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
24972
24973 2007-02-22  Ira Rosen  <irar@il.ibm.com>
24974
24975         PR tree-optimization/30843
24976         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
24977         stores only after all the group is vectorized.
24978
24979 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
24980
24981         PR tree-optimization/30858
24982         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
24983         in the reduction cycle have a single use in the loop.
24984         * tree-vectorizer.h (relevant): Add documentation.
24985
24986 2007-02-20  Mike Stump  <mrs@apple.com>
24987
24988         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
24989         * configure: Regenerate.
24990
24991 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24992
24993         Change the defaults of some parameters and options.
24994         * config/spu/spu-protos.h (spu_optimization_options): Declare.
24995         * config/spu/spu.c (spu_optimization_options): Add.
24996         (spu_override_options): Change params in spu_optimization_options.
24997         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
24998
24999         Register 127 is only 16 byte aligned when used as a frame pointer.
25000         * config/spu/spu-protos.h (spu_init_expanders): Declare.
25001         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
25002         HARD_FRAME_POINTER_REGNUM.
25003         (spu_legitimate_address): Use regno_aligned_for_reload.
25004         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
25005         aligned when frame_pointer_needed is true.
25006         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
25007         to 8 bits.
25008         * config/spu/spu.h (INIT_EXPANDERS): Define.
25009
25010         Make sure shift and rotate instructions have valid immediate operands.
25011         * config/spu/predicates.md (spu_shift_operand): Remove.
25012         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
25013         * config/spu/constraints.md (W, O): Extend range.
25014         * config/spu/spu.md (umask, nmask): Define.
25015         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
25016         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
25017         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
25018         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
25019         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
25020         (lshr<mode>3_reg): Fix rtl description.
25021
25022         Make sure mulhisi immediate operands are valid.
25023         * config/spu/predicates.md (imm_K_operand): Add.
25024         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
25025
25026         Generate constants using fsmbi and andi.
25027         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
25028         (print_operand, spu_split_immediate, classify_immediate,
25029         fsmbi_const_p): Handle IC_FSMBI2.
25030
25031         Correctly handle a CONST_VECTOR containing symbols.
25032         * config/spu/spu.c (print_operand): Handle HIGH correctly.
25033         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
25034         (immediate_load_p): Allow symbols that use 2 instructions to create.
25035         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
25036         with symbols when flag_pic is set.
25037         (const_vector_immediate_p): New.
25038         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
25039         accept a CONST_VECTOR with symbols.
25040         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
25041         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
25042         correctly.
25043         * config/spu/spu.md (high, low): Delete.
25044         (low_<mode>): Define.
25045
25046         Remove INTRmode and INTR_REGNUM, which didn't work.
25047         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
25048         of INTR_REGNUM.
25049         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
25050         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
25051         peephole2 pattern): Don't use INTR or 131.
25052         (movintrcc): Delete.
25053         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
25054         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
25055         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
25056         (UNSPEC_SET_INTR): Add.
25057         * config/spu/spu-modes.def (INTR): Remove.
25058
25059         More accurate warnings about run-time relocations.
25060         * config/spu/spu.c (reloc_diagnostic): Test in_section.
25061
25062         Correctly warn about immediate arguments to specific intrinsics.
25063         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
25064         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
25065         the instruction predicate.
25066
25067         Fix tree check errors with latest update.
25068         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
25069         CALL_EXPR_ARG.
25070         (spu_expand_builtin): Use CALL_EXPR_FN.
25071
25072         Add missing specific intrinsics.
25073         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
25074         si_bislede.
25075         * config/spu/spu_internals.h: Ditto.
25076
25077         Fix incorrect operand modifiers.
25078         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
25079         * config/spu/spu.md (xor<mode>3): Change %S to %J.
25080
25081         Optimize one case of zero_extend of a vec_select.
25082         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
25083
25084         Accept any immediate for hbr.
25085         * config/spu/spu.md (hbr): Change s constraints to i.
25086
25087 2007-02-21  Paul Brook  <paul@codesourcery.com>
25088
25089         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
25090         condexec_count when skipping USE and CLOBBER.
25091
25092 2007-02-21  Nick Clifton  <nickc@redhat.com>
25093
25094         * common.opt (Warray-bounds): Add Warning attribute.
25095         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
25096         Likewise.
25097         (fsized-zeroes): Add Optimization attribute.
25098         (fsplit-wide-types, ftree-scev-cprop): Likewise.
25099         * c.opt (Wc++0x-compat): Add Warning attribute.
25100
25101 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
25102
25103         PR middle-end/30761
25104         * reload1.c (eliminate_regs_in_insn): In the single_set special
25105         case, attempt to re-recognize the insn before falling back to
25106         having reload fix it up.
25107
25108 2007-02-20  Eric Christopher  <echristo@gmail.com>
25109
25110         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
25111         Rewrite accordingly.
25112         (frv_read_iacc_argument): Ditto.
25113         (frv_expand_set_builtin): Take a call instead of arglist, update for
25114         above changes.
25115         (frv_expand_unop_builtin): Ditto.
25116         (frv_expand_binop_builtin): Ditto.
25117         (frv_expand_cut_builtin): Ditto.
25118         (frv_expand_binopimm_builtin): Ditto.
25119         (frv_expand_voidbinop_builtin): Ditto.
25120         (frv_expand_int_void2arg): Ditto.
25121         (frv_expand_prefetches): Ditto.
25122         (frv_expand_voidtriop_builtin): Ditto.
25123         (frv_expand_voidaccop_builtin): Ditto.
25124         (frv_expand_load_builtin): Ditto.
25125         (frv_expand_store_builtin): Ditto.
25126         (frv_expand_mdpackh_builtin): Ditto.
25127         (frv_expand_mclracc_builtin): Ditto.
25128         (frv_expand_mrdacc_builtin): Ditto.
25129         (frv_expand_mwtacc_builtin): Ditto.
25130         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
25131         calls for above.
25132
25133 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
25134
25135         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
25136         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
25137         cmpb instruction.
25138         (HAVE_GAS_DFP): Check for assembler support of decimal floating
25139         point instructions.
25140         * configure: Regenerate.
25141         * config.in: Regenerate.
25142         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
25143         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
25144         masks to power6 and power6x and to POWERPC_MASKS.
25145         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
25146         _ARCH_PWR6.
25147         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
25148         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
25149         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
25150         Access PROTOTYPE as variable, not mask.
25151
25152 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
25153
25154         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
25155         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
25156         * combine.c (adjust_for_new_dest): Use it.
25157         * postreload.c (reload_combine): Likewise.
25158
25159 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
25160
25161         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
25162         notes on an insn with multiple sets, even if single_set returns
25163         non-NULL for that insn.
25164
25165 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25166
25167         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
25168         scalbn and scalbln.
25169
25170 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
25171
25172         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
25173         if user didn't pass it.
25174         * config/i386/darwin.h (CC1_SPEC): Likewise.
25175         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
25176         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
25177         -mmacosx-version-min.
25178
25179 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25180             Uros Bizjak  <ubizjak@gmail.com>
25181
25182         * optabs.h (enum optab_index): Add new OTI_scalb.
25183         (scalb_optab): Define corresponding macro.
25184         * optabs.c (init_optabs): Initialize scalb_optab.
25185         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
25186         patterns.
25187         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
25188         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
25189         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
25190         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
25191         flag_unsafe_math_optimizations is set.
25192
25193         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
25194         to implement scalbf, scalb and scalbl built-ins as inline x87
25195         intrinsics.
25196
25197 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25198             DJ Delorie <dj@redhat.com>
25199
25200         PR other/30824
25201         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
25202         (diagnostic_report_diagnostic): ... here, and turn them into real
25203         errors. If warnings are inhibited, no need to do anything.
25204
25205 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
25206
25207         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
25208         better code generation.
25209
25210 2007-02-20  Ben Elliston  <bje@au.ibm.com>
25211
25212         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
25213
25214 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
25215
25216         * config/alpha/alpha.c, config/alpha/alpha.md,
25217         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
25218         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
25219         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
25220         config/arm/lib1funcs.asm: Follow spelling conventions.
25221
25222         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
25223         config/fr30/fr30.md, config/i386/i386.h,
25224         config/iq2000/iq2000.h, config/iq2000/predicates.md,
25225         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
25226         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
25227         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
25228         config/rs6000/altivec.md, config/rs6000/rs6000.c,
25229         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
25230         config/sparc/sparc.c, config/sparc/sparc.h,
25231         config/sparc/sparc.md, config/spu/constraints.md,
25232         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
25233         conventions.
25234
25235 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
25236
25237         PR target/29943
25238         * varasm.c (use_blocks_for_decl_p): Return false for decls with
25239         alias attribute.
25240
25241 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
25242
25243         * doc/invoke.texi (-ftree-lrs): Remove.
25244
25245 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
25246
25247         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
25248         NULL.
25249
25250 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
25251
25252         * config/ia64/ia64.c (ia64_expand_builtin): Use the
25253         new CALL_EXPR_FN macro for retrieving the function
25254         declaration of the input expression.
25255
25256 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25257
25258         * c.opt (Waddress): New.
25259         * common.opt (Walways-true): Delete.
25260         (Wstring-literal-comparison): Delete.
25261         * doc/invoke.texi (Warning Options): Delete -Walways-true and
25262         -Wstring-literal-comparison. Add -Waddress.
25263         (Waddress): New.
25264         (Walways-true): Delete.
25265         (Wstring-literal-comparison): Delete.
25266         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
25267         consistently instead of -Walways-true in example.
25268         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
25269         * c-typeck.c (parser_build_binary_op): Replace
25270         -Wstring-literal-comparison and -Walways-true with -Waddress.
25271         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
25272         with -Waddress.
25273
25274 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
25275
25276         * tree-cfg.c (dump_function_to_file): Be prepared for functions
25277         without DECL_STRUCT_FUNCTION initialized.
25278
25279 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
25280
25281         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
25282         due to calls to functions taking pointers as parameters.
25283
25284 2007-02-19  Richard Henderson  <rth@redhat.com>
25285
25286         PR debug/29558
25287         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
25288         in memory.
25289
25290 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
25291
25292         * config/s390/s390.c (s390_call_saved_register_used,
25293         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
25294         accessed to the new scheme.
25295
25296 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
25297
25298         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
25299         (cris_print_index, cris_print_operand, cris_print_operand_address)
25300         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
25301         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
25302         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
25303         GET_CODE () == xxx.
25304         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
25305         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
25306         GO_IF_LEGITIMATE_ADDRESS): Ditto.
25307         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
25308         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
25309         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
25310         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
25311         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
25312         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
25313         (uminsi3, call, call_value): Ditto.
25314         (define_split: indir_to_reg_split, unnamed): Ditto.
25315
25316 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
25317
25318         PR tree-optimization/30975
25319         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
25320         wrong assert.
25321
25322 2007-02-18  Eric Christopher  <echristo@gmail.com>
25323
25324         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
25325         Remove use of arglist.
25326         (mips_expand_builtin): Remove use of arglist, pass in expr.
25327         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
25328         (mips_expand_builtin_movtf): Ditto.
25329         (mips_expand_builtin_compare): Ditto.
25330
25331 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
25332
25333         * tree-sra.c (sra_build_assignment): Replace assertion
25334         checking with a comment explaining why it can't be done.
25335
25336 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
25337
25338         PR middle-end/30833
25339         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
25340         during CALL_EXPR representation conversion.
25341         * tree-ssa-propagate.c (set_rhs): Likewise.
25342
25343 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
25344
25345         * tree-sra.c (sra_build_assignment): Disable assertion checking
25346         for now.
25347
25348 2007-02-18  Roger Sayle  <roger@eyesopen.com>
25349
25350         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
25351         instead of calling build2 with a GIMPLE_MODIFY_STMT.
25352         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
25353         Likewise.
25354         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
25355         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
25356         gimplify_init_ctor_eval_range, gimple_push_cleanup,
25357         gimplify_omp_for, gimplify_omp_atomic_pipeline,
25358         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
25359         force_gimple_operand): Likewise.
25360         * ipa-cp.c (constant_val_insert): Likewise.
25361         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
25362         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
25363         perfect_nestify): Likewise.
25364         * langhooks.c (lhd_omp_assignment): Likewise.
25365         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
25366         lower_copyprivate_clauses, lower_send_clauses,
25367         lower_send_shared_vars, expand_parallel_call,
25368         expand_omp_for_generic, expand_omp_for_static_nochunk,
25369         expand_omp_for_static_chunk, expand_omp_sections,
25370         lower_omp_single_copy, lower_omp_for_lastprivate,
25371         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
25372         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
25373         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
25374         Likewise.
25375
25376 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
25377
25378         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
25379         config/sh/sh.md: Follow spelling conventions.
25380
25381         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
25382         config/frv/predicates.md: Follow spelling conventions.
25383
25384         * config/m68k/linux-unwind.h: Fix a comment typo.
25385         * target.h: Follow spelling conventions.
25386
25387 2007-02-18  Roger Sayle  <roger@eyesopen.com>
25388
25389         PR rtl-optimization/28173
25390         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
25391         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
25392         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
25393         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
25394         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
25395
25396 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25397
25398         * builtins.c (fold_builtin_load_exponent): New.
25399         (fold_builtin_2): Use it.
25400
25401 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
25402
25403         PR rtl-optimization/30773
25404         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
25405         if we fail to attach a REG_EQUIV note.
25406
25407 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
25408             Roger Sayle  <roger@eyesopen.com>
25409
25410         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
25411
25412 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
25413
25414         * calls.c (initialize_argument_information): Pass original EXP
25415         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
25416         code to split complex arguments here, as part of initializing the
25417         ARGS array.
25418         (expand_call): Remove code that builds a list of arguments and
25419         inserts implicit arguments into it.  Instead, just count how many
25420         implicit arguments there will be so we can determine the size of
25421         the ARGS array, and let initialize_argument_information do the work.
25422         (split_complex_values): Delete unused function.
25423
25424 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
25425
25426         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
25427
25428 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
25429
25430         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
25431         for arg pointer based indexed addressing.
25432
25433 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
25434
25435         * config/ia64/ia64.h, config/ia64/ia64.md,
25436         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
25437         spelling conventions.
25438
25439 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
25440
25441         * config/m68k/m68k.c (split_di): New.
25442         * config/m68k/m68k-protos.h: Declare split_di.
25443         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
25444           Improve predicate handling and split constant shifts.
25445
25446 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
25447
25448         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
25449         parameter for register bitfield operations, general predicates
25450         cleanup
25451
25452 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
25453
25454         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
25455         * config/m68k/linux-unwind.h: New file.
25456
25457 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
25458
25459         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
25460         config/i386/athlon.md, config/ia64/ia64.md,
25461         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
25462         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
25463         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
25464         tree-ssa-loop-niter.c, tree-vect-analyze.c,
25465         tree-vect-transform.c: Fix comment typos.
25466
25467 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
25468
25469         * sched-deps.c (find_insn_list): Remove.
25470         * sched-int.h: Remove the prototype for find_insn_list.
25471
25472 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
25473
25474         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
25475         to linker.
25476         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
25477         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
25478         darwin_rs6000_override_options.
25479         (C_COMMON_OVERRIDE_OPTIONS): Expect
25480         darwin_macosx_version_min to be non-NULL always.
25481         (TARGET_C99_FUNCTIONS): Likewise.
25482         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
25483         (DARWIN_MINVERSION_SPEC): New.
25484         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
25485         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
25486         to cc1*.
25487         (DARWIN_MINVERSION_SPEC): New.
25488         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
25489         value.
25490         * config/darwin-c.c (darwin_cpp_builtins): Expect
25491         darwin_macosx_version_min to be non-NULL always.
25492
25493         * config/rs6000/rs6000.c: Clean up trailing whitespace.
25494
25495 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
25496
25497         * config/i386/i386.h (x86_use_xchgb): New.
25498         (TARGET_USE_XCHGB): New macro.
25499         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
25500         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
25501         Split after reload into bswaphi for shifts of 8.
25502         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
25503         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
25504         or when optimizing for size.
25505
25506 2007-02-16  Richard Guenther  <rguenther@suse.de>
25507             Christian Bruel  <christian.bruel@st.com>
25508
25509         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
25510         DECLs but prefer SSA_NAMEs over DECLs.
25511
25512 2007-02-16  Richard Guenther  <rguenther@suse.de>
25513
25514         * tree-flow-inline.h (single_imm_use_p): Remove.
25515         (zero_imm_uses_p): Likewise.
25516         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
25517         instead of single_imm_use_p.
25518         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
25519         zero_imm_uses_p.
25520
25521 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25522
25523         PR other/27843
25524         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
25525         nested double- and backquotes.
25526
25527 2007-02-15  Roger Sayle  <roger@eyesopen.com>
25528
25529         PR middle-end/30391
25530         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
25531         should be unreachable.
25532         (build2_stat): Allow construction of MODIFY_EXPR at any time.
25533         For the time being redirect GIMPLE_MODIFY_STMT to the new
25534         (renamed) build_gimple_modify_stmt_stat.
25535         (build2_gimple_stat): Rename to...
25536         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
25537         Always build a GIMPLE_MODIFY_STMT node.
25538         * tree.h (build2_gimple, build2_gimple_stat): Delete.
25539         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
25540         declarations.
25541
25542         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
25543         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
25544         * tree-complex.c (set_component_ssa_name, expand_complex_move,
25545         expand_complex_div_wide): Likewise.
25546         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
25547         * tree-ssa-loop-im.c (schedule_sm): Likewise.
25548         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
25549         * tree-ssa-loop-manip.c (create_iv): Likewise.
25550         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
25551         abs_replacement): Likewise.
25552         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
25553         realify_fake_stores): Likewise.
25554
25555         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
25556         node rather than a GIMPLE_MODIFY_STMT node.
25557         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
25558         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
25559         Likewise.
25560         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
25561         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
25562         GIMPLE_MODIFY_STMT.
25563
25564 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25565
25566         PR middle-end/30433
25567         * fold-const.c (fold_comparison): Add back the
25568         folding of constant complex comparisions.
25569
25570 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25571
25572         PR middle-end/30729
25573         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
25574         effects unknown to this function, return early.
25575
25576 2007-02-15  Ian Lance Taylor  <iant@google.com>
25577
25578         * lower-subreg.c (move_eh_region_note): New static function.
25579         (resolve_simple_move): Call it.
25580         (decompose_multiword_subregs): Track blocks for which we resolve a
25581         simple move which is also a control flow insn.  Pass them to
25582         find_many_sub_basic_blocks.
25583         (pass_lower_subreg): Add TODO_verify_flow.
25584         (pass_lower_subreg2): Likewise.
25585
25586 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
25587             Brooks Moses  <brooks.moses@codesourcery.com>
25588             Lee Millward  <lee.millward@codesourcery.com>
25589
25590         * tree.h (enum tree_code_class): Add tcc_vl_exp.
25591         (VL_EXP_CLASS_P): New.
25592         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
25593         TREE_CODE_LENGTH.
25594         (TREE_OPERAND_CHECK_CODE): Likewise.
25595         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
25596         (TREE_RTL_OPERAND_CHECK): Likewise.
25597         (tree_operand_check_failed): Make second parameter the whole tree
25598         instead of its code.  Fixed callers.
25599         (VL_EXP_CHECK): New.
25600         (TREE_OPERAND_LENGTH): New.
25601         (VL_EXP_OPERAND_LENGTH): New.
25602         (CALL_EXPR_FN): New.
25603         (CALL_EXPR_STATIC_CHAIN): New.
25604         (CALL_EXPR_ARGS): New.
25605         (CALL_EXPR_ARG): New.
25606         (call_expr_nargs): New.
25607         (CALL_EXPR_ARGP): New.
25608         (build_nt_call_list): Declare.
25609         (build_vl_exp_stat): Declare.
25610         (build_vl_exp): New.
25611         (build_call_list): Declare.
25612         (build_call_nary): Declare.
25613         (build_call_valist): Declare.
25614         (build_call_array): Declare.
25615         (call_expr_arg): Declare.
25616         (call_expr_argp): Declare.
25617         (call_expr_arglist): Declare.
25618         (fold_build_call_list): Declare.
25619         (fold_build_call_list_initializer): Declare.
25620         (fold_call_expr): Declare to replace fold_builtin.
25621         (fold_builtin_fputs): Update to agree with modified definition.
25622         (fold_builtin_strcpy): Likewise.
25623         (fold_builtin_strncpy): Likewise.
25624         (fold_builtin_memory_chk): Likewise.
25625         (fold_builtin_stxcpy_chk): Likewise.
25626         (fold_builtin_strncpy_chk): Likewise.
25627         (fold_builtin_next_arg): Likewise.
25628         (fold_build_call_expr): Declare.
25629         (fold_builtin_call_list): Declare.
25630         (fold_builtin_call_valist): Declare.
25631         (build_call_expr): Declare.
25632         (validate_arglist): Update to agree with modified definition.
25633         (tree_operand_length): New.
25634         (call_expr_arg_iterator): New.
25635         (init_call_expr_arg_iterator): New.
25636         (next_call_expr_arg): New.
25637         (first_call_expr_arg): New.
25638         (more_call_expr_args_p): New.
25639         (FOR_EACH_CALL_EXPR_ARG): New.
25640
25641         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
25642         and tcc_gimple_stmt.
25643         (tree_code_size): Update documentation.  Use sizeof (tree) rather
25644         than sizeof (char *).
25645         (tree_size): Likewise.  Add case for tcc_vl_exp.
25646         (tree_node_structure): Add case for tcc_vl_exp.
25647         (contains_placeholder_p): Likewise.
25648         (substitute_in_expr): Likewise.
25649         (substitute_placeholder_in_expr): Likewise.
25650         (stabilize_reference_1): Likewise.
25651         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
25652         to diagnose breakage of this interface for constructing CALL_EXPRs.
25653         (build_nt): Add similar assertion here.
25654         (build_nt_call_list): New.
25655         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
25656         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
25657         TREE_CODE_LENGTH.
25658         (get_callee_fndecl): Use new CALL_EXPR accessors.
25659         (tree_operand_check_failed): Change parameters to pass entire node
25660         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
25661         (process_call_operands): New.
25662         (build_vl_exp_stat): New.
25663         (build_call_list): New.
25664         (build_call_nary): New.
25665         (build_call_valist): New.
25666         (build_call_array): New.
25667         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25668         (call_expr_arglist): New.
25669
25670         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
25671         tcc_vl_exp instead of a fixed-size tcc_expression.
25672
25673         * doc/c-tree.texi (CALL_EXPR): Document new representation and
25674         accessors for CALL_EXPRs.
25675         (AGGR_INIT_EXPR): Likewise.
25676
25677 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
25678             Brooks Moses  <brooks.moses@codesourcery.com>
25679             Lee Millward  <lee.millward@codesourcery.com>
25680
25681         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
25682         (expand_builtin_nonlocal_goto): Change parameter to be entire
25683         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
25684         (expand_builtin_prefetch): Likewise.
25685         (expand_builtin_classify_type): Likewise.
25686         (mathfn_built_in): Return NULL_TREE instead of 0.
25687         (expand_errno_check): Use new CALL_EXPR accessors.
25688         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
25689         Return NULL_RTX instead of 0.
25690         (expand_builtin_mathfn_2): Likewise.
25691         (expand_builtin_mathfn_3): Likewise.
25692         (expand_builtin_interclass_mathfn): Likewise.
25693         (expand_builtin_sincos): Likewise.
25694         (expand_builtin_cexpi): Likewise.
25695         (expand_builtin_int_roundingfn): Likewise.
25696         (expand_builtin_int_roundingfn_2): Likewise.
25697         (expand_builtin_pow): Likewise.
25698         (expand_builtin_powi): Likewise.
25699         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
25700         of arglist, fixing callers appropriately.  Use new CALL_EXPR
25701         accessors and constructors.  Return NULL_RTX instead of 0.
25702         (expand_builtin_strstr): Likewise.
25703         (expand_builtin_strchr): Likewise.
25704         (expand_builtin_strrchr): Likewise.
25705         (expand_builtin_strpbrk): Likewise.
25706         (expand_builtin_memcpy): Likewise.
25707         (expand_builtin_mempcpy): Likewise.
25708         (expand_builtin_mempcpy_args): New.
25709         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
25710         (expand_builtin_memmove_args): New.
25711         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
25712         (expand_movstr): Likewise.
25713         (expand_builtin_strcpy): Likewise.
25714         (expand_builtin_strcpy_args): New.
25715         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
25716         (expand_builtin_strncpy): Likewise.
25717         (expand_builtin_memset): Likewise.
25718         (expand_builtin_memset_args): New.
25719         (expand_builtin_bzero): Similarly to expand_builtin_memset.
25720         (expand_builtin_memcmp): Likewise.
25721         (expand_builtin_strcmp): Likewise.
25722         (expand_builtin_strncmp): Likewise.
25723         (expand_builtin_strcat): Likewise.
25724         (expand_builtin_strncat): Likewise.
25725         (expand_builtin_strspn): Likewise.
25726         (expand_builtin_strcspn): Likewise.
25727         (expand_builtin_args_info): Likewise.
25728         (expand_builtin_va_start): Likewise.
25729         (gimplify_va_arg_expr): Likewise.
25730         (expand_builtin_va_end): Likewise.
25731         (expand_builtin_va_copy): Likewise.
25732         (expand_builtin_frame_address): Likewise.
25733         (expand_builtin_alloca): Likewise.
25734         (expand_builtin_bswap): Likewise.
25735         (expand_builtin_unop): Likewise.
25736         (expand_builtin_fputs): Likewise.
25737         (expand_builtin_expect): Likewise.
25738         (expand_builtin_fabs): Likewise.
25739         (expand_builtin_copysign): Likewise.
25740         (expand_builtin_printf): Likewise.
25741         (expand_builtin_fprintf): Likewise.
25742         (expand_builtin_sprintf): Likewise.
25743         (expand_builtin_init_trampoline): Likewise.
25744         (expand_builtin_signbit): Likewise.
25745         (expand_builtin_fork_or_exec): Likewise.
25746         (expand_builtin_sync_operation): Likewise.
25747         (expand_builtin_compare_and_swap): Likewise.
25748         (expand_builtin_lock_test_and_set): Likewise.
25749         (expand_builtin_lock_release): Likewise.
25750         (expand_builtin): Likewise.
25751         (builtin_mathfn_code): Likewise.
25752
25753         (fold_builtin_constant_p): Pass call arguments individually instead
25754         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
25755         accessors and constructors.  Return NULL_TREE instead of 0.
25756         (fold_builtin_expect): Likewise.
25757         (fold_builtin_classify_type): Likewise.
25758         (fold_builtin_strlen): Likewise.
25759         (fold_builtin_nan): Likewise.
25760         (integer_valued_real_p): Likewise.
25761         (fold_trunc_transparent_mathfn): Likewise.
25762         (fold_fixed_mathfn): Likewise.
25763         (fold_builtin_cabs): Likewise.
25764         (fold_builtin_sqrt): Likewise.
25765         (fold_builtin_cbrt): Likewise.
25766         (fold_builtin_cos): Likewise.
25767         (fold_builtin_cosh): Likewise.
25768         (fold_builtin_tan): Likewise.
25769         (fold_builtin_sincos): Likewise.
25770         (fold_builtin_cexp): Likewise.
25771         (fold_builtin_trunc): Likewise.
25772         (fold_builtin_floor): Likewise.
25773         (fold_builtin_ceil): Likewise.
25774         (fold_builtin_round): Likewise.
25775         (fold_builtin_int_roundingfn): Likewise.
25776         (fold_builtin_bitop): Likewise.
25777         (fold_builtin_bswap): Likewise.
25778         (fold_builtin_logarithm): Likewise.
25779         (fold_builtin_hypot): Likewise.
25780         (fold_builtin_pow): Likewise.
25781         (fold_builtin_powi): Likewise.
25782         (fold_builtin_exponent): Likewise.
25783         (fold_builtin_memset): Likewise.
25784         (fold_builtin_bzero): Likewise.
25785         (fold_builtin_memory_op): Likewise.
25786         (fold_builtin_bcopy): Deleted; call site changed to invoke
25787         fold_builtin_memory_op directly.
25788         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
25789         (fold_builtin_strncpy): Likewise.
25790         (fold_builtin_memcmp): Likewise.
25791         (fold_builtin_strcmp): Likewise.
25792         (fold_builtin_strncmp): Likewise.
25793         (fold_builtin_signbit): Likewise.
25794         (fold_builtin_copysign): Likewise.
25795         (fold_builtin_isascii): Likewise.
25796         (fold_builtin_toascii): Likewise.
25797         (fold_builtin_isdigit): Likewise.
25798         (fold_builtin_fabs): Likewise.
25799         (fold_builtin_abs): Likewise.
25800         (fold_builtin_fmin_fmax): Likewise.
25801         (fold_builtin_carg): Likewise.
25802         (fold_builtin_classify): Likewise.
25803         (fold_builtin_unordered_cmp): Likewise.
25804
25805         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
25806         New functions split out from fold_builtin_1.
25807         (fold_builtin_n): New.
25808         (fold_builtin_varargs): New.
25809         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
25810         instead.
25811         (fold_call_expr): New.
25812         (build_function_call_expr): Rewrite to use new helper function.
25813         (fold_builtin_call_list): New.
25814         (build_call_expr): New.
25815         (fold_builtin_call_valist): New.
25816         (rewrite_call_expr): New.
25817         (validate_arg): New.
25818         (validate_arglist): Change parameter to be entire CALL_EXPR instead
25819         of an arglist.  Change return type to bool.  Use new CALL_EXPR
25820         accessors.
25821
25822         (fold_builtin_strstr): Pass call arguments individually instead
25823         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
25824         accessors and constructors.  Return NULL_TREE instead of 0.
25825         (fold_builtin_strchr): Likewise.
25826         (fold_builtin_strrchr): Likewise.
25827         (fold_builtin_strpbrk): Likewise.
25828         (fold_builtin_strcat): Likewise.
25829         (fold_builtin_strncat): Likewise.
25830         (fold_builtin_strspn): Likewise.
25831         (fold_builtin_strcspn): Likewise.
25832         (fold_builtin_fputs): Likewise.
25833         (fold_builtin_next_arg): Likewise.
25834         (fold_builtin_sprintf): Likewise.
25835
25836         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
25837         NULL_RTX instead of 0.
25838         (expand_builtin_memory_chk): Likewise.
25839         (maybe_emit_chk_warning): Likewise.
25840         (maybe_emit_sprintf_chk_warning): Likewise.
25841
25842         (fold_builtin_object_size): Pass call arguments individually instead
25843         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
25844         accessors and constructors.  Return NULL_TREE instead of 0.
25845         (fold_builtin_memory_chk): Likewise.
25846         (fold_builtin_stxcpy_chk): Likewise.
25847         (fold_builtin_strncpy_chk): Likewise.
25848         (fold_builtin_strcat_chk): Likewise.
25849         (fold_builtin_strcat_chk): Likewise.
25850         (fold_builtin_strncat_chk): Likewise.
25851         (fold_builtin_sprintf_chk): Likewise.
25852         (fold_builtin_snprintf_chk): Likewise.
25853         (fold_builtin_printf): Likewise.
25854         (fold_builtin_vprintf): Likewise.
25855
25856         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
25857         constructors.
25858         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
25859         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25860         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
25861         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
25862         (fold_unary): Likewise.
25863         (fold_binary): Likewise.
25864         (fold_ternary): Remove CALL_EXPR case, since they are no longer
25865         ternary expressions.
25866         (fold): Add logic for tcc_vl_exp.
25867         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
25868         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25869         (fold_build3_stat): Add assertion to flag broken interface for
25870         constructing CALL_EXPRs.
25871         (fold_build_call_list): New.
25872         (fold_build_call_list_initializer): New.
25873         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
25874         constructors.
25875         (fold_strip_sign_ops): Likewise.
25876
25877 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
25878             Brooks Moses  <brooks.moses@codesourcery.com>
25879             Lee Millward  <lee.millward@codesourcery.com>
25880
25881         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
25882         accessors and dump arguments explicitly.
25883
25884         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
25885         TREE_CODE_LENGTH.
25886         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
25887         explicitly.
25888         (print_call_name): Use new CALL_EXPR accessors.
25889
25890         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
25891         CALL_EXPR arguments explicitly instead of as a list.  Use
25892         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25893
25894         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
25895         (vrp_visit_stmt): Likewise.
25896
25897         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
25898         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
25899         TREE_CODE_LENGTH.
25900         (force_move_till_expr): Likewise.
25901
25902         * targhooks.c (default_external_stack_protect_fail): Use
25903         build_call_expr instead of build_function_call_expr.
25904         (default_hidden_stack_protect_fail): Likewise.
25905
25906         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
25907         build the call.
25908
25909         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
25910         and walk arguments explicitly.
25911
25912         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
25913         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25914         (expand_simple_operations): Likewise.
25915         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
25916
25917         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
25918         of TREE_CODE_LENGTH.
25919         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
25920
25921         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
25922         instead of TREE_CODE_LENGTH.
25923
25924         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
25925         (tree_ic_transform): Likewise.
25926         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
25927         parameter instead of arglist.  Fix callers.
25928         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
25929         (tree_stringops_transform): Likewise.
25930         (tree_indirect_call_to_profile): Likewise.
25931         (tree_stringops_values_to_profile): Likewise.
25932
25933         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
25934         (eliminate_tail_call): Likewise.
25935
25936         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
25937
25938         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
25939         Use TREE_OPERAND_LENGTH and generalize to handle any number of
25940         operands.
25941         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
25942
25943         * omp-low.c (build_omp_barrier): Use build_call_expr.
25944         (lower_rec_input_clauses): Likewise.
25945         (lower_reduction_clauses): Likewise.
25946         (expand_parallel_call): Likewise.
25947         (maybe_catch_exception): Likewise.
25948         (expand_omp_for_generic): Likewise.
25949         (expand_omp_for_static_nochunk): Likewise.
25950         (expand_omp_sections): Likewise.
25951         (lower_omp_single_simple): Likewise.
25952         (lower_omp_single_copy): Likewise.
25953         (lower_omp_master): Likewise.
25954         (lower_omp_ordered): Likewise.
25955         (lower_omp_critical): Likewise.
25956
25957         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
25958         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
25959
25960         * tree-gimple.c (is_gimple_call_addr): Fix doc.
25961         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
25962         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
25963
25964         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
25965         and generalize to handle any number of operands.
25966         (chrec_contains_undetermined): Likewise.
25967         (tree_contains_chrecs): Likewise.
25968         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
25969
25970         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
25971
25972         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
25973         fold_call_expr instead of fold_builtin.
25974         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
25975         match declarations there.
25976         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
25977         updates.
25978
25979         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
25980         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25981
25982         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
25983         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
25984
25985         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
25986         accessors.
25987
25988         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
25989         (execute_cse_sincos): Use new CALL_EXPR accessors.
25990
25991         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
25992
25993         * gimple-low.c (lower_function_body): Use build_call_expr.
25994         (lower_builtin_setjmp): Likewise.
25995
25996         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
25997         (set_storage_via_libcall): Likewise.
25998         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
25999         instead of TREE_CODE_LENGTH.
26000         (expand_expr_real_1): Use new CALL_EXPR accessors.
26001
26002         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
26003         generalize to handle any number of operands.
26004         (TB_parent_eq): Likewise.
26005
26006         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
26007         (strip_builtin_expect): Likewise.
26008
26009         * function.c (gimplify_parameters): Use build_call_expr.
26010
26011         * tree-vectorizer.c (vect_is_simple_reduction): Use
26012         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26013
26014         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
26015         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
26016
26017         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
26018         iterators.
26019
26020         * gimplify.c (build_stack_save_restore): Use build_call_expr.
26021         (gimplify_decl_expr): Likewise.
26022         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
26023         Use new CALL_EXPR iterators.
26024         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
26025         (gimplify_modify_expr_to_memset): Likewise.
26026         (gimplify_variable_sized_compare): Likewise.
26027         (gimplify_omp_atomic_fetch_op): Likewise.
26028         (gimplify_omp_atomic_pipeline): Likewise.
26029         (gimplify_omp_atomic_mutex): Likewise.
26030         (gimplify_function_tree): Likewise.
26031
26032         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
26033         (call_expr_flags): Likewise.
26034         (expand_call): Likewise.
26035
26036         * except.c (expand_builtin_eh_return_data_regno): Pass entire
26037         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
26038         accessors.
26039
26040         * coverage.c (create_coverage): Use build_call_expr.
26041
26042         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
26043         (temp_call_expr_obstack): New.
26044         (pool_copy_list): Delete.
26045         (temp_copy_call_expr): New.
26046         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
26047         CALL_EXPR accessors.  Get rid of special goo for copying argument
26048         lists and use temp_copy_call_expr instead.
26049         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
26050         CALL_EXPR accessors.
26051         (create_expression_by_pieces): Likewise.  Use build_call_array
26052         to construct the result instead of fold_build3.
26053         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
26054         dealing with argument lists.
26055         (init_pre): Remove references to expression_node_pool and
26056         list_node_pool.  Init temp_call_expr_obstack instead.
26057         (fini_pre): Remove references to expression_node_pool and
26058         list_node_pool.
26059
26060         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
26061         and walk arguments explicitly instead of as a list.
26062
26063         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
26064         (mx_register_decls): Likewise.
26065         (mudflap_register_call): Likewise.
26066         (mudflap_finish_file): Likewise.
26067
26068         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
26069         (ipa_callsite_compute_param): Likewise.
26070
26071         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
26072         accessors and constructor.
26073
26074         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
26075         accessors and constructor.
26076         (convert_tramp_reference): Likewise.
26077         (convert_call_expr): Likewise.
26078         (finalize_nesting_tree_1): Likewise.
26079
26080         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
26081         accessors.
26082
26083         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
26084
26085         * tree-inline.c (initialize_inlined_parameters): Pass entire
26086         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
26087         accessors.
26088         (estimate_num_insns_1): Use new CALL_EXPR accessors.
26089         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
26090
26091         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
26092         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26093         (vectorizable_reduction): Likewise.
26094         (vectorizable_call): Use new CALL_EXPR iterators.
26095         (vectorizable_conversion): Use build_call_expr.
26096         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
26097         (vect_gen_widened_results_half): Use build_call_expr.
26098         (vect_setup_realignment): Likewise.
26099         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
26100
26101         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
26102         (pass_through_call): Likewise.
26103         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
26104         fold_builtin.
26105
26106         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
26107         (tree_gen_pow2_profiler): Likewise.
26108         (tree_gen_one_value_profiler): Likewise.
26109         (tree_gen_ic_func_profiler): Likewise.
26110         (tree_gen_average_profiler): Likewise.
26111         (tree_gen_ior_profiler): Likewise.
26112
26113         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
26114         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
26115         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26116
26117         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
26118         of TREE_CODE_LENGTH.
26119
26120         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
26121         of TREE_CODE_LENGTH.
26122
26123         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
26124         constructor.
26125         (convert_to_integer): Likewise.
26126
26127         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
26128         accessors.
26129
26130 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26131             Brooks Moses  <brooks.moses@codesourcery.com>
26132             Lee Millward  <lee.millward@codesourcery.com>
26133
26134         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
26135         accessors.
26136         * config/frv/frv.c (frv_expand_builtin): Likewise.
26137         * config/s390/s390.c (s390_expand_builtin): Likewise.
26138
26139         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
26140         (sparc_expand_builtin): Use new CALL_EXPR accessors.
26141
26142         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
26143         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
26144         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
26145         (ix86_expand_store_builtin): Likewise.
26146         (ix86_expand_unop_builtin): Likewise.
26147         (ix86_expand_unop1_builtin): Likewise.
26148         (ix86_expand_sse_compare): Likewise.
26149         (ix86_expand_sse_comi): Likewise.
26150         (ix86_expand_vec_init_builtin): Likewise.
26151         (ix86_expand_vec_ext_builtin): Likewise.
26152         (ix86_expand_vec_set_builtin): Likewise.
26153         (ix86_expand_builtin): Use new CALL_EXPR accessors.
26154
26155         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
26156         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
26157
26158         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
26159         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
26160         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
26161
26162         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
26163         build_call_expr.
26164         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
26165         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
26166         arglist.  Use new CALL_EXPR accessors.  Fix callers.
26167         (altivec_expand_abs_builtin): Likewise.
26168         (rs6000_expand_binop_builtin): Likewise.
26169         (altivec_expand_predicate_builtin): Likewise.
26170         (altivec_expand_lv_builtin): Likewise.
26171         (spe_expand_stv_builtin): Likewise.
26172         (altivec_expand_stv_builtin): Likewise.
26173         (rs6000_expand_ternop_builtin): Likewise.
26174         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
26175         (altivec_expand_st_builtin): Likewise.
26176         (altivec_expand_dst_builtin): Likewise.
26177         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
26178         arglist.  Use new CALL_EXPR accessors.  Fix callers.
26179         (altivec_expand_vec_set_builtin): Likewise.
26180         (altivec_expand_vec_ext_builtin): Likewise.
26181         (altivec_expand_builtin): Use new CALL_EXPR accessors.
26182         (spe_expand_builtin): Likewise.
26183         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
26184         arglist.  Use new CALL_EXPR accessors.  Fix callers.
26185         (spe_expand_evsel_builtin): Likewise.
26186         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
26187         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
26188
26189         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
26190         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
26191         (arm_expand_unop_builtin): Likewise.
26192         (arm_expand_builtin): Use new CALL_EXPR accessors.
26193
26194         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
26195         accessors.
26196
26197         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
26198         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
26199         Fix callers.
26200         (bfin_expand_unop_builtin): Likewise.
26201         (bfin_expand_builtin): Use new CALL_EXPR accessors.
26202
26203 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26204             Brooks Moses  <brooks.moses@codesourcery.com>
26205             Lee Millward  <lee.millward@codesourcery.com>
26206
26207         * c-semantics.c (build_stmt): Add internal diagnostic check.
26208
26209         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
26210         accessors.  Print arguments explicitly instead of as a list.
26211
26212         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
26213
26214         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
26215         (c_finish_omp_flish): Likewise.
26216
26217         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
26218         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
26219         instead of TREE_CODE_LENGTH.
26220         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
26221         (c_warn_unused_result): Likewise.
26222
26223 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26224
26225         PR c/26494
26226         * doc/invoke.texi (Warning Options): Remove
26227         -Werror-implicit-function-declaration.
26228         (Wimplicit-function-declaration): Update description.
26229         * opts.c (common_handle_option): Move handling of -Werror=* to...
26230         (enable_warning_as_error): ...here.
26231         * opts.h (enable_warning_as_error): Declare.
26232         * c-decl.c (implicit_decl_warning): Unless
26233         -Wno-implicit-function-declaration is given, emit a pedwarn if
26234         -std=c99 or emit a warning if -Wimplicit-function-declaration.
26235         * c.opt (Wimplicit-function-declaration): Replace
26236         mesg_implicit_function_declaration with
26237         warn_implicit_function_declaration.
26238         * c-opts.c (c_common_handle_option):
26239         -Werror-implicit-function-declaration is exactly equal as
26240         -Werror=implicit-function-declaration.
26241         (set_Wimplicit): Replace mesg_implicit_function_declaration with
26242         warn_implicit_function_declaration.
26243         (c_common_post_options): -Wimplict-function-declaration is enabled
26244         by default by -std=c99, otherwise is disabled by default.
26245         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
26246
26247 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
26248
26249         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
26250         DECL on the rhs to a DECL on the lhs for debug info purposes if the
26251         former is ignored but not the latter.
26252
26253 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
26254
26255         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
26256         is made and the reference doesn't use the alias set of its type,
26257         do not create the temporary using that type.
26258
26259 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
26260
26261         * jump.c: Remove prototypes for delete_computation and
26262         delete_prior_computation.
26263
26264 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
26265
26266         * jump.c (get_label_after): Delete.
26267         (get_label_before, delete_computation, delete_jump,
26268         delete_prior_computation, follow_jumps): Move...
26269         * reorg.c (delete_computation, delete_prior_computation): ... here...
26270         (get_label_before, delete_jump): ... making these static ...
26271         (follow_jumps): ... and simplifying this since it only runs after
26272         reload.
26273         * rtl.h (get_label_after, get_label_before, delete_jump,
26274         follow_jumps): Delete prototypes.
26275
26276 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
26277
26278         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
26279
26280 2007-02-15  Nick Clifton  <nickc@redhat.com>
26281
26282         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
26283         order to prevent it from being munged by the target.
26284
26285 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
26286
26287         * config/i386/i386.md: Remove misleading comment.
26288
26289 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
26290
26291         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
26292         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
26293         invalid patterns.
26294
26295 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
26296
26297         * tree-sra.c (instantiate_missing_elements): Canonicalize
26298         bit-field types.
26299         (sra_build_assignment): New.
26300         (generate_copy_inout, generate_element_copy,
26301         generate_element_zero, generate_one_element_init): Use it.
26302
26303 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
26304
26305         * tree-sra.c (instantiate_missing_elements): Canonicalize
26306         bit-field types.
26307         (sra_build_assignment): New.
26308         (generate_copy_inout, generate_element_copy,
26309         generate_element_zero, generate_one_element_init): Use it.
26310
26311 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
26312
26313         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
26314         limbo die nodes.
26315
26316 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
26317
26318         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
26319         types as aggregates not scalars.
26320         * function.c (assign_stack_temp_for_type): Likewise.
26321
26322 2007-02-14  Roger Sayle  <roger@eyesopen.com>
26323             Zdenek Dvorak  <dvorakz@suse.cz>
26324
26325         * tree-dump.c (dump_switch_p_1): Require exact match of the option
26326         name.
26327
26328 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
26329
26330         * passes.c (next_pass_1): Clear the next field of the copied
26331         pass structure.
26332
26333 2007-02-14  Richard Henderson  <rth@redhat.com>
26334
26335         * tree-sra.c (early_sra): New.
26336         (decl_can_be_decomposed_p): Deny va_list if early_sra.
26337         (tree_sra_early, pass_sra_early): New.
26338         * tree-pass.h (pass_sra_early): Declare.
26339         * passes.c (init_optimization_passes): Use it.
26340
26341 2007-02-14  Richard Guenther  <rguenther@suse.de>
26342
26343         * flags.h (issue_strict_overflow_warning): Convert to a macro.
26344
26345 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
26346
26347          PR tree-optimization/30771
26348         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
26349         also phi nodes.
26350         (vect_analyze_operations): Induction phis can now be marked as
26351         used_in_loop.
26352         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
26353         Update documentation accordingly.
26354
26355 2007-02-14  Nick Clifton  <nickc@redhat.com>
26356
26357         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
26358         most 3 arguments are supported.
26359         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
26360
26361 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
26362
26363         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
26364         Ensure dst->current is valid.
26365
26366 2007-02-13  Paul Brook  <paul@codesourcery.com>
26367
26368         * config.gcc: Add arm*-*-uclinux-*eabi.
26369         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
26370         (SUBTARGET_EXTRA_LINK_SPEC): Define.
26371         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
26372         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
26373         (LINK_SPEC): Define.
26374         (LIB_SPEC): Define.
26375         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
26376         register.
26377         * config/arm/uclinux-eabi.h: New file.
26378         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
26379         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
26380         based targets.
26381
26382 2007-02-13  Ian Lance Taylor  <iant@google.com>
26383
26384         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
26385         * flags.h (warn_strict_overflow): Declare.
26386         (enum warn_strict_overflow_code): Define.
26387         (issue_strict_overflow_warning): New static inline function.
26388         * opts.c (warn_strict_overflow): New variable.
26389         (common_handle_option): Handle OPT_Wstrict_overflow and
26390         OPT_Wstrict_overflow_.
26391         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
26392         OPT_Wall.
26393         * fold-const.c: Include intl.h.
26394         (fold_deferring_overflow_warnings): New static variable.
26395         (fold_deferred_overflow_warning): New static variable.
26396         (fold_deferred_overflow_code): New static variable.
26397         (fold_defer_overflow_warnings): New function.
26398         (fold_undefer_overflow_warnings): New function.
26399         (fold_undefer_and_ignore_overflow_warnings): New function.
26400         (fold_deferring_overflow_warnings_p): New function.
26401         (fold_overflow_warning): New static function.
26402         (make_range): Add strict_overflow_p parameter.  Change all
26403         callers.
26404         (extract_muldiv, extract_muldiv_1): Likewise.
26405         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
26406         tree_expr_nonnegative_p.
26407         (fold_negate_expr): Call fold_overflow_warning.
26408         (fold_range_test): Likewise.
26409         (fold_comparison): Likewise.
26410         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
26411         instead of tree_expr_nonnegative_p.
26412         (tree_expr_nonnegative_warnv_p): Rename from
26413         tree_expr_nonnegative_p, add strict_overflow_p parameter.
26414         (tree_expr_nonnegative_p): New function.
26415         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
26416         strict_overflow_p parameter.
26417         (tree_expr_nonzero_p): New function.
26418         * passes.c (verify_interpass_invariants): New static function.
26419         (execute_one_pass): Call it.
26420         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
26421         warnings.
26422         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
26423         (estimate_numbers_of_iterations): Likewise.
26424         (scev_probably_wraps_p): Likewise.
26425         * tree-ssa-ccp.c: Include "toplev.h".
26426         (evaluate_stmt): Defer fold overflow warnings until we know we are
26427         going to optimize.
26428         (struct fold_stmt_r_data): Add stmt field.
26429         (fold_stmt_r): Defer fold overflow warnings until we know we
26430         optimized.
26431         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
26432         (fold_stmt_inplace): Likewise.
26433         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
26434         (cleanup_control_expr_graph): Defer fold overflow warnings until
26435         we know we are going to optimize.
26436         * tree-cfg.c (fold_cond_expr_cond): Likewise.
26437         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
26438         Likewise.
26439         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
26440         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
26441         * tree-ssa-loop-manip.c (create_iv): Likewise.
26442         * c-typeck.c (build_conditional_expr): Likewise.
26443         (build_binary_op): Likewise.
26444         * tree-vrp.c (vrp_expr_computes_nonzero): Call
26445         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
26446         (extract_range_from_unary_expr): Likewise.
26447         * simplify-rtx.c (simplify_const_relational_operation): Warn when
26448         assuming that signed overflow does not occur.
26449         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
26450         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
26451         (fold_defer_overflow_warnings): Declare.
26452         (fold_undefer_overflow_warnings): Declare.
26453         (fold_undefer_and_ignore_overflow_warnings): Declare.
26454         (fold_deferring_overflow_warnings_p): Declare.
26455         (tree_expr_nonzero_warnv_p): Declare.
26456         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
26457         of warning options.
26458         (Warning Options): Document -Wstrict-overflow.
26459         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
26460         (tree-ssa-ccp.o): Likewise.
26461         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
26462         (fold-const.o): Depend on intl.h.
26463
26464 2007-02-13  Ian Lance Taylor  <iant@google.com>
26465
26466         PR middle-end/30751
26467         * lower-subreg.c (resolve_simple_move): Decompose subregs in
26468         addresses.
26469
26470 2007-02-13  Stuart Hastings  <stuart@apple.com>
26471
26472         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
26473
26474 2007-02-13  Richard Henderson  <rth@redhat.com>
26475
26476         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
26477         handled_component_p before looking for the indirect_ref.
26478
26479 2007-02-13  Richard Henderson  <rth@redhat.com>
26480
26481         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
26482         remove flags clobber.
26483         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
26484         (bswaphi_lowpart): New.
26485         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
26486         remove TARGET_BSWAP test.  Delete expander of the same name.
26487
26488         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
26489         (expand_unop): Use them.
26490
26491 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
26492
26493         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
26494         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
26495         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
26496         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
26497         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
26498         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
26499         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
26500         assembler dialect choice from asm templates.
26501
26502 2007-02-12  Richard Henderson  <rth@redhat.com>
26503
26504         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
26505         (fixuns_trunc<SSEMODEF>si2): Use it.
26506         * config/i386/sse.md (vec_setv4sf_0): Export.
26507         * config/i386/i386.c (ix86_build_const_vector): Export.
26508         (ix86_split_convert_uns_si_sse): Rename from
26509         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
26510         * config/i386/i386-protos.h: Update.
26511
26512 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26513
26514         PR c/29521
26515         * c-typeck.c (c_finish_return): Improve warning message.
26516
26517 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26518
26519         * alias.c (find_symbolic_term): Delete unused function.
26520
26521 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
26522
26523         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
26524         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
26525         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
26526
26527 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
26528
26529         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
26530         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
26531         the function, temporarily point the debug interface to the null one.
26532
26533 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
26534
26535         * dwarf2out.c (round_up_to_align): New static function.
26536         (field_byte_offset): Use it to round the offset.
26537
26538 2007-02-12  Richard Henderson  <rth@redhat.com>
26539
26540         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
26541         (inswl_const): Export.
26542
26543 2007-02-12  Richard Henderson  <rth@redhat.com>
26544
26545         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
26546         result mode of the libcall, convert back to outmode.
26547
26548 2007-02-12  Roger Sayle  <roger@eyesopen.com>
26549
26550         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
26551         (bswapdi2): New define_expand to implement 32-bit implementation.
26552
26553 2007-02-12  Nick Clifton  <nickc@redhat.com>
26554
26555         * doc/invoke.texi (Overall Options): Document --help=.
26556         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
26557         (cc1_options): Pass --help= on to cc1.
26558         (display_help): Add description of --help=.
26559         (process_command): Add code to handle --help=.  Allow translated
26560         --help and --target-help switches to be passed on to compiler
26561         sub-process.
26562         (main): Remove unused if statement.
26563         * opts.c (columns): Remove.
26564         (LEFT_COLUMN): Define.
26565         (wrap_help): Add columns argument.
26566         (print_filtered_help): Change parameters to be an include bitmask,
26567         an exclude bitmask, an any bitmask and the column width.  Move the
26568         code to display the params list here.  Add code to display the
26569         status of options rather than their descriptions if the quiet flag
26570         is not active.
26571         (print_specific_help): Change parameters to be an include bitmask,
26572         an exclude bitmask and an any bitmask.  Move code to look up the
26573         column width here.  Decide upon the title for an options listing.
26574         (common_handle_options): Add code to handle --help=.  Adapt code
26575         for --help and --target-help to use the revised form of the
26576         print_specific_help function.
26577         (print_help): Delete.
26578         (print_param_help): Delete.
26579         (print_switch): Delete.
26580         * opts.h (cl_lang_count): Add prototype.
26581         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
26582         CL_MAX_OPTION_CLASS): New defines.
26583         * optc-gen.awk: Add construction of cl_lang_count.
26584         * c.opt: Add Warning attribute to warning options and Optimization
26585         attribute to optimization options.
26586         * common.opt: Likewise.
26587         Add --help=.
26588         Add -fhelp and -ftarget-help as aliases for the transformed --help
26589         and --target-help options.
26590         * opt-functions.awk: Add code to handle Warning and Optimization
26591         attributes.
26592
26593 2007-02-12  Richard Henderson  <rth@redhat.com>
26594
26595         * config/alpha/constraints.md: New file.
26596         * config/alpha/alpha.c: Include tm-constrs.h.
26597         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
26598         alpha_extra_constraint): Remove.
26599         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
26600         * config/alpha/alpha-protos.h: Update.
26601         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
26602         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
26603         (EXTRA_CONSTRAINT): Remove.
26604         * config/alpha/alpha.md: Include constraints.md.
26605         (adddi splitter): Use satisfies_constraint_*.
26606         * config/alpha/predicates.md (add_operand): Likewise.
26607         (sext_add_operand, addition_operation): Likewise.
26608
26609 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
26610
26611         PR tree-optimization/29145
26612         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
26613         in our handling of restrict qualified pointers.
26614
26615 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26616
26617         PR middle-end/7651
26618         * doc/invoke.texi (Wunused-value): Update description.
26619         (Wextra): Delete item.
26620         * opts.c (set_Wextra): Don't use the value of Wextra to set the
26621         value of Wunused-value.
26622         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
26623         (c_finish_stmt_expr): Don't check extra_warnings.
26624         (emit_side_effect_warnings): The caller is responsible to check
26625         warn_unused_value.
26626
26627 2007-02-11  Roger Sayle  <roger@eyesopen.com>
26628             Matt Thomas  <matt@3am-software.com>
26629
26630         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
26631
26632 2007-02-11  Roger Sayle  <roger@eyesopen.com>
26633
26634         * simplify-rtx.c (simplify_relational_operation_1): Optimize
26635         comparisons of POPCOUNT against zero.
26636         (simplify_const_relational_operation): Likewise.
26637
26638 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26639
26640         * doc/invoke.texi (Wextra): Delete outdated paragraph.
26641
26642 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26643
26644         * dwarf2out.c (root_type): Delete unused function.
26645
26646 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26647
26648         * genattrtab.c (contained_in_p): Delete unused function.
26649         (write_expr_attr_cache): Likewise.
26650
26651 2007-02-11  Jan Hubicka  <jh@suse.cz>
26652
26653         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
26654         previous patch.
26655
26656 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
26657
26658         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
26659         to add the REG_EQ* note.
26660         * see.c (see_merge_one_use_extension): Likewise.
26661         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
26662         turn REG_EQUAL notes into REG_EQUIV notes if the target
26663         register may have more than one set.
26664         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
26665         * gcse.c (try_replace_reg): Likewise.
26666         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
26667         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
26668         more than one REG_EQUIV note.
26669         * reload1.c (gen_reload): Use set_unique_reg_note.
26670
26671 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
26672
26673         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
26674         (ix86_builtin_conversion): New function.
26675
26676 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
26677
26678         PR target/29487
26679         * tree.h (DECL_REPLACEABLE_P): New macro.
26680         * except.c (set_nothrow_function_flags): Likewise.
26681
26682 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
26683             Ira Rosen  <irar@il.ibm.com>
26684             Dorit Nuzman  <dorit@il.ibm.com>
26685
26686         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
26687         * targhooks.c (default_builtin_vectorized_conversion): New.
26688         * targhooks.h (default_builtin_vectorized_function): New declaration.
26689         * target.h (struct vectorize): Add builtin_conversion field.
26690         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
26691         stmt_vec_info_type value.
26692         (vectorizable_conversion): New declaration.
26693         * tree-vect-analyze.c (vect_analyze_operations): Add
26694         vectorizable_conversion call.
26695         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
26696         * tree-vect-transform.c (vectorizable_conversion): New function.
26697         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
26698         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
26699         mode.
26700         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
26701         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
26702         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
26703         or ALTIVEC_BUILTIN_VCFSX.
26704
26705 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26706
26707         PR target/30634
26708         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
26709         CONST_DOUBLE and operand 0 is a hard register.
26710         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
26711         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
26712         is a hard floating-point register.
26713
26714 2007-02-10  Richard Henderson  <rth@redhat.com>
26715             Jakub Jelinek  <jakub@redhat.com>
26716             Alexandre Oliva  <aoliva@redhat.com>
26717
26718         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
26719         * builtin-types.def (BT_WORD): Make unsigned.
26720         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
26721         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
26722         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
26723         * c-decl.c (grokdeclarator): Don't error if !have_tls.
26724         * c-parser.c (c_parser_omp_threadprivate): Likewise.
26725         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
26726         emulated tls.
26727         * expr.c (emutls_var_address): New.
26728         (expand_expr_real_1): Expand emulated tls.
26729         (expand_expr_addr_expr_1): Likewise.
26730         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
26731         * output.h (emutls_finish): Declare.
26732         * toplev.c (compile_file): Call it.
26733         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
26734         address before wrapping in CONST.
26735         * varasm.c (emutls_htab, emutls_object_type): New.
26736         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
26737         (get_emutls_object_name, get_emutls_object_type): New.
26738         (get_emutls_init_templ_addr, emutls_decl): New.
26739         (emutls_common_1, emutls_finish): New.
26740         (assemble_variable): When emulating tls, swap decls; generate
26741         constructor for the emutls objects.
26742         (do_assemble_alias): When emulating tls, swap decl and target name.
26743         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
26744         for emulated tls.
26745         * varpool.c (decide_is_variable_needed): Look at force_output.
26746         Recurse for emulated tls.
26747         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
26748         with decide_is_variable_needed.
26749         * emutls.c: New file.
26750         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
26751         tls_object for real tls.
26752
26753 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
26754
26755         PR rtl-optimization/29599
26756         * reload1.c (eliminate_regs_in_insn): Take the destination
26757         mode into account when computing the offset.
26758
26759 2007-02-09  Stuart Hastings  <stuart@apple.com>
26760             Richard Henderson  <rth@redhat.com>
26761
26762         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
26763         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
26764         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
26765         fixuns_truncdfhi2): New.
26766         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
26767         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
26768         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
26769         (floatunssidf2): Allow nonimmediate source.
26770         * config/i386/sse.md (movdi_to_sse): New.
26771         (vec_concatv2di): Drop '*'.
26772         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
26773         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
26774         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
26775         New.
26776         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
26777         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
26778         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
26779         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
26780         (ix86_build_signbit_mask): Fix decl of v, refactor to call
26781         ix86_build_const_vector.
26782         (x86_emit_floatuns): Rewrite.
26783
26784 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26785
26786         * genautomata.c (longest_path_length): Delete unused function.
26787         (struct state): Delete unused longest_path_length.
26788         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
26789         (get_free_state): Delete unused.
26790
26791 2007-02-09  Jan Hubicka  <jh@suse.cz>
26792
26793         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
26794         * doc/invoke.texi (inline-unit-growth): Update default value.
26795
26796         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
26797         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
26798         (rebuild_cgraph_edges): Likewise.
26799         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
26800         (dump_cgraph_node): Dump frequencies.
26801         (cgraph_clone_edge): Add frequency scales.
26802         (cgraph_clone_node): Add freuqnecy.
26803         * cgraph.h (cgraph_edge): Add freuqnecy argument.
26804         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
26805         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
26806         * tree-pass.h (TODO_rebuild_frequencies): New constant.
26807         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
26808         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
26809         (save_inline_function_body): Likewise.
26810         * ipa-inline.c: inluce rtl.h
26811         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
26812         (cgraph_edge_badness): Use frequencies.
26813         (cgraph_decide_recursive_inlining): Update clonning.
26814         (cgraph_decide_inlining_of_small_function): Dump frequency.
26815         * predict.c (estimate_bb_frequencies): Export.
26816         * predict.h (estimate_bb_frequencies): Declare.
26817         * tree-inline.c (copy_bb): Watch overflows.
26818         (expand_call_inline): Update call of cgraph_create_edge.
26819         (optimize_inline_calls): Use TODO flags to update frequnecies.
26820         * passes.h: Include predict.h
26821         (init_optimization_passes): Move profile ahead.
26822         (execute_function_todo): Handle TODO_rebuild_frequencies.
26823
26824 2007-02-09  Roger Sayle  <roger@eyesopen.com>
26825
26826         * config/alpha/alpha.c (emit_insxl): Force the first operand of
26827         the insbl or inswl pattern into a register.
26828
26829 2007-02-09  Roger Sayle  <roger@eyesopen.com>
26830
26831         * config/ia64/ia64.md (bswapdi2): New define_insn.
26832
26833 2007-02-09  Richard Henderson  <rth@redhat.com>
26834
26835         * config/i386/constraints.md (Ym): New constraint.
26836         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
26837         (movdi_1_rex64): Split sse and xmm general register moves from
26838         memory move alternatives.  Use conditional register constraints.
26839         (movsf_1, movdf_integer): Likewise.
26840         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
26841         (movdf_integer_rex64): New.
26842         (pushsf_rex64): Fix output constraints.
26843         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
26844         (sse2_stored): Likewise.
26845         (sse2_storeq_rex64): New.
26846         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
26847         amd and not generic.
26848         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
26849         for optimize_size.  Remove SF/DFmode hack.
26850
26851 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
26852
26853         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
26854         (bit_SSE4a): New.
26855
26856 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
26857             Richard Sandiford  <richard@codesourcery.com>
26858
26859         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
26860         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
26861         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
26862         m68k/t-mlib to tmake_file.
26863         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
26864         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
26865         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
26866         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
26867         variable is not empty, add t-$m68k_arch_family to tmake_file.
26868         Add t-mlibs to tmake_file.
26869         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
26870         * config/m68k/t-cf: New file.
26871         * config/m68k/t-m68k: Likewise.
26872         * config/m68k/t-mlibs: Likewise.
26873         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
26874         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
26875         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
26876         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
26877         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
26878         Delete.
26879         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
26880         (INSTALL_LIBGCC): Delete.
26881         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
26882         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
26883         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
26884         (M68K_MLIB_CPU): Define.
26885         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
26886         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
26887         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
26888
26889 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
26890             Richard Guenther  <rguenther@suse.de>
26891
26892         PR middle-end/23361
26893         * fold-const.c (fold_comparison): Handle obfuscated comparisons
26894         against INT_MIN/INT_MAX.
26895         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
26896         file if a loop is removed.
26897
26898 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
26899
26900         * calls.c (store_one_arg): Pass correct alignment to
26901         emit_push_insn for non-BLKmode values.
26902         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
26903         unaligned stack slot via a suitably aligned slot.
26904
26905 2007-02-08  DJ Delorie  <dj@redhat.com>
26906
26907         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
26908         warnings.
26909         (legal_subregs): Use unsigned char, make const.
26910         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
26911
26912 2007-02-08  Paul Brook  <paul@codesourcery.com>
26913
26914         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
26915         special interworking needed.
26916
26917 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
26918
26919         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
26920         conditional to __SSE2__.
26921         (Entries below should have been added to first ChangeLog
26922         entry for amdfam10 dated 2007-02-05)
26923         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
26924         defined.
26925         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
26926         defined.
26927         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
26928         defined.
26929
26930 2007-02-08  DJ Delorie  <dj@redhat.com>
26931
26932         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
26933         * config/m32c/m32c.c (legal_subregs): New.
26934         (m32c_illegal_subreg_p): New.
26935         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
26936         unsupported subregs of hard regs.
26937
26938 2007-02-08  Jan Hubicka  <jh@suse.cz>
26939
26940         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
26941         the same one; always update histograms.
26942
26943 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
26944
26945         * passes.c (init_optimization_passes): Tidy comment.
26946
26947 2007-02-08  Roger Sayle  <roger@eyesopen.com>
26948
26949         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
26950         strip zero_extend, bswap and rotates from POCOUNT's argument.
26951         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
26952         zero_extend and rotates from PARITY's argument.
26953         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
26954         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
26955         of an integer constant at compile-time.
26956
26957 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
26958
26959         PR 30562
26960         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
26961         Update all users.
26962         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
26963         users.
26964         (init_alias_info):
26965         * tree-ssa-live.c (remove_unused_locals): Do not remove
26966         TREE_ADDRESSABLE variables.
26967         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
26968         * tree-ssa-operands.c (add_virtual_operand): Remove argument
26969         FOR_CLOBBER.  Update all users.
26970         If VAR has an associated alias set, add a virtual operand for
26971         it if no alias is found to conflict with the memory reference.
26972
26973 2007-02-07  Jan Hubicka  <jh@suse.cz>
26974             Robert Kidd <rkidd@crhc.uiuc.edu>
26975
26976         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
26977
26978 2007-02-07  Ian Lance Taylor  <iant@google.com>
26979
26980         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
26981
26982 2007-02-07  Roger Sayle  <roger@eyesopen.com>
26983
26984         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
26985         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
26986         tablejumpdi, movsi_to_cr_one): Remove constraints from
26987         define_expand's match_operands.
26988
26989 2007-02-07  Roger Sayle  <roger@eyesopen.com>
26990
26991         * global.c (compute_regsets): Move declatation of "i" inside of
26992         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
26993
26994 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
26995
26996         PR c++/30703
26997         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
26998         of INDIRECT_REF <RESULT_DECL>.
26999
27000         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
27001
27002 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
27003             Kaz Kojima  <kkojima@gcc.gnu.org>
27004
27005         PR target/29746
27006         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
27007         properly.
27008         (sh_initialize_trampoline): Add parentheses to avoid a warning.
27009
27010 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
27011
27012         * doc/loop.texi: Document possibility not to perform disambiguation
27013         of loops with multiple latches.
27014         * cfgloopmanip.c (alp_enum_p): Removed.
27015         (add_loop): Handle subloops.  Use get_loop_body_with_size.
27016         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
27017         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
27018         the new forwarder block.
27019         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
27020         Handle the case latch is NULL.
27021         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
27022         modifications when marking loop exits.
27023         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
27024         be modified.
27025         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
27026         disambiguate_loops_with_multiple_latches.
27027         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
27028         before fix_loop_structure.
27029         * cfgloop.c: Include pointer-set.h and output.h.
27030         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
27031         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
27032         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
27033         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
27034         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
27035         disambiguate_multiple_latches, get_loop_body_with_size,
27036         disambiguate_loops_with_multiple_latches): New functions.
27037         (flow_loop_dump): Dump multiple latch edges.
27038         (flow_loop_nodes_find): Handle loops with multiple latches.
27039         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
27040         (glb_enum_p): Modified.
27041         (get_loop_body): Use get_loop_body_with_size.
27042         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
27043         (AVOID_CFG_MODIFICATIONS): New constant.
27044         (disambiguate_loops_with_multiple_latches, add_loop,
27045         get_loop_body_with_size): Declare.
27046         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
27047
27048 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
27049
27050         PR inline-asm/28686
27051         * global.c (compute_regsets): New function.
27052         (global_alloc): Refactored ELIMINABLE_REGSET
27053         and NO_GLOBAL_ALLOC_REGS computation out.
27054         (rest_of_handle_global_alloc): Call compute_regsets()
27055         for non-optimizing case.
27056
27057 2007-02-06  Richard Henderson  <rth@redhat.com>
27058
27059         * config/i386/constraints.md (Y2): Rename from Y.
27060         (Yi): New constraint.
27061         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
27062         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
27063         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
27064         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
27065         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
27066         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
27067         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
27068         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
27069         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
27070         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
27071         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
27072         vec_extractv2si_1): Change Y constraints to Y2.
27073         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
27074         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
27075         Change Y constraints to Y2.
27076         (sse2_loadld): Change Y constraints to x.
27077
27078 2007-02-06  Roger Sayle  <roger@eyesopen.com>
27079
27080         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
27081         (parity<mode>2): New define_expand using rs6000_emit_parity.
27082         * config/rs6000/rs6000.c (rs6000_emit_popcount,
27083         rs6000_emit_parity): New functions.
27084         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
27085         rs6000_emit_parity): Prototype here.
27086
27087 2007-02-06  Ian Lance Taylor  <iant@google.com>
27088
27089         * lower-subreg.c (simple_move_operand): Reject CONST.
27090         (resolve_clobber): Call validate_change rather than directly
27091         assigning to XEXP (pat, 0).
27092
27093 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
27094
27095         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
27096         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
27097         (tree-cfg.o): Remove hashtab.h dependency.
27098
27099         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
27100         (struct ivopts_data): Change niters to pointer_map_t.
27101         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
27102         (niter_for_exit): Create pointer_map on demand.  Change for
27103         pointer_map API.
27104         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
27105         (free_loop_data): Destroy data->niters if created and reset field.
27106         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
27107         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
27108
27109         * tree-ssa-reassoc.c: Include pointer-set.h.
27110         (bb_rank): Change to long *.
27111         (operand_rank): Change to pointer_map_t.
27112         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
27113         (insert_operand_rank): Accept long.
27114         (operand_entry_hash, operand_entry_eq): Remove.
27115         (get_rank): Return long.  Adjust for changes above.
27116         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
27117         and operand_rank.
27118         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
27119
27120         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
27121         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
27122         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
27123         is not NULL.
27124         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
27125         directly since it cannot be NULL.
27126         (get_vi_for_tree): Rewrite for pointer_map API.
27127         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
27128         (init_alias_vars): Create vi_for_tree as pointer_map.
27129         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
27130
27131         * tree-cfg.c: Don't include hashtab.h.
27132         (edge_to_cases): Declare as pointer_map.
27133         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
27134         Delete.
27135         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
27136         (start_recording_case_labels): Create edge_to_cases as pointer_map.
27137         (end_recoding_case_labels): Cleanup edge_to_cases manually before
27138         destroying it.
27139         (record_switch_edge): Delete.
27140         (get_cases_for_edge): Adjust for pointer_map API, inline
27141         record_switch_edge (rewritten for new API), remove goto.
27142
27143 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
27144
27145         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
27146         * tree-nested.c: Include pointer-set.h.
27147         (var_map_elt, var_map_eq, var_map_hash): Delete.
27148         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
27149         to pointer_map_t's.
27150         (nesting_info_bitmap_obstack): New.
27151         (lookup_field_for_decl): Adjust for pointer_map API.
27152         (lookup_tramp_for_decl): Adjust for pointer_map API.
27153         (get_nonlocal_debug_decl): Adjust for pointer_map API.
27154         (get_local_debug_decl): Adjust for pointer_map API.
27155         (convert_nl_goto_reference): Adjust for pointer_map API.
27156         (convert_nl_goto_receiver): Adjust for pointer_map API.
27157         (create_nesting_tree): Create outside GGC space.  Create bitmap on
27158         the new obstack.  Create field_map and var_map as pointer_maps.
27159         (free_nesting_tree): Adjust for changes to create_nesting_tree.
27160         (root): Delete.
27161         (lower_nested_functions): Move root here, no need to NULL it.
27162         Initialize and release the obstack.
27163
27164 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
27165
27166         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
27167         Remove prototypes and make them non-static.
27168         (struct tree_int_map): Remove.
27169         * tree.h (struct tree_int_map): Move here, turning TO into an
27170         unsigned int.
27171         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
27172
27173         * tree.h (TREE_COMPLEXITY): Remove.
27174         (struct tree_exp): Remove complexity field.
27175         * tree.c (build1_stat): Don't set it.
27176
27177 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
27178             Victor Kaplansky  <victork@il.ibm.com>
27179
27180         * tree-vectorizer.c (vect_is_simple_use): Support induction.
27181         (vect_is_simple_reduction): Support reduction with induction as
27182         one of the operands.
27183         (vect_is_simple_iv_evolution): Fix formatting.
27184         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
27185         formatting.  Don't mark induction phis for vectorization.
27186         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
27187         * tree-vect-transform.c (get_initial_def_for_induction): New function.
27188         (vect_get_vec_def_for_operand): Support induction.
27189         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
27190         induction case.
27191         (vectorizable_reduction): Support reduction with induction as one of
27192         the operands.
27193         (vectorizable_type_demotion): Use def-type of stmt argument rather
27194         than dummy def-type.
27195
27196         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
27197         flag_tree_scev_cprop.
27198         * common.opt (tree-scev-cprop): New flag.
27199
27200         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
27201         call to vect_get_new_vect_var.
27202
27203 2007-02-06  Ira Rosen  <irar@il.ibm.com>
27204
27205         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
27206         vectype is not NULL.
27207         (vect_pattern_recog_1): Likewise.
27208
27209 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27210
27211         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
27212         (fold_negate_expr): Likewise.
27213
27214 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
27215
27216         PR debug/30189
27217         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
27218         even if cv-qualification is the same.
27219
27220 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
27221
27222         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
27223         __enable_execute_stack on completion.
27224
27225 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27226
27227         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
27228         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
27229         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
27230         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
27231         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
27232         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
27233         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
27234         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
27235
27236 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27237
27238         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
27239         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
27240         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
27241         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
27242         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
27243         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
27244         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
27245         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
27246         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
27247         umuldi3_highpart_rex64, umulsi3_highpart_insn,
27248         umulsi3_highpart_zext, smuldi3_highpart_rex64,
27249         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
27250         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
27251         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
27252         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
27253         sqrtextenddfxf2_i387): Added amdfam10_decode.
27254
27255         * config/i386/athlon.md (athlon_idirect_amdfam10,
27256         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
27257         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
27258         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
27259         athlon_ivector_store_amdfam10): New define_insn_reservation.
27260         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
27261         amdfam10.
27262
27263 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27264
27265         * config/i386/athlon.md (athlon_call_amdfam10,
27266         athlon_pop_amdfam10, athlon_lea_amdfam10): New
27267         define_insn_reservation.
27268         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
27269         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
27270         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
27271
27272 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27273
27274         * config/i386/athlon.md (athlon_sseld_amdfam10,
27275         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
27276         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
27277
27278 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27279
27280         * config/i386/athlon.md (athlon_sseins_amdfam10): New
27281         define_insn_reservation.
27282         * config/i386/i386.md (sseins): Added sseins to define_attr type
27283         and define_attr unit.
27284         * config/i386/sse.md: Set type attribute to sseins for insertq
27285         and insertqi.
27286
27287 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27288
27289         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
27290         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
27291         ssecomi_load_amdfam10, ssecomi_amdfam10,
27292         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
27293         define_insn_reservation.
27294         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
27295
27296 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27297
27298         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
27299         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
27300         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
27301         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
27302         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
27303         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
27304         define_insn_reservation.
27305
27306         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
27307         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
27308         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
27309         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
27310         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
27311
27312 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27313
27314         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
27315         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
27316         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
27317         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
27318         athlon_ssemul_load_k8): Added amdfam10.
27319
27320 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27321
27322         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
27323         (x86_sse_unaligned_move_optimal): New variable.
27324
27325         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
27326         m_AMDFAM10.
27327         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
27328         for unaligned vector SSE double/single precision loads for AMDFAM10.
27329
27330 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27331
27332         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
27333         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
27334         Define TARGET_CPU_DEFAULT_amdfam10.
27335         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
27336         (processor_type): Add PROCESSOR_AMDFAM10.
27337
27338         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
27339         processor_type in config/i386/i386.h.
27340         Enable imul peepholes for TARGET_AMDFAM10.
27341
27342         * config.gcc: Add support for --with-cpu option for amdfam10.
27343
27344         * config/i386/i386.c (amdfam10_cost): New variable.
27345         (m_AMDFAM10): New macro.
27346         (m_ATHLON_K8_AMDFAM10): New macro.
27347         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
27348         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
27349         x86_promote_QImode, x86_integer_DFmode_moves,
27350         x86_partial_reg_dependency, x86_memory_mismatch_stall,
27351         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
27352         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
27353         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
27354         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
27355         Enable/disable for amdfam10.
27356         (override_options): Add amdfam10_cost to processor_target_table.
27357         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
27358         processor_alias_table.
27359         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
27360         (ix86_adjust_cost): Add code for amdfam10.
27361
27362 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27363
27364         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
27365         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
27366         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
27367         * config/i386/i386.h: Add builtin definition for SSE4A.
27368         * config/i386/i386.md: Add support for ABM instructions
27369         (popcnt and lzcnt).
27370         * config/i386/sse.md: Add support for SSE4A instructions
27371         (movntss, movntsd, extrq, insertq).
27372         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
27373         Add -march=amdfam10 flag.
27374         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
27375         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
27376         and amdfam10.
27377         * doc/extend.texi: Add documentation for SSE4A builtins.
27378
27379 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
27380
27381         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
27382
27383 2007-02-05  Richard Guenther  <rguenther@suse.de>
27384
27385         * tree-vectorizer.h (vectorizable_function): Add argument type
27386         argument, change return type.
27387         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
27388         * tree-vect-transform.c (vectorizable_function): Handle extra
27389         argument, return vectorized function decl.
27390         (build_vectorized_function_call): Remove.
27391         (vectorizable_call): Handle calls with result and argument types
27392         differing.  Handle loop vectorization factor correctly.
27393         * targhooks.c (default_builtin_vectorized_function): Adjust for
27394         extra argument.
27395         * targhooks.h (default_builtin_vectorized_function): Likewise.
27396         * target.h (builtin_vectorized_function): Add argument type
27397         argument.
27398         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
27399         extra argument, allow vectorizing of lrintf.
27400         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
27401         documentation of target hook.
27402
27403 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
27404
27405         PR target/30665
27406         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
27407         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
27408         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
27409
27410 2007-02-05  Roger Sayle  <roger@eyesopen.com>
27411
27412         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
27413         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
27414         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
27415         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
27416         before canonicalizing sincos to cexpi.
27417         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
27418
27419 2007-02-05  Roger Sayle  <roger@eyesopen.com>
27420
27421         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
27422         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
27423         (alpha_init_builtins): Use alpha_add_builtins to process tables.
27424
27425 2007-02-05  Roger Sayle  <roger@eyesopen.com>
27426
27427         * mips-tfile.c (initialize_init_file): Correct endianness test.
27428
27429 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
27430
27431         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
27432         the 'y' constraint.
27433
27434 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
27435
27436         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
27437         saves in a PARALLEL before the register assignments.
27438
27439 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
27440
27441         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
27442         DWARF_FRAME_RETURN_COLUMN to be a general register.
27443         * dwarf2out.c (init_return_column_size): New function, split from...
27444         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
27445         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
27446         to be nongeneral registers.
27447         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
27448         integer registers.
27449         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
27450         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
27451
27452 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
27453
27454         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
27455
27456 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
27457
27458         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
27459         (remove_path): Use can_remove_branch_p and remove_branch instead
27460         of loop_delete_branch_edge.
27461         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
27462         (tree_transform_and_unroll_loop): Remove dead branches immediately.
27463         Update profile using scale_dominated_blocks_in_loop.
27464         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
27465         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
27466         (can_remove_branch_p, remove_branch): Declare.
27467         * tree-cfg.c (tree_can_remove_branch_p): New function.
27468         (tree_cfg_hooks): Add tree_can_remove_branch_p.
27469         * cfgrtl.c (rtl_can_remove_branch_p): New function.
27470         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
27471
27472 2007-02-05  Jan Hubicka  <jh@suse.cz>
27473
27474         PR middle-end/30696
27475         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
27476         nodes in cgraph, don't remove offline copy of the function.
27477
27478 2007-02-04  Jan Hubicka  <jh@suse.cz>
27479
27480         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
27481         vectors might cause maybe_lookup_element_for_expr to be called
27482         on non-sra-candidate.
27483
27484 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
27485
27486         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
27487         config/bfin/bfin.md, config/bfin/predicates.md: Follow
27488         spelling conventions.
27489
27490 2007-02-04  Richard Guenther  <rguenther@suse.de>
27491
27492         PR middle-end/30636
27493         * fold-const.c (try_move_mult_to_index): Make sure to not
27494         overflow one dimension of a multi-dimensional array access.
27495
27496 2007-02-04  Jan Hubicka  <jh@suse.cz>
27497
27498         * passes.c (init_optimization_passes): Reindent.
27499
27500 2007-02-04  Jan Hubicka  <jh@suse.cz>
27501             Eric Botcazou  <ebotcazou@adacore.com>
27502
27503         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
27504         (execute_fixup_cfg): Break out the abnormal goto code.
27505         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
27506         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
27507         (optimize_inline_calls): Call make_nonlocal_label_edges.
27508
27509 2007-02-04  Jan Hubicka  <jh@suse.cz>
27510
27511         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
27512         true when something was changed.
27513         (rename_ssa_copies): When something was changed, do
27514         TODO_remove_unused_locals.
27515         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
27516         add TODO_remove_unused_locals when instruction was removed.
27517
27518 2007-02-04  Jan Hubicka  <jh@suse.cz>
27519
27520         * ipa-inline.c (try_inline): Improve debug output; work on already
27521         inline edges too.
27522         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
27523         call try_inline for already inlined edges too when flattening;
27524         inline also functions that make callee growth but overall unit size
27525         reduce.
27526
27527 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
27528
27529         * config/m32c/bitops.md, config/m32c/jump.md,
27530         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
27531         config/m32r/m32r.h, config/m32r/m32r.md,
27532         config/m32r/predicates.md, config/m68hc11/larith.asm,
27533         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
27534         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
27535         config/mips/mips-protos.h, config/mips/mips.c,
27536         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
27537         config/mn10300/mn10300.h, config/mn10300/predicates.md,
27538         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
27539         spelling conventions.
27540
27541         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
27542         Follow spelling conventions.
27543
27544 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
27545
27546         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
27547         warn about C++0x compatibility.
27548
27549 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
27550
27551         * config/h8300/h8300.c, config/h8300/h8300.h,
27552         config/h8300/h8300.md: Follow spelling conventions.
27553
27554 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
27555
27556         PR middle-end/30667
27557         * combine.c (try_combine): Do not substitute source operand
27558         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
27559
27560 2007-02-03  Jan Hubicka  <jh@suse.cz>
27561
27562         PR gcov-profile/30650
27563         * value-prof.c (stringop_block_profile): Fix handling of size counter;
27564         do not divide by zero for never executed counters.
27565         (tree_find_values_to_profile): Fix counters.
27566         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
27567
27568 2007-02-03  Ian Lance Taylor  <iant@google.com>
27569
27570         * lower-subreg.c (simple_move_operand): New static function,
27571         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
27572         operands.
27573         (simple_move): Call simple_move_operand.
27574         (find_decomposable_subregs): Add special handling of MEMs.
27575         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
27576         meaning of return value.  If we see a hard register, test whether
27577         it can store a word_mode value.  Change all callers.
27578
27579 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27580
27581         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
27582         ftrapv insns and expanders.
27583         (subdi3): Change define_expand operand 1 to arith11_operand, and
27584         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
27585         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
27586         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
27587         respectively.
27588
27589         PR middle-end/30174
27590         * varasm.c (notice_global_symbol): Treat global objects as weak when
27591         flag_shlib is true.
27592
27593 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27594
27595         * emit-rtl.c (dconstpi): Delete.
27596         (dconstsqrt2): New.
27597         (init_emit_once): Delete dconstpi and init dconstsqrt2.
27598         * real.h (dconstpi): Delete.
27599         (dconstsqrt2): New.
27600         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
27601         (fold_builtin_hypot): Likewise.
27602
27603 2007-02-03  Tom Tromey  <tromey@redhat.com>
27604
27605         PR driver/30246
27606         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
27607         -gcoff3, -gxcoff3, -gvms3 implies -dD.
27608
27609 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
27610
27611         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
27612         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
27613         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
27614         config/rs6000/cell.md, config/rs6000/darwin.h,
27615         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
27616         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
27617         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
27618         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
27619         typos.  Follow spelling conventions.
27620         * doc/invoke.texi: Follow spelling conventions.
27621
27622 2007-02-03  Roger Sayle  <roger@eyesopen.com>
27623
27624         * simplify-rtx.c (simplify_relational_operation_1): Implement some
27625         canonicalization transformations that attempt to simplify integer
27626         constant comparisons to become comparisons against zero.
27627
27628 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27629
27630         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
27631         fabs(x)*sqrt(2).
27632         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
27633         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
27634
27635 2007-02-02  Mike Stump  <mrs@apple.com>
27636
27637         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
27638         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
27639         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
27640         generate a branch island.
27641
27642 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
27643
27644         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
27645         (xtensa_legitimate_address_p): New.
27646         (xtensa_legitimize_address): New.
27647         (xtensa_output_addr_const_extra): New.
27648         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
27649         (BASE_REG_P): New.
27650         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
27651         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
27652         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
27653         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
27654         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
27655         (xtensa_legitimize_address): New.
27656         (xtensa_output_addr_const_extra): New.
27657
27658 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
27659
27660         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
27661
27662 2007-02-02  Ian Lance Taylor  <iant@google.com>
27663
27664         * expmed.c (expand_divmod): Add comment.
27665
27666 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
27667
27668         * emit-rtl.c (renumber_insns): Remove.
27669         * flags.h: Remove the extern for flag_renumber_insns.
27670         * rtl.h: Remove the prototype for renumber_insns.
27671         * toplev.c (flag_renumber_insns): Remove.
27672
27673 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
27674
27675         Revert for x86 darwin:
27676         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
27677
27678         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
27679         code before the following patch under TARGET_MACHO.
27680         (ix86_function_value_regno_p): Likewise.
27681
27682 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27683
27684         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
27685         COMPLEX_EXPR.
27686
27687 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
27688
27689         PR target/29682
27690         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
27691         loads to general or fp registers.  Add comments.
27692         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
27693
27694 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
27695
27696         * pointer-set.c (insert_aux): Only return insertion slot.
27697         (pointer_set_insert): Adjust.
27698         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
27699         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
27700         pointer_map_traverse): New.
27701         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
27702         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
27703         pointer_map_contains, pointer_map_traverse): Declare.
27704
27705 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
27706
27707         PR middle-end/30473
27708         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
27709         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
27710
27711 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
27712
27713         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
27714
27715         (struct _dep): New type.
27716         (dep_t): New typedef.
27717         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
27718         (DEP_STATUS): New access macro.  The macro with the same name was
27719         renamed to DEP_LINK_STATUS.
27720         (dep_init): Declare function
27721
27722         (struct _dep_link): New type.
27723         (dep_link_t): New typedef.
27724         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
27725         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
27726         (DEP_LINK_STATUS): New macro.
27727         (debug_dep_links): New debug function.
27728
27729         (struct _deps_list): New type.
27730         (deps_list_t): New typedef.
27731         (DEPS_LIST_FIRST): New access macro.
27732         (FOR_EACH_DEP_LINK): New cycle macro.
27733         (create_deps_list, free_deps_list, delete_deps_list): Declare
27734         functions.
27735         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
27736         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
27737         (copy_deps_list_change_con): Ditto.
27738
27739         (move_dep_link): Declare function.
27740
27741         (struct _dep_node): New type.
27742         (dep_node_t): New typedef.
27743         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
27744
27745         (struct haifa_insn_data.back_deps): New field to hold backward
27746         dependencies of the insn.
27747         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
27748         to deps_list_t.
27749         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
27750         Change its type to deps_list_t.
27751         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
27752         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
27753         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
27754
27755         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
27756
27757         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
27758
27759         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
27760         and all callers.
27761         (dep_cost): Declare.
27762
27763         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
27764         (ds_to_dk, dk_to_ds): New functions.
27765
27766         (init_dep_1): New static function.
27767         (init_dep): New function.
27768         (copy_dep): New static function.
27769
27770         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
27771         functions.
27772         (detach_dep_link): New static function.
27773         (move_dep_link): New function.
27774
27775         (dep_links_consistent_p, dump_dep_links): New static functions.
27776         (debug_dep_links): New debugging function.
27777
27778         (deps_obstack, dl_obstack, dn_obstack): New static variables.
27779
27780         (alloc_deps_list, init_deps_list): New static functions.
27781         (create_deps_list): New function.
27782         (clear_deps_list): New static function.
27783         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
27784         (deps_list_consistent_p, dump_deps_list): New static functions.
27785         (debug_deps_list): New function.
27786         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
27787         functions.
27788         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
27789
27790         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
27791         use new scheduler dependencies lists.
27792         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
27793         (sched_analyze): Ditto.  Initialize dependencies lists.
27794         (add_forw_dep, compute_forward_dependences): Update to use new
27795         scheduler dependencies lists.
27796
27797         (init_dependency_caches): Init deps_obstack.
27798         (free_dependency_caches): Free deps_obstack.
27799
27800         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
27801         new scheduler dependencies lists.
27802         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
27803         (add_back_forw_dep, delete_back_forw_dep): Ditto.
27804
27805         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
27806         Update to use new scheduler dependencies lists.
27807         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
27808         (debug_dependencies): Ditto.
27809         (schedule_region): Update comments.
27810
27811         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
27812         scheduler dependencies lists.
27813         (schedule_ebb): Update comments.
27814
27815         * rtl.def (DEPS_LIST): Remove.
27816
27817         * lists.c (unused_deps_list): Remove.
27818         (free_list): Update assertions.
27819
27820         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
27821         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
27822
27823         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
27824         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
27825
27826         * haifa-sched.c (comments): Update.
27827         (insn_cost1): Remove.  Inline the code into insn_cost ().
27828         (insn_cost): Update to use new scheduler dependencies lists.  Move
27829         processing of the dependency cost to dep_cost ().
27830         (dep_cost): New function.  Use it instead of insn_cost () when
27831         evaluating cost of the dependency.  Use compatible interface to
27832         interact with the target.
27833         (priority): Update to use new scheduler dependencies lists.
27834         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
27835         with greater number of insns that depend on the insn.
27836         (schedule_insn): Update to use new scheduler dependencies lists.  Add
27837         code to free backward dependencies lists.  Inline and optimize code
27838         from resolve_dep () - see PR28071.
27839         (ok_for_early_queue_removal): Update to use new scheduler dependencies
27840         lists.  Update call to targetm.sched.is_costly_dependence hook.
27841
27842         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
27843         scheduler dependencies lists.
27844
27845         (resolve_dep): Remove.  Move the logic to schedule_insn ().
27846         (init_h_i_d): Initialize dependencies lists.
27847
27848         (process_insn_depend_be_in_spec): Rename to
27849         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
27850         dependencies lists.
27851         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
27852         Update to use new scheduler dependencies lists.
27853         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
27854
27855         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
27856         new scheduler dependencies lists.
27857         (build_intra_loop_deps): Ditto.
27858
27859         * target.h (struct _dep): Declare to use in
27860         gcc_target.sched.is_costly_dependence.
27861         (struct gcc_target.sched.adjust_cost): Fix typo.
27862         (struct gcc_target.sched.is_costly_dependence): Change signature to
27863         use single dep_t parameter instead of an equivalent triad.
27864         (struct gcc_target.sched.adjust_cost_2): Remove.
27865
27866         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
27867
27868         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
27869
27870         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
27871         documentation.
27872         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
27873
27874         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
27875         (REG_DEP_TRUE): Document.
27876
27877         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
27878         Change signature to correspond to the targetm.sched.adjust_cost hook.
27879         Update use in TARGET_SCHED_ADJUST_COST_2.
27880         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
27881         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
27882         new scheduler dependencies lists.
27883         (ia64_gen_check): Ditto.
27884
27885         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
27886         scheduler dependencies lists.
27887
27888         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
27889         signature to correspond to the targetm.sched.is_costly_dependence hook.
27890         (is_costly_group): Update to use new scheduler dependencies lists.
27891
27892         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
27893         instead of INSN_COST () macro.
27894
27895 2007-02-01  Ian Lance Taylor  <iant@google.com>
27896
27897         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
27898
27899 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
27900
27901         * pa.md (tp_load): Correct mfctl instruction syntax.
27902
27903 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
27904
27905         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
27906         altivec_padding_size calculation on AIX.  Improve comment, add
27907         assert to verify that it's right.
27908
27909         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
27910         64-bit.
27911
27912 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
27913
27914         PR inline-asm/28686
27915         * global.c (global_alloc): Add mising initialization of
27916         ELIMINABLE_REGSET.
27917
27918 2007-02-01  Roger Sayle  <roger@eyesopen.com>
27919
27920         * alias.c (init_alias_analysis): Correct whitespace.
27921         * bb-reorder.c (fix_edges_for_rarely_executed_code,
27922         partition_hot_cold_basic_blocks): Likewise.
27923         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
27924         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
27925         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
27926         fold_builtin_snprintf_chk, fold_builtin_printf,
27927         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
27928         do_mpfr_arg3, do_mpfr_sincos): Likewise.
27929         * cfgcleanup.c (cleanup_cfg): Likewise.
27930         * cfgexpand.c (tree_expand_cfg): Likewise.
27931         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
27932         * function.c (get_next_funcdef_no): Likewise.
27933         * gengtype.c (main): Likewise.
27934         * genmodes.c (main): Likewise.
27935         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
27936         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
27937         * ifcvt.c (noce_emit_move_insn): Likewise.
27938         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
27939         Likewise.
27940         * stor-layout.c (get_best_mode): Likewise.
27941         * tree-ssa-loop-niter.c (get_val_for): Likewise.
27942         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
27943         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
27944         perform_var_substitution, solve_graph): Likewise.
27945         * tree-vrp.c (vrp_finalize): Likewise.
27946
27947 2007-02-01  Ian Lance Taylor  <iant@google.com>
27948
27949         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
27950         high part of a paradoxical subreg, return a constant zero.
27951
27952 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
27953
27954         * toplev.c (lang_dependent_init): Call init_set_costs.
27955         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
27956
27957 2007-02-01  Richard Guenther  <rguenther@suse.de>
27958
27959         PR middle-end/30656
27960         * fold-const.c (fold_negate_expr): Allow negating a
27961         constant if overflow does not change.
27962
27963 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27964
27965         * doc/c-tree.texi (Expression trees): Improve markup.
27966         * doc/tm.texi (Register Classes, Addressing Modes)
27967         (Floating Point): Fix spacing after abbreviations.  Fix some
27968         typos.
27969
27970 2007-02-01  Ben Elliston  <bje@au.ibm.com>
27971
27972         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
27973         * doc/contrib.texi: Likewise.
27974         * doc/install.texi: Likewise.
27975
27976 2007-01-31  Richard Henderson  <rth@redhat.com>
27977             Ian Lance Taylor  <iant@google.com>
27978
27979         * lower-subreg.c: New file.
27980         * rtl.def (CONCATN): Define.
27981         * passes.c (init_optimization_passes): Add pass_lower_subreg and
27982         pass_lower_subreg2.
27983         * emit-rtl.c (update_reg_offset): New static function, broken out
27984         of gen_rtx_REG_offset.
27985         (gen_rtx_REG_offset): Call update_reg_offset.
27986         (gen_reg_rtx_offset): New function.
27987         * regclass.c: Revert patch of 2006-03-05, restoring
27988         reg_scan_update.
27989         (clear_reg_info_regno): New function.
27990         * dwarf2out.c (concatn_loc_descriptor): New static function.
27991         (loc_descriptor): Handle CONCATN.
27992         * common.opt (fsplit_wide_types): New option.
27993         * opts.c (decode_options): Set flag_split_wide_types when
27994         optimizing.
27995         * timevar.def (TV_LOWER_SUBREG): Define.
27996         * rtl.h (gen_reg_rtx_offset): Declare.
27997         (reg_scan_update): Declare.
27998         * regs.h (clear_reg_info_regno): Declare.
27999         * tree-pass.h (pass_lower_subreg): Declare.
28000         (pass_lower_subreg2): Declare.
28001         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
28002         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
28003         -fsplit-wide-types.
28004         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
28005         * Makefile.in (OBJS-common): Add lower-subreg.o.
28006         (lower-subreg.o): New target.
28007
28008 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
28009
28010         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
28011
28012 2007-01-31  Anatoly Sokolov <aesok@post.ru>
28013
28014         PR target/19087
28015         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
28016
28017 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28018
28019         PR middle-end/29335
28020         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
28021
28022 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
28023
28024         * cfgloop.h: Include vec-prim.h.
28025         (enum li_flags): Remove LI_ONLY_OLD.
28026         (loop_iterator): Changed.
28027         (fel_next, fel_init): Iterate over loop tree.
28028         (FOR_EACH_LOOP_BREAK): New macro.
28029         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
28030         FOR_EACH_LOOP.
28031         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
28032         * modulo-sched.c (sms_schedule): Ditto.
28033         * tree-vectorizer.c (vectorize_loops): Ditto.
28034         * doc/loop.texi: Update information on loop numbering and behavior of
28035         FOR_EACH_LOOP wrto new loops.
28036         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
28037         add_to_evolution_1): Test nestedness of loops instead of comparing
28038         their numbers.
28039         * tree-chrec.c (chrec_fold_plus_poly_poly,
28040         chrec_fold_multiply_poly_poly, chrec_evaluate,
28041         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
28042         reset_evolution_in_loop): Ditto.
28043         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
28044
28045 2007-01-31  Dirk Mueller  <dmueller@suse.de>
28046
28047         * c-common.c (warn_about_parentheses): Separate warning about
28048         un-parenthized sequence of comparison operators from the one
28049         which is supposed to warn about x <= y <= z.
28050
28051 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
28052
28053         * optabs.h (enum optab_index): Add new OTI_isinf.
28054         (isinf_optab): Define corresponding macro.
28055         * optabs.c (init_optabs): Initialize isinf_optab.
28056         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
28057         patterns.
28058         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
28059         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
28060         using isinf_optab.
28061         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
28062         expand_builtin_interclass_mathfn.
28063         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
28064         * config/i386/i386.md (UNSPEC_FXAM): New constant.
28065         (fxam<mode>2_i387): New insn pattern.
28066         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
28067         built-in functions as x87 inline asm.
28068
28069 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
28070
28071         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
28072
28073 2007-01-30  Eric Christopher  <echristo@apple.com>
28074
28075         * config.gcc: Add geode.
28076
28077 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
28078
28079         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
28080         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
28081         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
28082         value-prof.c: Fix comment typos.
28083
28084 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28085
28086         PR c++/24745
28087         * doc/invoke.texi (Wpointer-arith): Document warning.
28088
28089 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
28090
28091         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
28092         the list of discrepancies from the draft TR.
28093
28094 2007-01-30  Dirk Mueller  <dmueller@suse.de>
28095
28096         PR c++/30601
28097         * doc/invoke.texi (-Wreturn-type): Update description to
28098         match new behavior.
28099
28100 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
28101
28102         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
28103
28104 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
28105
28106         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
28107         to handle optabs that operate on floating point input argument and
28108         output to integer output.
28109         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
28110         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
28111         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
28112         expand_builtin_interclass_mathfn ().
28113         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
28114         (ilogbsi2): Remove.
28115         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
28116         ilogbl built-in functions as x87 intrinsics.
28117
28118 2007-01-30  Richard Guenther  <rguenther@suse.de>
28119
28120         PR middle-end/27657
28121         * dwarf2out.c (reference_to_unused): Query varpool if the
28122         variable was output.
28123
28124 2007-01-30  Richard Guenther  <rguenther@suse.de>
28125
28126         PR middle-end/30313
28127         * passes.c (execute_one_pass): Reset in_gimple_form to not
28128         confuse non-unit-at-a-time mode.
28129
28130 2007-01-29  Roger Sayle  <roger@eyesopen.com>
28131             Richard Guenther  <rguenther@suse.de>
28132
28133         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
28134         avoid undefined behaviour on overflow.  Use force_fit_type_double
28135         to construct the constant with the specified TREE_OVERFLOW.
28136
28137 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
28138
28139         * config/dfp-bit.c: Add parameterized support for fp exceptions.
28140         * config/dfp-bit.h: Ditto.
28141
28142 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28143
28144         * c-decl.c (pop_scope): Replace warnings with call to
28145         warn_for_unused_label.
28146         * c-common.h (warn_for_unused_label): Declare.
28147         * c-common.c (warn_for_unused_label): Define.
28148
28149 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28150
28151         * tree-optimize.c (update_inlined_to_pointers): Delete unused
28152         function.
28153
28154 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
28155
28156         * Makefile.in (USER_H): Remove decfloat.h.
28157         * ginclude/decfloat.h: Delete, moving contents to ...
28158         * ginclude/float.h: Add support for decimal floating point,
28159         guarded by __STDC_WANT_DEC_FP__.
28160
28161 2007-01-29  Mike Stump  <mrs@apple.com>
28162
28163         * doc/gccint.texi (Top): Rename Loop Representation to Loop
28164         Analysis and Representation to resolve case insensitive conflict.
28165         * doc/loop.texi (Loop Analysis and Representation): Likewise.
28166
28167 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
28168
28169         * tree.h (struct tree_memory_tag): Add aliases member.
28170         (MTAG_ALIASES): New macro.
28171         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
28172         (add_may_alias): Remove pointer-set. Update for may_aliases being
28173         a bitmap.
28174         (mark_aliases_call_clobbered): Update for may_aliases being a
28175         bitmap.
28176         (compute_tag_properties): Ditto.
28177         (create_partition_for): Ditto.
28178         (compute_memory_partitions): Ditto.
28179         (dump_may_aliases_for): Ditto.
28180         (is_aliased_with): Ditto.
28181         (add_may_alias_for_new_tag): Ditto.
28182         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
28183         (compute_is_aliased): New function.
28184         (compute_may_aliases): Call compute_is_aliased).
28185         (init_alias_info): Initialize alias_bitmap_obstack.
28186         (union_alias_set_into): New function.
28187         (compute_flow_sensitive_aliasing): Use union_aliases_into.
28188         (have_common_aliases_p): Rewrite to take two bitmaps and use
28189         intersection.
28190         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
28191         Update for bitmaps.
28192         (finalize_ref_all_pointers): Update for add_may_alias changes.
28193         (new_type_alias): Ditto.
28194         * tree-flow-inline.h (may_aliases): Return a bitmap.
28195         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
28196         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
28197         may_aliases being a bitmap.
28198         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
28199         may_aliases now returns a bitmap.
28200         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
28201         being a bitmap.
28202         * tree-ssa-operands.c (add_virtual_operand): Update for
28203         may_aliases being a bitmap.
28204
28205 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
28206
28207         PR tree-optimization/30630
28208         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
28209         variable as changed.
28210
28211 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
28212
28213         PR c++/28266
28214         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
28215         expanded only once even if an error occurs.
28216
28217 2007-01-29  Ben Elliston  <bje@au.ibm.com>
28218
28219         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
28220         (__gcov_average_profiler): Likewise.
28221         (__gcov_ior_profiler): Likewise.
28222         (__gcov_merge_ior): Likewise.
28223
28224 2007-01-28  Jan Hubicka  <jh@suse.cz>
28225
28226         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
28227         * value-prof.c (stringop_block_profile): Likewise.
28228
28229 2007-01-28  Jan Hubicka  <jh@suse.cz>
28230
28231         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
28232         Add variant handling histograms; add wrapper.
28233         (clear_storage_via_libcall): Export.
28234         (emit_block_move_hints): Break out from ...; add histograms.
28235         (emit_block_move): ... this one.
28236         (clear_storage_hints): Break out from ...; add histograms.
28237         (clear_storage): ... this one.
28238         (set_storage_via_memset): Handle histogram.
28239         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
28240         (clear_storage_hints, clear_storage_via_libcall): Declare.
28241         (set_storage_via_setmem): Update prototype.
28242         * doc/md.texi (movmem, setmem): Document new arguments.
28243
28244         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
28245         Add new histograms.
28246         (stringop_block_profile): New global function.
28247         (tree_stringops_values_to_profile): Profile block size and alignment.
28248         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
28249         HIST_TYPE_IOR.
28250         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
28251         (stringop_block_profile): Declare.
28252         * builtins.c: Include value-prof.h.
28253         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
28254         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
28255         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
28256         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
28257         * profile.c (instrument_values): Add new counters.
28258         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
28259         calls.
28260         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
28261         (tree_init_edge_profiler): Build new profilers.
28262         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
28263         (pass_tree_profile): Add dump.
28264         (tree_profile_hooks): Update.
28265         * Makefile.in (LIBGCOV): Add new constants.
28266         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
28267         __gcov_ior_profiler): New.
28268         * i386.md (movmem/setmem expanders): Add new optional arguments.
28269
28270 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
28271
28272         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
28273
28274 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
28275
28276         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
28277         (tree_unswitch_single_loop): Pass eni_size_weights to
28278         tree_num_loop_insns.
28279         * tree-ssa-loop-manip.c: Include tree-inline.h.
28280         (can_unroll_loop_p): Pass eni_size_weights to
28281         tree_num_loop_insns.
28282         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
28283         Pass eni_size_weights to estimate_num_insns.
28284         * tree.h (init_inline_once): Export.
28285         * toplev.c (backend_init): Call init_inline_once.
28286         * cgraphunit.c (cgraph_process_new_functions,
28287         cgraph_analyze_function): Pass eni_inlining_weights to
28288         estimate_num_insns.
28289         * ipa-inline.c (compute_inline_parameters): Ditto.
28290         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
28291         to estimate_num_insns.
28292         (try_unroll_loop_completely): Pass eni_size_weights to
28293         tree_num_loop_insns.
28294         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
28295         ot estimate_num_insns.
28296         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
28297         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
28298         * tree-inline.c (eni_inlining_weights, eni_size_weights,
28299         eni_time_weights): New variables.
28300         (init_inline_once): Initialize them.
28301         (struct eni_data): Mew.
28302         (estimate_num_insns_1, estimate_num_insns): Use weights.
28303         * tree-inline.h (struct eni_weights_d): New.
28304         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
28305         (estimate_num_insns): Declaration changed.
28306         * cfgloop.h (tree_num_loop_insns): Declaration changed.
28307         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
28308         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
28309
28310 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
28311
28312         * tree-data-ref.c (conflict_fn): Assert that the number of affine
28313         relations in the conflict function is valid.
28314
28315 2007-01-27  Ian Lance Taylor  <iant@google.com>
28316
28317         * common.opt: Add fstrict-overflow.
28318         * opts.c (decode_options): Set flag_strict_overflow if -O2.
28319         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
28320         (TYPE_OVERFLOW_UNDEFINED): Define.
28321         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
28322         Replace all uses.
28323         * tree.h (TYPE_TRAP_SIGNED): Don't define.
28324         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
28325         (fold_negate_expr): Likewise.
28326         (make_range): Likewise.
28327         (extract_muldiv_1): Likewise.
28328         (maybe_canonicalize_comparison): Likewise.
28329         (fold_comparison): Likewise.
28330         (fold_binary): Likewise.
28331         (tree_expr_nonnegative_p): Likewise.
28332         (tree_expr_nonzero_p): Likewise.
28333         * tree-vrp.c (compare_values): Likewise.
28334         (extract_range_from_binary_expr): Likewise.
28335         (extract_range_from_unary_expr): Likewise.
28336         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
28337         Likewise.
28338         (nowrap_type_p): Likewise.
28339         * tree-scalar-evolution.c (simple_iv): Likewise.
28340         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
28341         (build_range_check): Likewise.
28342         (extract_muldiv_1): Likewise.
28343         (fold_comparison): Likewise.
28344         * tree-vrp.c (vrp_int_const_binop): Likewise.
28345         (extract_range_from_unary_expr): Likewise.
28346         * convert.c (convert_to_integer): Likewise.
28347         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
28348         (fold_comparison): Likewise.
28349         (fold_binary): Likewise.
28350         * optabs.c (optab_for_tree_code): Likewise.
28351         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
28352         * simplify-rtx.c (simplify_const_relational_operation): Check
28353         flag_strict_overflow and flag_trapv.
28354         (simplify_const_relational_operation): Likewise.
28355         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
28356         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
28357         -fstrict-overflow.
28358
28359 2007-01-27  Roger Sayle  <roger@eyesopen.com>
28360
28361         * tree.c (tree_fold_gcd): Delete.
28362         * tree.h (tree_fold_gcd): Remove prototype.
28363         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
28364         test whether one constant integer is a multiple of another.  Instead
28365         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
28366         * fold-const.c (multiple_of_p): We've determined both TOP and
28367         BOTTOM are integer constants so we can call int_const_binop directly
28368         instead of the more generic const_binop.
28369
28370 2007-01-27  Roger Sayle  <roger@eyesopen.com>
28371
28372         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
28373         1*X check that the constant hasn't overflowed, to preserve the
28374         TREE_OVERFLOW bit.
28375         (round_up): Provide an efficient implementation when rouding-up an
28376         INTEGER_CST to a power-of-two.
28377
28378 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28379
28380         * doc/sourcebuild.texi: Add comma for clarity.
28381         * doc/extend.texi: Fix some typos.
28382         * doc/passes.texi: Likewise.
28383         * doc/cppinternals.texi: Likewise.
28384         * doc/c-tree.texi: Likewise.
28385         * doc/tree-ssa.texi: Likewise.
28386         * doc/install.texi: Likewise.
28387
28388 2007-01-27  Jan Hubicka  <jh@suse.cz>
28389
28390         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
28391         (pass_sra): Do not require alias information.
28392         * passes.c (init_optimization_passes): Add SRA
28393
28394 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
28395
28396         * tracer.c (rest_of_handle_tracer): We already cleaned
28397         up the CFG in tracer() so don't do it here again.
28398         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
28399         cleanup_cfg here, either.  And don't call renumber_insns.
28400
28401         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
28402         and BB_HEAD are in the insn stream here.  Instead make sure
28403         that BB_INSN is valid on all insns.  Also, do check here that
28404         there are no pending branch predictions...
28405         (rtl_verify_flow_info): ...instead of doing it here.  Checks
28406         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
28407         here.
28408
28409 2007-01-26  Roger Sayle  <roger@eyesopen.com>
28410
28411         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
28412         function to simplify/factorize operand order canonicalization.
28413         (ix86_fixup_binary_operands): Reorganize using the above function.
28414         (ix86_binary_operator_ok): Likewise.
28415
28416 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
28417
28418         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
28419         file scope from optimize_attrs.
28420         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
28421         up search.
28422         (optimize_attrs): Clear insn_code_values after freeing it.
28423
28424 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
28425
28426         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
28427         a parts.base assignment.
28428
28429 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
28430
28431         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
28432         (compute_subscript_distance, initialize_data_dependence_relation,
28433         finalize_ddr_dependent, analyze_ziv_subscript,
28434         analyze_siv_subscript_cst_affine,
28435         compute_overlap_steps_for_affine_univar,
28436         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
28437         analyze_siv_subscript, analyze_miv_subscript,
28438         analyze_overlapping_iterations, subscript_dependence_tester_1,
28439         compute_self_dependence, free_dependence_relation): Work
28440         with affine_fn instead of chrecs.
28441         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
28442         common_affine_function, affine_function_base,
28443         affine_function_constant_p, affine_fn_op, affine_fn_plus,
28444         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
28445         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
28446         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
28447         (all_chrecs_equal_p): Removed.
28448         * tree-data-ref.h (affine_fn, conflict_function): New types.
28449         (struct subscript): Change type of conflicting_iterations_in_a
28450         and conflicting_iterations_in_b.
28451
28452 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
28453
28454         PR other/30182
28455         * config/pa/pa.h (TARGET_HPUX_11): New.
28456         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
28457         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
28458
28459 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
28460         Richard Guenther  <rguenther@suse.de>
28461
28462         * tree-ssa-structalias.c (solve_graph): Handle case
28463         we merged the variable to another.
28464
28465 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28466
28467         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
28468         functions.
28469
28470         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
28471         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
28472
28473 2007-01-25  DJ Delorie  <dj@redhat.com>
28474
28475         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
28476         allow changes to modes which don't fit in those registers.
28477
28478         * reload1.c (choose_reload_regs): Check for invalid subregs before
28479         computing their locations, not after.
28480
28481 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
28482
28483         PR 25127
28484         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
28485         save Altivec registers in an eh_return function.
28486         (compute_vrsave_mask): Likewise.
28487         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
28488         for saving Altivec registers.
28489         (rs6000_emit_prologue): Don't allocate stack twice in
28490         eh_return function.  Correct expected value of altivec_save_offset
28491         when using save_world.  Describe save of R0 to stack when using
28492         save_world.  Describe stack pointer adjustment when using
28493         save_world.  Remove duplicated eh_return parameter register saving.
28494         Update sp_offset variable after save_world.
28495         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
28496         darwin-world.asm.
28497         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
28498         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
28499         implies Altivec.
28500
28501 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
28502
28503         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
28504
28505 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
28506
28507         PR other/30182
28508         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
28509         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
28510
28511 2007-01-25  Richard Guenther  <rguenther@suse.de>
28512
28513         * doc/invoke.texi (-Wcoverage-mismatch): Document.
28514         * common.opt (-Wcoverage-mismatch): New warning option.
28515         * coverage.c (get_coverage_counts): Ignore coverage mismatch
28516         if -Wcoverage-mismatch is given.
28517
28518 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
28519
28520         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
28521         (ipcp_driver): Change to static definition.
28522         Add dumping of the ifunctions.
28523         (constant_val_insert): Remove unused parameter. Support for SSA.
28524         (ipcp_propagate_const): Support for SSA.
28525         (ipcp_profile_bb_print): Print only analyzed nodes.
28526         (ipcp_replace_map_create): Remove support for Fortran constant
28527         for now.
28528         * ipa-prop.c (ipa_method_modify_stmt,
28529         ipa_callsite_compute_param): Support for SSA.
28530         * ipa-prop.h (ipcp_driver): Remove declaration.
28531         (IS_VALID_TREE_MAP_INDEX): Add define.
28532
28533 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
28534
28535         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
28536
28537 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28538
28539         PR middle-end/30447
28540         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
28541         constant argument to cabs and do it without checking for
28542         -funsafe-math-optimizations.
28543
28544 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
28545
28546         * c-common.h (RID_FIRST_CXX0X): New.
28547         (RID_LAST_CXX0X): New.
28548         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
28549         by -Wall.
28550         * c.opt (Wc++0x-compat): New.
28551         * doc/invoke.texi (-Wc++0x-compat): Document.
28552
28553 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28554
28555         * builtins.c (fold_builtin_carg): New.
28556         (fold_builtin_1): Use it.
28557
28558 2007-01-24  Jan Hubicka  <jh@suse.cz>
28559
28560         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
28561
28562         * ipa-inline.c (initial_insns, max_insns): Delete.
28563         (compute_max_insns): New function.
28564         (cgraph_decide_inlining_of_small_function): Use it; take minimal
28565         amount of insns as base for code growth.
28566         (cgraph_decide_inlining): Make initial_insns local; do not compute
28567         max_insns.
28568         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
28569         * doc/invoke.texi (inline-unit-growth): Update docs.
28570
28571 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
28572
28573         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
28574         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
28575         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
28576         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
28577         for CPUs that have PTA_CX16 set.
28578
28579         PR middle-end/27416
28580         * gimplify.c (omp_check_private): New function.
28581         (gimplify_scan_omp_clauses): Use it for
28582         firstprivate/lastprivate/reduction.
28583
28584         PR middle-end/30494
28585         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
28586         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
28587
28588         PR middle-end/30421
28589         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
28590         If lower_lastprivate_clauses emits some statements, append them
28591         to dlist rather than body_p and to body_p append an initializer.
28592         (lower_omp_for): Adjust caller.
28593
28594 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
28595
28596         * target.h (globalize_decl_name): New.
28597         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
28598         * output.h (default_globalize_decl_name): New.
28599         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
28600         globalize_label.
28601         (globalize_decl): Ditto.
28602         (default_globalize_decl_name): New.
28603         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
28604         (ia64_handle_version_id_attribute): New.
28605         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
28606         (ia64_asm_output_external): Use globalize_decl_name instead
28607         of globalize_label.
28608         * doc/extend.texi (version_id): New pragma.
28609         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
28610
28611 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
28612
28613         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
28614         _uleb128_t and _Unwind_SWord with _sleb128_t.
28615         * unwind-dw2.c (extract_cie_info, execute_stack_op,
28616         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
28617         Likewise.
28618         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
28619         * unwind-pe.h (read_uleb128, read_sleb128,
28620         read_encoded_value_with_base): Likewise.
28621         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
28622
28623 2007-01-24  Richard Guenther  <rguenther@suse.de>
28624
28625         * builtins.c (expand_builtin_cexpi): Get the fndecl
28626         for cexp in the correct way.
28627
28628 2007-01-24  Jan Hubicka  <jh@suse.cz>
28629
28630         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
28631         of calls.
28632
28633 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
28634
28635         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
28636         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
28637         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
28638         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
28639         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
28640         __SIZEOF_PTRDIFF_T__.
28641         * doc/cpp.texi: Documentation for the new builtin macros added.
28642
28643 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
28644
28645         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
28646         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
28647         instead of operands[2] to avoid access past the end of array.
28648
28649 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
28650
28651         * reload1.c (emit_reload_insns): Pass the reload register
28652         for a non-spill output reload through forget_old_reloads_1.
28653
28654 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
28655
28656         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
28657         _SOFT_DOUBLE if doubles use software floating-point.
28658         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
28659         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
28660         * config/rs6000/darwin-ldouble.c: Also compile functions for
28661         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
28662         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
28663         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
28664         commented-out long double override.
28665         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
28666         * config/rs6000/eabispe.h: Likewise.
28667         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
28668         long double for non-SPE.
28669         (rs6000_handle_option): Likewise.
28670         (invalid_e500_subreg): Disallow more subregs involding DImode,
28671         DFmode, TImode or TFmode.
28672         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
28673         E500 double.
28674         (legitimate_lo_sum_address_p): Also check for TFmode for E500
28675         double.
28676         (rs6000_legitimize_address): Also handle TFmode for E500 double.
28677         (rs6000_legitimize_reload_address): Also handle TFmode for E500
28678         double.
28679         (rs6000_legitimate_address): Also check for TFmode for E500
28680         double.
28681         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
28682         (spe_build_register_parallel): Handle TFmode and TCmode.
28683         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
28684         double.
28685         (function_arg): Handle TFmode and TCmode for E500 double.
28686         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
28687         in general.
28688         (print_operand): Handle TFmode and TImode for %y.
28689         (rs6000_generate_compare): Handle TFmode comparisons for E500
28690         double.
28691         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
28692         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
28693         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
28694         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
28695         TFmode for E500 double.
28696         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
28697         (floatsidf2): Enable for E500 double.
28698         (movtf_softfloat): Use rs6000_nonimmediate_operand.
28699         (extenddftf2): Change to extenddftf2_fprs.
28700         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
28701         depending on TARGET_E500_DOUBLE.
28702         (extendsftf2): Enable for E500 double.
28703         (trunctfdf2): Enable for E500 double.
28704         (trunctfsf2): Change to trunctfsf2_fprs.
28705         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
28706         depending on TARGET_E500_DOUBLE.
28707         (floatsitf2): Enable for E500 double.
28708         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
28709         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
28710         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
28711         (negtf2): Change to negtf2_internal.
28712         (negtf2): New expander.
28713         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
28714         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
28715         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
28716         (movdi_internal32): Use rs6000_nonimmediate_operand.
28717         (unnamed splitter): Likewise.
28718         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
28719         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
28720         (SPE64TF, DITI): New mode macros.
28721         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
28722         modes.
28723         (frob_tf_ti): New.
28724         (frob_<mode>_di_2): New.
28725         (frob_tf_di_8_2): New.
28726         (frob_di_df): Change to frob_di_<mode>; allow more modes.
28727         (frob_ti_tf): New.
28728         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
28729         more modes.
28730         (frob_ti_<mode>_8_2): New.
28731         (frob_ti_tf_2): New.
28732         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
28733         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
28734         TFmode.
28735         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
28736         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
28737         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
28738         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
28739         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
28740         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
28741         tsttflt_gp): New.
28742
28743 2007-01-23  Ian Lance Taylor  <iant@google.com>
28744
28745         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
28746         insn-*.o first.
28747         (OBJS-archive): Reformat, alphabetize.
28748         (OBJS): Change out_object_file to OBJS-md.
28749
28750 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
28751
28752         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
28753         JUMP_P and CALL_P predicates where applicable.
28754         * config/i386/i386.c: Ditto.
28755         * config/i386/i386.md: Ditto.
28756         * config/i386/mmx.md: Ditto.
28757         * config/i386/predicates.md: Ditto.
28758
28759 2007-01-22  Andreas Schwab  <schwab@suse.de>
28760
28761         * config/m68k/m68k.h: Fix comment.
28762
28763 2007-01-22  Jan Hubicka  <jh@suse.cz>
28764
28765         * passes.c (init_optimization_passes): Do not rerun
28766         pass_early_warn_uninitialized.
28767
28768 2007-01-22  Richard Guenther  <rguenther@suse.de>
28769
28770         PR tree-optimization/30038
28771         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
28772         function.
28773         (execute_cse_sincos_1): Likewise.
28774         (execute_cse_sincos): Likewise.
28775         (gate_cse_sincos): Likewise.
28776         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
28777         the cexpi() canonicalization of sincos().
28778         * tree-pass.h (pass_cse_sincos): Declare.
28779         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
28780
28781 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
28782
28783         PR rtl-optimization/29329
28784         * combine.c (replaced_rhs_insn): Rename to i2mod.
28785         (replaced_rhs_value): Rename to i2mod_new_rhs.
28786         (i2mod_old_rhs): New global variable.
28787         (combine_instructions): Adjust for above change.  Save a copy of
28788         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
28789         note are substituted in the second instruction.
28790         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
28791         ditch the note if it pertains to the second eliminated register
28792         and this register is mentioned in i2mod_old_rhs.
28793
28794         Revert:
28795         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
28796
28797         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
28798         the insn to which the note was originally attached.
28799
28800 2007-01-21  Jan Hubicka  <jh@suse.cz>
28801
28802         * ipa-inline.c (inlining_mode): Comment, move up.
28803         (cgraph_decide_inlining_incrementally): Do not perform inlining
28804         itself; fix handling of flattening of self recursive functions.
28805         (cgraph_find_cycles): Remove.
28806         (cgraph_flatten_node): Remove.
28807         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
28808         (try_inline): New function.
28809         (cgraph_early_inlining): Update call of
28810         cgraph_decide_inlining_incrementally.  Apply inlining here.
28811         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
28812
28813 2007-01-21  Dirk Mueller  <dmueller@suse.de>
28814
28815         PR bootstrap/30511
28816         * tree-vrp.c (check_array_bounds): do not warn
28817         about ADDR_EXPR's of ARRAY_REF's which are immediately
28818         used in binary expressions.
28819
28820 2007-01-21  Ira Rosen  <irar@il.ibm.com>
28821
28822         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
28823         read_write_dep and macros for its access.
28824         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
28825         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
28826         argument, call vect_check_interleaving for every independent pair of
28827         data-refs. Mark loads that access the same memory location as a store
28828         in the loop.
28829         (vect_check_dependences): Remove.
28830         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
28831         call, fix the call to vect_analyze_data_ref_dependence.
28832         (vect_analyze_data_ref_access): For statements that access the same
28833         data-ref, check that they are not stores; for loads, check that there
28834         is no store that access the same location.
28835
28836 2007-01-20  Roger Sayle  <roger@eyesopen.com>
28837             Joseph Myers  <joseph@codesourcery.com>
28838
28839         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
28840         (-fdump-rtl-stack): Likewise.
28841         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
28842         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
28843         (-mpt-fixed): Use @minus{} for minus sign.
28844         (Using Precompiled Headers): Fix under/overfull hbox.
28845
28846 2007-01-20  Jan Hubicka  <jh@suse.cz>
28847
28848         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
28849         place within annotation.
28850
28851 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28852
28853         * pa.c (output_move_double): Change array size of xoperands to 4.
28854
28855 2007-01-20  Jan Hubicka  <jh@suse.cz>
28856
28857         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
28858         as temporary.
28859
28860 2007-01-19  Ian Lance Taylor  <iant@google.com>
28861
28862         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
28863         constant to unsigned HOST_WIDE_INT before negating.
28864
28865 2007-01-19  Ian Lance Taylor  <iant@google.com>
28866
28867         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
28868         to unsigned.
28869         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
28870         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
28871         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
28872         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
28873         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
28874         (realloc_vdef, realloc_vuse): Change second parameter to
28875         unsigned.
28876         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
28877         fields to unsigned.
28878         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
28879         unsigned. Change x and lim locals to unsigned.
28880         (realloc_vdef, realloc_vuse): Change num_elem parameter to
28881         unsigned.
28882         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
28883         (copy_virtual_operands): Change i and n locals to unsigned.
28884
28885 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28886
28887         PR middle-end/29335
28888         * builtins.c (fold_builtin_1): Handle builtin fdim.
28889
28890 2007-01-20  Jan Hubicka  <jh@suse.cz>
28891
28892         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
28893         * tree-ssa-structalias.c (compute_points_to_sets): Do call
28894         init_alias_heapvars.
28895         (init_alias_heapvars): Initialize only when not already initialized.
28896         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
28897
28898 2007-01-19  Roger Sayle  <roger@eyesopen.com>
28899
28900         * common.opt (fsigned-zeros): New command line option.
28901         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
28902         of flag_unsafe_math_optimizations.
28903         * opts.c (set_fast_math_flags): The -ffast-math command line option
28904         implies -fno-signed-zeros.
28905         (fast_math_flags_set_p): Likewise.
28906
28907         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
28908         the documentation of -ffast-math appropriately.  Wrap long lines.
28909
28910 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
28911
28912         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
28913         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
28914
28915 2007-01-19  Tomas Bily  <tbily@suse.cz>
28916
28917         * cgraphunit.c (cgraph_finalize_function): Updating of pid
28918         * tree-profile.c:
28919         (tree_init_ic_make_global_vars): New function
28920         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
28921         (tree_gen_ic_profiler): New function
28922         (tree_gen_ic_func_profiler): New function
28923         (tree_profiling): Added calling of tree_gen_ic_func_profiler
28924         (tree_profile_hooks): Added hook for indirec/virtual calls
28925         * value-prof.c (tree_find_values_to_profile): New case for
28926         indirect calls
28927         (tree_values_to_profile): Call for determining indirect/virtual
28928         counters
28929         (tree_indirect_call_to_profile): New function
28930         (tree_ic_transform): New function
28931         (tree_ic): New function
28932         (find_func_by_pid): New function
28933         (init_pid_map): New function
28934         (tree_value_profile_transformations): Added check for
28935         indirect/virtual call transformation
28936         * value-prof.h (enum hist_type): New counter type for
28937         indirect/virtual calls
28938         (profile_hooks): Added new hook for profiling indirect/virtual
28939         calls
28940         * profile.c (instrument_values): New case for indirect/virtual
28941         call added
28942         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
28943         (GCOV_COUNTER_V_INDIR): New counter type
28944         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
28945         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
28946         call added
28947         * cgraph.c: Definition of cgraph_max_pid
28948         (cgraph_create_node): Default init of pid attribute
28949         * cgraph.h: Declaration of cgraph_max_pid
28950         (struct cgraph_node): Added pid attribute
28951         * libgcov.c (__gcov_indirect_call_profiler): New function
28952         (__gcov_one_value_profiler_body): New function
28953         (__gcov_one_value_profiler): Body was moved to
28954         __gcov_one_value_profiler_body and calls it
28955
28956 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
28957
28958         * doc/gty.texi (Options): Document the mark_hook option to GTY.
28959         * gengtype.c (write_types_data, write_func_for_structure,
28960         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
28961         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
28962         (walk_type, write_func_for_structure): Generate the mark_hook if
28963         needed.
28964
28965 2007-01-19  Jan Hubicka  <jh@suse.cz>
28966
28967         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
28968         'early' argument take inlining mode argument specifying whether to
28969         inline for size/speeed or all functions; add support for flattening;
28970         improve dumpting.
28971         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
28972
28973 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28974
28975         PR c++/17947
28976         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
28977         the name of the declared identifier.
28978
28979 2007-01-19  Dirk Mueller  <dmueller@suse.de>
28980
28981         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
28982         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
28983         duplicate evaluation.
28984
28985 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
28986
28987         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
28988         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
28989         to XFMode, use acosxf2 and truncate result to requested mode.
28990         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
28991         (asin<mode>2): Similarly, with asin expanders.
28992         (*fscalexf4_i387): Rename from *fscalexf4.
28993         (expNcorexf3): New expander.
28994         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
28995         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
28996         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
28997         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
28998         patterns for SSE math.
28999         (exp10<mode>2): Similarly, with exp10 expanders.
29000         (exp2<mode>2): Similarly, with exp2 expanders.
29001         (expm1<mode>2): Similarly, with expm1 expanders.
29002         (ldexp<mode>3): Similarly, with ldexp expanders.
29003         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
29004         Use gen_truncxf<mode>2_i387_noop to truncate result.
29005
29006 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29007
29008         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
29009         for ColdFire targets.
29010
29011 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
29012             Richard Sandiford  <richard@codesourcery.com>
29013
29014         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
29015         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
29016         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
29017         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
29018         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
29019         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
29020
29021 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29022
29023         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
29024         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
29025         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
29026         (*adddi_dilshr32_cf): New pattern.
29027         (adddi3, subdi3): Remove first alternatives.
29028
29029 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29030
29031         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
29032         implemented using move.l, do not use its cc result for floating-point
29033         comparisons.
29034
29035 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29036
29037         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
29038         from accepting 's' constraints if flag_pic.
29039
29040 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29041
29042         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
29043         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
29044         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
29045         condition from TARGET_68881 to TARGET_HARD_FLOAT.
29046
29047 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
29048
29049         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
29050         ColdFire alternatives.
29051         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
29052         * config/m68k/m68k.md (clzsi2): Define for ColdFire
29053         architectures that support ff1 instruction.
29054
29055 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29056             Julian Brown  <julian@codesourcery.com>
29057
29058         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
29059         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
29060         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
29061         Add commentary.
29062
29063 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29064
29065         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
29066         and return a bool.
29067         (output_move_const_into_data_reg, output_move_simode_const): Delete.
29068         * config/m68k/m68k.c (const_method, const_int_cost): Take a
29069         HOST_WIDE_INT instead of an rtx.
29070         (m68k_rtx_costs): Update call accordingly.
29071         (output_move_const_into_data_reg): Likewise.  Fix formatting.
29072         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
29073         Return a bool.
29074         (output_move_simode_const): Update calls after above changes.
29075         Rework to use automatic variables and predicates like MEM_P.
29076         * config/m68k/m68k.md (pushexthisi_const): Update call to
29077         valid_mov3q_const.
29078
29079 2007-01-19  Dirk Mueller  <dmueller@suse.de>
29080
29081         * tree-ssa-alias.c (perform_var_substitution): Fix typo
29082         in dump_flags test.
29083
29084 2007-01-19  Richard Guenther  <rguenther@suse.de>
29085
29086         * builtins.c (expand_builtin_cexpi): Fall back to expanding
29087         via cexp in case sincos is not available.
29088
29089 2007-01-19  Richard Guenther  <rguenther@suse.de>
29090
29091         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
29092         * defaults.h (TARGET_HAS_SINCOS): Default to off.
29093         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
29094         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
29095         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
29096         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
29097         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
29098         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
29099
29100 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
29101
29102         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
29103         New insn patterns.
29104         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
29105         (atan2xf3): Directly generate RTL pattern.
29106         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
29107         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
29108         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
29109         disable patterns for SSE math.
29110         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
29111         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
29112         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
29113         disable patterns for SSE math.
29114
29115 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
29116
29117         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
29118
29119 2007-01-18  Roger Sayle  <roger@eyesopen.com>
29120
29121         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
29122         VIEW_CONVERT_EXPR to the same type as it's operand.
29123
29124 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
29125
29126         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
29127         configured for long double 128.
29128
29129 2007-01-18  Mike Stump  <mrs@apple.com>
29130
29131         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
29132         error.
29133
29134 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
29135
29136         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
29137         type correct.
29138
29139 2007-01-18  Jan Hubicka  <jh@suse.cz>
29140
29141         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
29142         greater than NUM_VOP_FREE_BUCKETS.
29143
29144 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
29145
29146         * tree-ssa-structalias.c: Update comments.
29147         (ptabitmap_obstack): Removed.
29148         (pta_obstack): New.
29149         (oldpta_obstack): Ditto.
29150         (stats): Add a few members.
29151         (struct variable_info): Remove node, complex, address_taken, and
29152         indirect_target members. Add oldsolution member.
29153         (new_var_info): Do not initialize removed members.
29154         (constraint_expr_type): Remove INCLUDES.
29155         (constraint_graph): Add size, implicit_preds, rep,
29156         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
29157         (FIRST_REF_NODE): New macro.
29158         (LAST_REF_NODE): Ditto.
29159         (FIRST_ADDR_NODE): Ditto.
29160         (find): New function.
29161         (unite): Ditto.
29162         (dump_constraint): Do not handle INCLUDES.
29163         (insert_into_complex): Do not insert duplicate constraints.
29164         (condense_varmap_nodes): Renamed and rewritten into ...
29165         (merge_node_constraints): This. Also fix bug in handling of
29166         offseted copy constraints.
29167         (clear_edges_for_node): No longer need to deal with preds at all,
29168         or removing associated preds/succs.
29169         (merge_graph_nodes): Deal with indirect_cycles.
29170         Don't deal with predecessors.
29171         (add_implicit_graph_edge): New function.
29172         (add_pred_graph_edge): Ditto.
29173         (add_graph_edge): Don't deal with predecessors.
29174         (build_constraint_graph): Removed.
29175         (build_pred_graph): New function.
29176         (build_succ_graph): Ditto.
29177         (struct scc_info): Removed in_component. Added roots, dfs, and
29178         node_mapping. Remove visited_index, unification_queue.
29179         (scc_visit): Deal with union-find we do now.
29180         Deal with cycles with REF nodes.
29181         (collapse_nodes): Renamed and rewritten to ...
29182         (unify_nodes): This.
29183         (process_unification_queue): Removed.
29184         (topo_visit): Cleanup
29185         (do_da_constraint): Use find.
29186         (do_sd_constraint): Ditto.
29187         (do_ds_constraint): Ditto.
29188         (do_complex_constraint): Ditto.
29189         (init_scc_info): Update for removed and added members.
29190         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
29191         (find_indirect_cycles): This.
29192         (equivalence_class): New variable.
29193         (label_visit): New function.
29194         (perform_variable_substitution): Rewritten.
29195         (free_var_substitution_info): New function.
29196         (find_equivalent_node): Ditto.
29197         (move_complex_constraints): Ditto.
29198         (eliminate_indirect_cycles): Ditto.
29199         (solve_graph): Only propagate changed bits.
29200         Use indirect cycle elimination.
29201         Use find.
29202         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
29203         (tree_id_eq): Renamed to ...
29204         (tree_vi_eq): This. Update for member change
29205         (insert_id_for_tree): Renamed and rewritten to ...
29206         (insert_vi_for_tree): This.
29207         (lookup_id_for_tree): Renamed and rewritten to ...
29208         (lookup_vi_for_tree): This.
29209         (get_id_for_tree): Renamed and rewritten to ...
29210         (get_vi_for_tree): Ditto.
29211         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
29212         (process_constraint): Don't handle INCLUDES.
29213         Remove special ADDRESSOF case.
29214         (find_func_aliases): Rewrite to use vi functions instead of id
29215         ones.
29216         (create_function_info_for): Ditto.
29217         (create_variable_info_for): Ditto.
29218         (intra_create_variable_infos): Ditto.
29219         (merge_smts_into): Ditto.
29220         (find_what_p_points_to): Ditto.
29221         (init_base_vars): Ditto.
29222         (init_alias_vars): Ditto.
29223         (remove_preds_and_fake_succs): New function.
29224         (dump_sa_points_to_info): Dump new stats.
29225         (dump_solution_for_var): Use find.
29226         (set_used_smts): Fix formatting.
29227         (compute_points_to_sets): Updated for new functions.
29228         (ipa_pta_execute): Ditto.
29229
29230 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
29231             Richard Sandiford  <richard@codesourcery.com>
29232
29233         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
29234         parallels.
29235         * calls.c (expand_call): If the return value is a PARALLEL,
29236         extract its first member.
29237         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
29238         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
29239         use FUNCTION_EXTRA_EPILOGUE.
29240         (m68k_function_value): Return a PARALLEL if the return value
29241         is of a pointer type.
29242         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
29243         (FUNCTION_EXTRA_EPILOGUE): Remove.
29244         * config/m68k/m68k.md (D0_REG): New constant.
29245
29246 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
29247
29248         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
29249         output a NOP for empty epilogues.
29250
29251 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29252
29253         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
29254         before function.  Extend register save check to include all
29255         registers, not just integer ones.
29256
29257 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
29258
29259         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
29260         (m68k_use_return_insn): ...this.
29261         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
29262         * config/m68k/m68k.c (use_return_insn): Rename to...
29263         (m68k_use_return_insn): ...this.
29264         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
29265         of USE_RETURN_INSN.
29266
29267 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
29268
29269         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
29270         nearest even, fix denormal rounding overflow.
29271
29272 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29273
29274         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
29275         f%$smove and f%$move.
29276         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
29277         (extendsfdf2_cf): Use fdmove instead of f%&move.
29278         (truncdfsf2_cf): Use fsmove instead of f%$smove.
29279         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
29280
29281 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29282
29283         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
29284         GPR<-GPR moves.
29285
29286 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29287
29288         * real.h (real_format): Add a canonical_nan_lsbs_set field.
29289         (coldfire_single_format): Declare.
29290         (coldfire_double_format): Likewise.
29291         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
29292         of qnan_msb_set to determine the lower bits of a canonical
29293         NaN significand.
29294         (encode_ieee_double): Likewise.
29295         (encode_ieee_quad): Likewise.
29296         (ieee_single_format): Initialize canonical_nan_lsbs_set.
29297         (mips_single_format): Likewise.
29298         (ieee_double_format): Likewise.
29299         (mips_double_format): Likewise.
29300         (ieee_extended_motorola_format): Likewise.
29301         (ieee_extended_intel_96_format): Likewise.
29302         (ieee_extended_intel_128_format): Likewise.
29303         (ieee_extended_intel_96_round_53_format): Likewise.
29304         (ibm_extended_format): Likewise.
29305         (mips_extended_format): Likewise.
29306         (ieee_quad_format): Likewise.
29307         (mips_quad_format): Likewise.
29308         (vax_f_format): Likewise.
29309         (vax_d_format): Likewise.
29310         (vax_g_format): Likewise.
29311         (i370_single_format): Likewise.
29312         (i370_double_format): Likewise.
29313         (decimal_single_format): Likewise.
29314         (decimal_double_format): Likewise.
29315         (decimal_quad_format): Likewise.
29316         (c4x_single_format): Likewise.
29317         (c4x_extended_format): Likewise.
29318         (real_internal_format): Likewise.
29319         (coldfire_single_format): New real_format.
29320         (coldfire_double_format): Likewise.
29321         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
29322         canonical_nan_lsbs_set.
29323         (pdp11_d_format): Likewise.
29324         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
29325         if TARGET_COLDFIRE_CPU.
29326
29327 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29328
29329         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
29330         (output_call, m68k_legitimize_call_address): Declare.
29331         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
29332         parenthesees.  Add support for a 'W' constraint.
29333         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
29334         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
29335         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
29336         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
29337         variables.
29338         (override_options): Initialize them.  Do not set flag_no_function_cse
29339         for TARGET_ID_SHARED_LIBRARY.
29340         (m68k_output_pic_call): Delete.
29341         (m68k_legitimize_call_address): New function.
29342         (print_operand): Remove the %o prefix.  Handle the %p prefix.
29343         (output_call): New function.
29344         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
29345         target address from the GOT if symbolic jumps are not allowed.
29346         * config/m68k/m68k.md (call, general_operand): Do not set
29347         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
29348         Merge separate flag_pic and !flag_pic define_insns into...
29349         (*call, *call_value): ...these new patterns.  Match the address
29350         rather than the containing MEM and require it to be a call_operand.
29351         Use output_call to generate the asm template.
29352         * config/m68k/predicates.md (const_call_operand): New predicate.
29353         (call_operand): Likewise.
29354
29355 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
29356
29357         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
29358         (STACK_GROWS_DOWNWARD): Define to 1.
29359         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
29360         comments, emphasizing that these values are only defaults.
29361         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
29362         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
29363
29364 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29365
29366         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
29367
29368 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
29369             Richard Sandiford  <richard@codesourcery.com>
29370
29371         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
29372         (FP_REGNO_P): New macros.
29373         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
29374         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
29375         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
29376         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
29377
29378 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
29379
29380         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
29381         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
29382         to $tmake_file.
29383         * config/m68k/t-floatlib: New file, extracting common code from...
29384         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
29385         * config/m68k/t-uclinux: Here.
29386         * config/m68k/fpgnulib.c: Do not compile extendeed precision
29387         routines on ColdFire targets.
29388
29389 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
29390
29391         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
29392         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
29393         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
29394         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
29395         explicitly set MOTOROLA to 1.
29396         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
29397
29398 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29399             Nathan Sidwell  <nathan@codesourcery.com>
29400
29401         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
29402         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
29403         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
29404         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
29405         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
29406         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
29407         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
29408         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
29409         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
29410         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
29411         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
29412         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
29413         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
29414         (DBX_REGISTER_NUMBER): Delete.
29415         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
29416         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
29417         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
29418
29419 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29420
29421         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
29422         * config/flat.h: New file.
29423         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
29424         OBJECT_FORMAT_FLAT.
29425         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
29426         indirect references for -msep-data or -mid-shared-library.
29427         Do not use PC-relative code addresses either.
29428         * config/m68k/m68k.c (override_options): Restrict -fPIC error
29429         to -mpcrel.
29430         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
29431         for shared libraries and crt1.o for executables.  Use crti.o and
29432         crtbegin.o.
29433         (ENDFILE_SPEC): Use crtend.o and crtn.o.
29434         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
29435         Do not add -elf2flt or -shared-lib-id options here.
29436         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
29437         Pass -shared-lib-id if -mid-shared-library, taking the library
29438         identifier from -mshared-library-id if given, otherwise
29439         defaulting to 0.
29440         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
29441         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
29442         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
29443         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
29444         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
29445         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
29446         and crtend.o.
29447         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
29448         jump sequence for ISA A and ISA A+.
29449         (PICJUMP): Likewise.
29450
29451 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29452
29453         * config.gcc (m68k-*-uclinux*): Base the port on the common
29454         and m68k GNU/Linux files rather than on the generic ELF ones.
29455         * config/m68k/uclinux.h (TARGET_VERSION): Override.
29456         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
29457
29458 2007-01-18  Julian Brown  <julian@codesourcery.com>
29459             Richard Sandiford  <richard@codesourcery.com>
29460
29461         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
29462         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
29463         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
29464         before redefining.
29465         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
29466         80 unconditionally.
29467         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
29468
29469 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29470
29471         * doc/install.texi: Document m68k-uclinuxoldabi.
29472         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
29473         * config/m68k/uclinux-oldabi.h: New file, copied from
29474         config/m68k/uclinux.h.
29475
29476 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
29477
29478         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
29479         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
29480         (m32r_compute_frame_size): Use unsigned for regno.
29481         (m32r_reload_lr): Use gen_frame_mem.
29482         (pop): New.
29483         (m32r_output_function_epilogue): Don't output the function epilogue
29484         textually here.
29485         (m32r_expand_epilogue): New.
29486         (direct_return): Return false if the function has the interrupt
29487         attribute.
29488         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
29489         * config/m32r/m32r.md (epilogue): New expander.
29490         (return_lr, return_rte): New insns.
29491         (return): Make it expander.
29492         (return_normal): New expander.
29493
29494 2007-01-18  Josh Conner  <jconner@apple.com>
29495
29496         PR target/30485
29497         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
29498         support for UNLE, UNLT, UNGE, and UNGT.
29499
29500 2007-01-18  Jan Hubicka  <jh@suse.cz>
29501
29502         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
29503         * tree-tailcall (add_virtual_phis): Likewise.
29504         (optimize_tail_call): Return TODOs.
29505         (execute_tail_calls): Return TODOs.
29506         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
29507         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
29508         changed.
29509         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
29510         Cleanup cfg using TODO.
29511         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
29512         * passes.c (execute_function_todo): When cleanup did something, remove
29513         unused locals.
29514         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
29515         (make_edges): Don't cleanup_cfg.
29516
29517 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
29518
29519         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
29520         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
29521         operate on the top of stack.
29522         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
29523         register handling of instructions that output to the second
29524         stack slot.
29525         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
29526         (move_for_stack_reg): Special-case check for dead destination
29527         stack slot for constant load of 1.0 inside UNSPEC_TAN.
29528
29529         * config/i386/i386.md (UNSPEC_TAN): New constant.
29530         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
29531         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
29532         to correctly model move of constant 1.0 to top stack slot.
29533         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
29534         (unnamed peephole2 pattern): Remove corresponding peephole2
29535         pattern that optimizes tan insn and loading of constant 1.0.
29536         (tanxf2): Use fptanxf4_i387.
29537         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
29538         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
29539         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
29540         disable patterns for SSE math.
29541         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
29542         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
29543
29544 2007-01-18  Dirk Mueller  <dmueller@suse.de>
29545             Richard Guenther <rguenther@suse.de>
29546
29547         PR diagnostic/8268
29548         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
29549         * common.opt (Warray-bounds): Add new warning option.
29550         * c-opts.c (c_common_handle_option): Define -Warray-bounds
29551         if -Wall is given.
29552         * Makefile.in: make tree-vrp.o depend on toplev.h
29553         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
29554         is enabled.
29555         (check_array_refs, check_array_bounds, check_array_ref): New.
29556
29557 2007-01-18  Jan Hubicka  <jh@suse.cz>
29558
29559         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
29560         (execute_ssa_ccp): Return flags conditionally.
29561         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
29562         changed.
29563         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
29564
29565 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
29566
29567         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
29568         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
29569
29570         * Makefile.c (GTFILES): Add cfglayout.h.
29571         * gengtype.c (open_base_files): Likewise.
29572         * cfglayout.c (cfg_layout_function_footer,
29573         cfg_layout_function_header) Reindent to make gengtype happy.
29574         * cfglayout.h (cfg_layout_function_footer,
29575         cfg_layout_function_header): Add GTY(()) marker.
29576
29577         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
29578
29579 2007-01-18  Ben Elliston  <bje@au.ibm.com>
29580
29581         * genautomata.c (write_automata): Include xstrerror output in the
29582         error message if writing the DFA description file fails.
29583
29584 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
29585
29586         * config/mips/mips-protos.h (mips_output_external): Make it
29587         return void.
29588         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
29589         * config/mips/mips.c (irix_output_external_libcall): Likewise.
29590         (extern_list): Likewise.
29591         (extern_head): Likewise.
29592         (TARGET_ASM_FILE_END): Likewise.
29593         (mips_file_end): Likewise.
29594         (mips_output_external): Rewritten.
29595
29596 2007-01-18  Ben Elliston  <bje@au.ibm.com>
29597
29598         * genpreds.c (write_insn_preds_c): Only write out the function
29599         body for regclass_for_constraint if we have register constraints.
29600
29601 2007-01-17  Tom Tromey  <tromey@redhat.com>
29602
29603         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
29604         * doc/install.texi (Testing): Use sourceware.org.
29605         (Binaries): Likewise.
29606         (Specific): Likewise.
29607         * doc/contrib.texi (Contributors): Use sourceware.org.
29608
29609 2007-01-17  Anatoly Sokolov <aesok@post.ru>
29610
29611         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
29612         (AVR_ENHANCED): Rename to ...
29613         (AVR_HAVE_MUL): ... new.
29614         (avr_enhanced_p): Rename to ...
29615         (avr_have_mul_p): ... new.
29616         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
29617         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
29618         * config/avr/avr.c (avr_enhanced_p): Rename to ...
29619         (avr_have_mul_p): ... new.
29620         (base_arch_s): Rename 'enhanced' to 'have_mul'.
29621         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
29622         'avr_enhanced_p' and 'enhanced'.
29623         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
29624         AVR_HAVE_MUL instead of AVR_ENHANCED.
29625         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
29626         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
29627         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
29628         instead of AVR_ENHANCED.
29629         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
29630         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
29631         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
29632
29633 2007-01-17  Ian Lance Taylor  <iant@google.com>
29634
29635         * vec.h (VEC_reserve_exact): Define.
29636         (vec_gc_p_reserve_exact): Declare.
29637         (vec_gc_o_reserve_exact): Declare.
29638         (vec_heap_p_reserve_exact): Declare.
29639         (vec_heap_o_reserve_exact): Declare.
29640         (VEC_OP (T,A,reserve_exact)): New static inline function, three
29641         versions.
29642         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
29643         negative parameter.
29644         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
29645         (VEC_OP (T,A,copy)) [all versions]: Likewise.
29646         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
29647         * vec.c (calculate_allocation): Add exact parameter.  Change all
29648         callers.
29649         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
29650         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
29651         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
29652         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
29653         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
29654         (vec_heap_p_reserve_exact): New function.
29655         (vec_heap_o_reserve_exact): New function.
29656
29657 2007-01-17  Jan Hubicka  <jh@suse.cz>
29658
29659         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
29660
29661 2007-01-17  Eric Christopher  <echristo@apple.com>
29662
29663         * config.gcc: Support core2 processor.
29664
29665 2007-01-16  Jan Hubicka  <jh@suse.cz>
29666
29667         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
29668         the names, just unlink the chain so we don't crash on dangling
29669         pointers
29670         to dead SSA names.
29671
29672 2007-01-16  Jan Hubicka  <jh@suse.cz>
29673
29674         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
29675         * tree-pass.h: Reorder to make IPA passes appear toegher.
29676         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
29677         Declare.
29678         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
29679         parameters, do not call early inliner.
29680         * ipa-inline.c: Update comments.  Include tree-flow.h
29681         (cgraph_decide_inlining): Do not compute inlining parameters.
29682         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
29683         be called with function context set up.
29684         (pass_ipa_inline): Remove unreachable functions before pass.
29685         (cgraph_early_inlining): Simplify assuming to be called from the
29686         PM as local pass.
29687         (pass_early_inline): New pass.
29688         (cgraph_gate_ipa_early_inlining): New gate.
29689         (pass_ipa_early_inline): Turn into simple wrapper.
29690         (compute_inline_parameters): New function.
29691         (gate_inline_passes): New gate.
29692         (pass_inline_parameters): New pass.
29693         (apply_inline): Move here from tree-optimize.c
29694         (pass_apply_inline): New pass.
29695         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
29696         transforming.
29697         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
29698         doing them by hand.
29699         (tree_function_versioning): Do not allocate dummy struct function.
29700         * tree-inline.h (optimize_inline_calls): Update prototype.
29701         * tree-optimize.c (execute_fixup_cfg): Export.
29702         (pass_fixup_cfg): Remove
29703         (tree_rest_of_compilation): Do not apply inlines.
29704         * tree-flow.h (execute_fixup_cfg): Declare.
29705         * Makefile.in (gt-passes.c): New.
29706         * passes.c: Include gt-passes.h
29707         (init_optimization_passes): New passes.
29708         (nnodes, order): New static vars.
29709         (do_per_function_toporder): New function.
29710         (execute_one_pass): Dump current pass here.
29711         (execute_ipa_pass_list): Don't dump current pass here.
29712
29713 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
29714
29715         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
29716         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
29717
29718 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
29719
29720         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
29721         (strong_alias): Define.
29722         (__gcc_qmul): Provide non-FMA for soft-float.
29723         (__gcc_qdiv): Same.
29724         (__gcc_qneg): New.
29725         (__gcc_qeq): New.
29726         (__gcc_qle): New.
29727         (__gcc_qge): New.
29728         (__gcc_qunord): New.
29729         (__gcc_stoq): New.
29730         (__gcc_dtoq): New.
29731         (__gcc_qtos): New.
29732         (__gcc_qtod): New.
29733         (__gcc_qtoi): New.
29734         (__gcc_qtou): New.
29735         (__gcc_itoq): New.
29736         (__gcc_utoq): New.
29737         (fmsub): New.
29738         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
29739         soft-float functions.
29740         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
29741         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
29742         about long double soft float.
29743
29744 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
29745             Tehila Meyzels  <tehila@il.ibm.com>
29746
29747         * tree-vectorizer.h (is_pattern_stmt_p): New.
29748         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
29749         formatting (tabs instead of spaces). Cleanup and clarify setting
29750         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
29751         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
29752         (vectorizable_type_demotion): Check that types are integral.
29753         (vectorizable_type_promotion): Likewise.
29754         (vectorizable_store): Fix typo.  Eliminate new-line at end of
29755         comments.
29756
29757 2007-01-16  Jan Hubicka  <jh@suse.cz>
29758
29759         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
29760         cgraph edges too.
29761
29762 2007-01-15  Eric Christopher  <echristo@apple.com>
29763
29764         * ifcvt.c: Include vec.h, vecprim.h.
29765         (check_cond_move_block): New argument regs.
29766         Reorganize. Add registers used to regs.
29767         (cond_move_process_if_block): Use regs set above as
29768         loop bounds.
29769
29770 2007-01-15  Eric Christopher  <echristo@apple.com>
29771
29772         * config/darwin.h: Update copyright.
29773         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
29774         (LINK_COMMAND_SPEC): Add -u.
29775         (LINK_SPEC): Fix umbrella for above.
29776
29777 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
29778
29779         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
29780         glibc CVS.
29781
29782 2007-01-15  Tom Tromey  <tromey@redhat.com>
29783
29784         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
29785         * doc/install.texi (Testing): Don't mention jacks.
29786         (Configuration): Document --enable-java-maintainer-mode.  Move
29787         --with-java-home to libgcj-specific section.  Document
29788         --with-ecj-jar.
29789         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
29790
29791 2007-01-15  Jan Hubicka  <jh@suse.cz>
29792
29793         * tree-ssa-dce.c (DCE_TODOs): New.
29794         (propagate_necessity): Return if something changed.
29795         (eliminate_unnecessary_stmts): Likewise.
29796         (perform_tree_ssa_dce): Return TODO flags when needed.
29797         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
29798
29799 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
29800
29801         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
29802         (fyl2x_extend<mode>xf3_i387): New insn pattern.
29803         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
29804         patterns using X87MODEF12 mode macro.  Extend operand 1
29805         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
29806         (log10<mode>2): Ditto.
29807         (log2<mode>2): Ditto.
29808         (log1p<mode>2): Ditto.
29809         (logb<mode>2): Ditto.
29810         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
29811         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
29812         (*fxtractxf3_i387): Rename from *fxtractxf3.
29813         (fxtract_extend<mode>xf3_i387): New insn pattern.
29814         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
29815         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
29816         and gen_fyl2xxf3_i387().
29817
29818 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
29819
29820         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
29821         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
29822         get_loop_exit_edges.  Changed return type to bool.
29823         * cfgloop.h (fix_loop_placement): Declaration removed.
29824
29825 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
29826
29827         * param.h (MIN_VECT_LOOP_BOUND): New.
29828         * params.def (MIN_VECT_LOOP_BOUND): New.
29829         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
29830         argument - minimum threshold for number of iterations.
29831         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
29832         argument to declaration.
29833         * tree-vect-analyze.c (vect_analyze_operations): Check value of
29834         MIN_VECT_LOOP_BOUND.
29835         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
29836         slpeel_tree_peel_loop_to_edge with additional argument.
29837         (vect_do_peeling_for_alignment): Likewise.
29838         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
29839
29840 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
29841
29842         PR target/30413
29843         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
29844         operands of size 1.
29845
29846 2007-01-14  Jan Hubicka  <jh@suse.cz>
29847
29848         * tree-dfa.c (remove_referenced_var): New function.
29849         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
29850         prune referenced vars list too.
29851         * tree-flow.h (remove_referenced_var): Declare.
29852
29853 2007-01-14  Jan Hubicka  <jh@suse.cz>
29854
29855         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
29856         separately.
29857         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
29858         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
29859         * except.h (verify_eh_throw_table_statements): Kill prototype.
29860         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
29861         into call exrepssions.
29862         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
29863         eh trhow verifier.
29864         * tree-cfg.c: Include pointer-set.h.
29865         (verify_node_sharing): Work on pointer set.
29866         (verify_eh_throw_stmt_node): New.
29867         (verify_stmts): Use pointers sets, verify throw_stmt.
29868
29869 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
29870
29871         * ipa-reference.c (analyze_function): Consider also addresses taken
29872         in phi nodes.
29873
29874 2007-01-12  Roger Sayle  <roger@eyesopen.com>
29875
29876         * c-typeck.c (null_pointer_constant_p): Replace use of
29877         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
29878         (build_c_cast): Likewise.
29879
29880 2007-01-12  Roger Sayle  <roger@eyesopen.com>
29881
29882         * tree.h (force_fit_type_double): Remove unused final argument.
29883         * c-common.c (constant_expression_warning): Replace use of
29884         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
29885         (convert_and_check): Likewise.
29886         (shorten_compare): Update call to force_fit_type_double.
29887         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
29888         * convert.c (convert_to_pointer): Update call to
29889         force_fit_type_double.
29890         * fold-const.c (force_fit_type_double): Remove overflowed_const
29891         argument.
29892         (int_const_binop, fold_convert_const_int_from_int,
29893         fold_convert_const_int_from_real, fold_div_compare,
29894         fold_sign_changed_comparison, fold_unary, fold_negate_const,
29895         fold_abs_const, fold_not_const): Remove the final argument from
29896         calls to force_fit_type_double.
29897
29898 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29899
29900         * configure.ac: Set insn to "nop" for spu-*-* also.
29901         * configure: Regenerate.
29902
29903 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
29904
29905         * builtins.def : Add BUILT_IN_FREE.
29906
29907 2007-01-12  Jan Hubicka  <jh@suse.cz>
29908
29909         PR tree-optimization/30443
29910         * tree-inline.c (tree_function_versioning): Do not optimize when
29911         cloning for inlining.
29912
29913 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
29914
29915         * doc/loop.texi: Document recording of loop exits.
29916         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
29917         (update_single_exits_after_duplication,
29918         update_single_exit_for_duplicated_loop,
29919         update_single_exit_for_duplicated_loops): Removed.
29920         (duplicate_loop_to_header_edge): Do not call
29921         update_single_exits_after_duplication and
29922         update_single_exit_for_duplicated_loops.
29923         (loop_version): Do not update single_exit information.
29924         (fix_loop_structure): Use record_loop_exits instead of
29925         mark_single_exit_loops.
29926         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
29927         the lists of loop exits.
29928         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
29929         split_edge, merge_blocks): Update the lists of loop exits.
29930         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
29931         loop_optimizer_init.
29932         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
29933         of mark_single_exit_loops.
29934         (loop_optimizer_finalize): Call release_recorded_exits.
29935         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
29936         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
29937         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
29938         update single exit information.
29939         * lambda-code.c (perfect_nestify): Ditto.
29940         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
29941         (mark_single_exit_loops): Removed.
29942         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
29943         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
29944         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
29945         functions.
29946         (get_loop_exit_edges, single_exit): Use recorded exit lists.
29947         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
29948         (verify_loop_structure): Verify consistency of the exit lists.
29949         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
29950         (set_single_exit): Removed.
29951         * cfgloop.h (struct loop_exit): New function.
29952         (struct loop): single_exit_ field replaced by exits field.
29953         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
29954         LOOPS_HAVE_RECORDED_EXITS.
29955         (struct loops): Added exits hash.
29956         (mark_single_exit_loops, set_single_exit): Declaration removed.
29957         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
29958
29959 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29960
29961         * doc/invoke.texi: Avoid use of @headitem.
29962
29963 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29964
29965         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
29966
29967 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29968
29969         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
29970         list of targets.
29971
29972 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
29973             Richard Sandiford  <richard@codesourcery.com>
29974
29975         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
29976         * config/m68k/m68k.opt: Resort options.
29977         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
29978
29979 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
29980             Richard Sandiford  <richard@codesourcery.com>
29981
29982         * doc/invoke.texi: Document the macros that are defined by
29983         m68k's -mtune and -mhard-float options.
29984         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
29985         (m68k_cpp_cpu_family): Likewise.
29986         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
29987         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
29988         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
29989         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
29990         (m68k_cpp_cpu_family): Likewise.
29991
29992 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29993
29994         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
29995         macros besides mc68000 as tuning macros.  Use a switch statement
29996         to set them and mcpu32.
29997
29998 2007-01-12  Julian Brown  <julian@codesourcery.com>
29999
30000         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
30001         (TARGET_68040_ONLY): Rename to...
30002         (TARGET_68040): ...this.
30003         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
30004         * config/m68k/m68k.md: Likewise.
30005
30006 2007-01-12  Julian Brown  <julian@codesourcery.com>
30007             Nathan Sidwell  <nathan@codesourcery.com>
30008             Richard Sandiford  <richard@codesourcery.com>
30009
30010         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
30011         the -mcpu= argument associated with the --with-cpu setting.
30012         Define M68K_DEFAULT_TUNE to the default -mtune= option,
30013         if different from the one implied by the -mcpu setting.
30014         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
30015         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
30016         * doc/invoke.texi: Mention ColdFire in the introduction to the
30017         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
30018         -mno-div and -mhard-float options.  Make -m68881 a synonym for
30019         -mhard-float.  Document the previously-undocumented -m5206e,
30020         -m528x, -m5307 and -m5407 options.  Tweak the existing option
30021         documentation for consistency.
30022         * doc/install.texi: Mention new --with-cpu arguments.
30023         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
30024         default CPU if neither -mcpu nor -march are specified.
30025         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
30026         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
30027         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
30028         using m68k_tune to decide between families that implement the
30029         same ISA.  Use m68k_tune to set __mcfv4e__.
30030         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
30031         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
30032         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
30033         (FL_ISA_C, FL_ISA_MMU): New macros.
30034         (MASK_COLDFIRE): Delete.
30035         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
30036         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
30037         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
30038         (TARGET_HARD_FLOAT): Do not define here.
30039         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
30040         (TUNE_68000): New macro.
30041         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
30042         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
30043         (TUNE_CFV2): Redefine in terms of m68k_tune.
30044         (uarch_type, target_device, fpu_type): New enums.
30045         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
30046         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
30047         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
30048         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
30049         (FL_FOR_isa_c): New macros.
30050         (m68k_isa): New enum.
30051         (m68k_target_selection): New structure.
30052         (all_devices, all_isas, all_microarchs): New tables.
30053         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
30054         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
30055         (MASK_ALL_CPU_BITS): Delete.
30056         (m68k_find_selection): New function.
30057         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
30058         Map the legacy target options to a combination of the new ones.
30059         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
30060         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
30061         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
30062         settings.
30063         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
30064         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
30065         properties.
30066         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
30067         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
30068         * config/m68k/m68k-devices.def: New file.
30069
30070 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30071             Nathan Sidwell  <nathan@codesourcery.com>
30072
30073         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
30074         (SUBTARGET_EXTRA_SPECS): New macros.
30075         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
30076         use %(asm_cpu_spec) instead.
30077         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
30078         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
30079         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
30080         (EXTRA_SPECS): Rename to...
30081         (SUBTARGET_EXTRA_SPECS): ...this.
30082
30083 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
30084             Richard Sandiford  <richard@codesourcery.com>
30085             Julian Brown  <julian@codesourcery.com>
30086
30087         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30088         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
30089         to the configuration's default CPU.
30090         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
30091         Remove default masks.
30092         (m680[012]0-*-*): Set the default with_cpu to the first part of
30093         the target name.
30094         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
30095         (m68k*-*-linux): Extend the --with-cpu handling to...
30096         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
30097         and m68010.  Don't set target_cpu_default2.
30098         * doc/install.texi: Document --with-cpu for m68k.
30099         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
30100         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
30101         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
30102         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
30103         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
30104         (ASM_SPEC): Remove use of %(asm_cpu_default).
30105         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
30106         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
30107         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
30108         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
30109         __HAVE_FPU__ if TARGET_HARD_FLOAT.
30110         (TARGET_DEFAULT): Delete.
30111         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
30112         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
30113         (CPP_CPU_SPEC): Delete.
30114         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
30115         the appropriate string.
30116         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
30117         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
30118         (ASM_SPEC): Don't use %(asm_default_spec).
30119         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
30120         TARGET_DEFAULT and add MASK_68881.
30121         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
30122
30123 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30124
30125         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
30126         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
30127         MASK_68010 alongside MASK_68020.
30128         * doc/invoke.texi: Document -m68010.
30129         * config/m68k/m68k.opt (m68010): New.
30130         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
30131         if TUNE_68010.
30132         (TUNE_68010): New macro.
30133         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
30134         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
30135         (M68K_CPU_m68332): Add MASK_68010.
30136         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
30137         fallback definition.
30138         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
30139         defines.
30140         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
30141         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
30142         to all entries that use MASK_68020.
30143         (output_move_simode_const, output_move_himode, output_move_qimode)
30144         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
30145         instead of TARGET_68020 to select clr behavior.  Remove comment
30146         about there being no TARGET_68010.
30147         * config/m68k/m68k.md: Likewise throughout.
30148
30149 2007-01-12  Julian Brown  <julian@codesourcery.com>
30150
30151         * config/m68k/m68k.h (TARGET_ISAB): New macro.
30152         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
30153         * config/m68k/m68k.md: Likewise.
30154
30155 2007-01-12  Julian Brown  <julian@codesourcery.com>
30156
30157         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
30158         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
30159
30160 2007-01-12  Julian Brown  <julian@codesourcery.com>
30161
30162         * config/m68k/m68k.h (TUNE_68040_60): New macro.
30163         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
30164         * config/m68k/m68k.md: Likewise.
30165
30166 2007-01-12  Julian Brown  <julian@codesourcery.com>
30167             Richard Sandiford  <richard@codesourcery.com>
30168
30169         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
30170         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
30171         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
30172         TARGET_CPU32.
30173         (TARGET_CPU32): Rename to...
30174         (TUNE_CPU32): ...this.
30175         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
30176         (TUNE_CFV2): New macros.
30177         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
30178         remove conditions that are implied by TARGET_68020.
30179         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
30180         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
30181         (m68k_output_function_epilogue): Likewise.
30182         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
30183         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
30184         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
30185         non-68000 timings.  Refactor multiplication and division costs.
30186         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
30187         TUNE_CPU32 instead of TARGET_CPU32.
30188         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
30189         and TUNE_68060 instead of TARGET_68060.
30190         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
30191         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
30192         TARGET_CPU32.
30193         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
30194         && !TARGET_COLDFIRE" to choose between moveq and clr.
30195         Likewise in the unnamed movsf pattern.
30196         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
30197         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
30198         ashiftrt pattern.
30199
30200 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30201
30202         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
30203         of tabbing before backslashes.
30204
30205 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30206
30207         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
30208         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
30209         (ASM_OUTPUT_INTERNAL_LABEL): Define.
30210
30211 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
30212
30213         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
30214         find_interesting_uses_cond.
30215         (find_interesting_uses_cond): Use extract_cond_operands.
30216         (rewrite_use_compare): Use extract_cond_operands and
30217         force_gimple_operand_bsi.  Do not call update_stmt.
30218         (determine_use_iv_cost_condition): Use extract_cond_operands.
30219         Return cheaper of using original bound and changing the exit bound.
30220
30221 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
30222
30223         PR tree-optimization/29516
30224         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
30225         most_expensive_mult_to_index, addr_to_parts,
30226         create_mem_ref, maybe_fold_tmr): Make the type of
30227         fields of TARGET_MEM_REF sizetype.
30228         (move_fixed_address_to_symbol, move_pointer_to_base):
30229         New functions.
30230         * tree.def (TARGET_MEM_REF): Add comment on types of
30231         the operands.
30232
30233 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
30234
30235         * c-common.c (vector_types_convertible_p): Treat opaque types as
30236         always convertible if they have the same size, but not otherwise.
30237
30238 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
30239
30240         * ifcvt.c (struct noce_if_info): Add comments to the fields.
30241         Remove the b_unconditional field.
30242         (noce_try_sign_mask): Do not look at b_unconditional.
30243         (noce_process_if_block): Do not use merge_if_blocks.  Update
30244         the CFG here.  Do not set b_unconditional.
30245         (cond_move_process_if_block): Likewise.
30246         (find_cond_trap): Likewise.
30247         (check_cond_move_block): Require simple jump insns at the end
30248         of the basic block.
30249
30250 2007-01-11  Jan Hubicka  <jh@suse.cz>
30251
30252         PR tree-optimization/1046
30253         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
30254         when alias info is not ready.
30255         (pass_tail_recursion): Do not require aliasing.
30256         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
30257         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
30258         * tree-ssa-copy.c (pass_copy_prop): Likewise.
30259         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
30260         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
30261         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
30262         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
30263         before inlining.
30264         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
30265         When aliasing is not build, mark statement as volatile.
30266
30267 2007-01-11  Tom Tromey  <tromey@redhat.com>
30268
30269         PR preprocessor/15185, PR preprocessor/20989:
30270         * doc/cppopts.texi <-MT>: Update description of algorithm for
30271         computing default target.
30272         <-M, -MD>: Reword "basename" text.
30273
30274 2007-01-11  Roger Sayle  <roger@eyesopen.com>
30275
30276         * builtins.c (expand_builtin_pow, expand_builtin_powi,
30277         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
30278         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
30279         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
30280         fold_builtin_bswap, real_constp, fold_builtin_pow,
30281         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
30282         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
30283         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
30284         * convert.c (convert_to_pointer): Likewise.
30285         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
30286         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
30287         const_binop, fold_convert_const_int_from_int,
30288         fold_convert_const_int_from_real,
30289         fold_convert_const_real_from_real, sign_bit_p,
30290         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
30291         fold_sign_changed_comparison, fold_unary, fold_comparison,
30292         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
30293         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
30294         * print-tree.c (print_node_brief, print_node): Likewise.
30295         * stor-layout.c (place_field, layout_type): Likewise.
30296         * tree-chrec.c (keep_cast): Likewise.
30297         * tree.c (build_vector, build_real, build_real_from_int_cst,
30298         build_complex): Likewise.
30299
30300 2007-01-11  Roger Sayle  <roger@eyesopen.com>
30301
30302         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
30303         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
30304
30305 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
30306
30307         * configure.ac (strict1_warn): Rename to strict_warn.
30308         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
30309         cc_set_by_configure, quoted_cc_set_by_configure,
30310         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
30311         all_boot_languages, all_stagestuff): Remove.
30312         (target_list): Remove bootstrap targets.
30313         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
30314         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
30315         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
30316         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
30317         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
30318         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
30319         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
30320         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
30321         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
30322         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
30323         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
30324         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
30325         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
30326         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
30327         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
30328         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
30329         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
30330         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
30331         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
30332         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
30333         (mostlyclean): Adjust.
30334         (clean, distclean): Don't mention bootstrap stuff.
30335         * configure: Regenerate.
30336         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
30337         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
30338         treelang/config-lang.in (stagestuff): Remove.
30339         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
30340         stageprofile, stagefeedback, stagestuff): Remove mention.
30341
30342 2007-01-11  Nick Clifton  <nickc@redhat.com>
30343
30344         * config/mcore/predicates.md (mcore_general_movesrc_operand):
30345         Accept CONSTs.
30346         (mcore_general_movdst_operand): Do not accept CONST_INTs.
30347         (mcore_arith_K_S_operand): Run the test for the S constraint not
30348         the test for the M constraint.
30349         (mcore_addsub_operand): Do not accept integer values that are
30350         larger than 32 bits.
30351         * config/mcore/mcore.md: Remove unused constraints from split.
30352         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
30353         (addsi3): Likewise.
30354         (allocate_stack): Likewise.
30355         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
30356         operands to 32 bits.
30357         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
30358         INTVAL.
30359         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
30360         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
30361         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
30362         mcore_output_bclri, mcore_output_andn, output_inline_const,
30363         mcore_output_move, mcore_output_movedouble): Likewise.
30364         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
30365         (output_inline_const): Likewise.
30366         (output_inline_const): Fix format strings used in sprintf
30367         statements.
30368         * config/mcore/mcore-protos.h: Update prototypes for changed
30369         functions in mcore.c.
30370         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
30371         HOST_WIDE_INT and not int.
30372         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
30373         CONST_OK_FOR_N): Likewise.
30374         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
30375         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
30376         an INTVAL.
30377
30378 2007-01-10  Jan Hubicka  <jh@suse.cz>
30379
30380         * tree-vrp.c (remove_range_assertions): Release defs.
30381         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
30382         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
30383
30384 2007-01-10  Paul Brook  <paul@codesourcery.com>
30385
30386         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
30387         * config/arm/arm.md (mulsi3subsi): New insn.
30388
30389 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
30390
30391         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
30392         (tree_transform_and_unroll_loop): New.
30393         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
30394         Declare.
30395
30396 2007-01-10  Robert Kennedy <jimbob@google.com>
30397
30398         * fold-const.c (fold_comparison): Fold comparisons like (x *
30399         1000 < 0) to (x < 0).
30400
30401 2007-01-10  Ian Lance Taylor  <iant@google.com>
30402
30403         * tree-pretty-print.c (dump_generic_node): Print parentheses when
30404         operands have the same priority.
30405
30406 2007-01-10  Tom Tromey  <tromey@redhat.com>
30407
30408         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
30409         (fold_binary): Likewise.
30410         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
30411         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
30412         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
30413         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
30414         * langhooks.h (struct lang_hooks): Removed field
30415         'can_use_bit_fields_p'.
30416
30417 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
30418
30419         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
30420
30421 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
30422
30423         * function.c (get_last_funcdef_no): New function.
30424         * function.h (get_last_funcdef_no): Declare.
30425         * tree-inline.c (initialize_cfun): Add initialization.
30426         (tree_function_versioning): Cleanup.
30427
30428 2007-01-10  Jan Hubicka  <jh@suse.cz>
30429
30430         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
30431         PHIs.
30432
30433 2007-01-10  Sa Liu  <saliu@de.ibm.com>
30434             Ben Elliston  <bje@au.ibm.com>
30435
30436         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
30437         for SAVE_NONLOCAL and Pmode for any other save level.
30438         * spu-protos.h (spu_restore_stack_block): Declare.
30439         * spu.md (save_stack_block): Remove.
30440         (restore_stack_block): Call spu_restore_stack_block.
30441         * spu.c (spu_restore_stack_block): New function.
30442         (spu_expand_epilogue): Remove old comment.
30443
30444 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
30445
30446         PR tree-optimization/30322
30447         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
30448         (cand_value_at): Return the value as aff_tree.
30449         (may_eliminate_iv): Convert the bound from aff_tree to tree.
30450         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
30451         aff_combination_mult): New functions.
30452         (aff_combination_add): Use aff_combination_add_cst.
30453         (aff_combination_convert): Allow conversions to a wider type.
30454         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
30455         * tree-affine.h (aff_combination_mult): Declare.
30456
30457 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
30458
30459         * doc/tm.texi: Update documentation to reflect reality of exec
30460         and start file search behaviours. Update copyright year.
30461         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
30462         header file directories.
30463
30464 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
30465
30466         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
30467         (*cosxf2): Rename to cosxf2_i387.
30468         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
30469         using X87MODEF12 mode macro. Rename patterns to
30470         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
30471         for SSE math.
30472         (*cosdf2, *cossf2): Ditto.
30473         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
30474         to match extended input operands.
30475         (sincos<mode>3): New expander.
30476         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
30477         insn patterns and corresponding splitters.
30478
30479 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
30480
30481         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
30482         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
30483
30484 2007-01-09  Nicolas Pitre  <nico@cam.org>
30485
30486         PR target/30173
30487         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
30488
30489 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
30490
30491         * target.h (struct gcc_target): New field library_rtti_comdat.
30492         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
30493         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
30494         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
30495         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
30496
30497 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
30498
30499         * doc/invoke.texi (Optimize Options): Correct description of -O0.
30500
30501 2007-01-08  Richard Guenther  <rguenther@suse.de>
30502
30503         * tree.h (force_fit_type_double): Export.
30504         (force_fit_type): Remove.
30505         * fold-const.c (force_fit_type_double): New function.
30506         (force_fit_type): Remove.
30507         (int_const_binop): Use it.
30508         (fold_convert_const_int_from_int): Likewise.
30509         (fold_convert_const_int_from_real): Likewise.
30510         (fold_div_compare): Likewise.
30511         (fold_sign_changed_comparison): Likewise.
30512         (fold_unary): Likewise.
30513         (fold_negate_const): Likewise.
30514         (fold_abs_const): Likewise.
30515         (fold_not_const): Likewise.
30516         * c-common.c (shorten_compare): Use force_fit_type_double.
30517         * convert.c (convert_to_pointer): Likewise.
30518
30519 2007-01-08  Richard Guenther  <rguenther@suse.de>
30520
30521         * tree.h (build_int_cst_wide_type): Export.
30522         * tree.c (build_int_cst_wide_type): New function.
30523         (build_int_cst_wide): Fix comment.
30524         * builtins.c (fold_builtin_object_size): Use build_int_cst
30525         to build -1 or 0 of the correct type.  Use fit_double_type
30526         to check for overflow.
30527         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
30528         to build the mask.
30529         (decode_field_reference): Likewise.
30530         (all_ones_mask_p): Likewise.
30531         (native_interpret_int): Use build_int_cst_wide_type.
30532         (fold_binary): Use build_int_cst_type to build an all-ones
30533         value.
30534         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
30535
30536 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
30537
30538         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
30539
30540 2007-01-09  Ben Elliston  <bje@au.ibm.com>
30541
30542         * genautomata.c (STATS_OPTION): New option.
30543         (stats_flag): New flag.
30544         (gen_automata_option): Handle it.
30545         (initiate_automaton_gen): Ditto.
30546         (write_automata): Output statistics only if stats_flag is
30547         set. Likewise, output time statistics only if time_flag is set.
30548         * doc/md.texi (Processor pipeline description): Document new flag.
30549
30550 2007-01-08  Richard Guenther  <rguenther@suse.de>
30551
30552         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
30553         * tree.c (build_int_cst_type): Likewise.
30554         (size_in_bytes): Don't call force_fit_type on the result.
30555         (int_fits_type_p): Use fit_double_type.
30556         * fold-const.c (fit_double_type): New function.
30557         (force_fit_type): Use it.
30558         * tree.h (fit_double_type): Export.
30559
30560 2007-01-08  Jan Hubicka  <jh@suse.cz>
30561
30562         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
30563         * ipa.c (function_and_variable_visibility): Fix return type.
30564
30565 2007-01-08  Richard Guenther  <rguenther@suse.de>
30566
30567         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
30568         of offset to build the index.
30569         * tree-pretty-print.c (dump_generic_node): Don't build negated
30570         const just for printing.
30571         * c-pretty-print.c (pp_c_integer_constant): Likewise.
30572         * builtins.c (fold_builtin_int_roundingfn): Check if result
30573         fits the type by using force_fit_type and comparing the result.
30574         * predict.c (predict_loops): Use compare_tree_int for comparison.
30575         * tree.c (build_int_cst): Fall back to integer_type_node for
30576         NULL_TREE type.
30577         (build_int_cst_wide): Assert type is non-null.
30578
30579 2007-01-08  Roberto Costa  <roberto.costa@st.com>
30580
30581         * tree-vrp.c (extract_range_from_cond_expr): New.
30582         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
30583         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
30584         as expressions.
30585         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
30586         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
30587         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
30588         used as expressions.
30589         * tree-object-size.c (cond_expr_object_size): New.
30590         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
30591
30592 2007-01-08  Jan Hubicka  <jh@suse.cz>
30593
30594         * tree-ssa-forwprop.c (forward_propagate_into_cond,
30595         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
30596         statement.
30597
30598 2007-01-08  Richard Guenther  <rguenther@suse.de>
30599
30600         PR tree-optimization/23603
30601         * tree-vrp.c (set_value_range_to_truthvalue): New function.
30602         (extract_range_from_binary): Fall back to truthvalue instead of
30603         varying for TRUTH_*_EXPR.
30604         (extract_range_from_comparison): Fall back to truthvalue instead of
30605         varying.
30606         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
30607         if all visited PHI values were constant.
30608
30609 2007-01-08  Jan Hubicka  <jh@suse.cz>
30610
30611         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
30612         (cgraph_analyze_function): break out from ...
30613         (cgraph_finalize_compilation_unit): ... here.
30614         (cgraph_expand_function): Remove forgoten commented out line.
30615         (cgraph_optimize): Analyze functions.
30616
30617 2007-01-08  Jan Hubicka  <jh@suse.cz>
30618
30619         * tree-pas.h (TODO_remove_function): New flag.
30620         (TODO_update*): Renumber.
30621         (pass_ipa_increase_alignment,
30622         pass_ipa_function_and_variable_visibility): New passes.
30623         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
30624         (cgraph_function_and_variable_visibility): Move to ipa.c
30625         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
30626         cgraph_increase_alignment.
30627         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
30628         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
30629         calling tree-inline.
30630         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
30631         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
30632         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
30633         (gate_increase_alignment): New function.
30634         (pass_ipa_increase_alignment): New pass.
30635         * ipa.c: Inline tree-pass.h and timevar.h
30636         (function_and_variable_visibility): Move here from cgraphunit.c
30637         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
30638         * passes.c (init_optimization_passes): Add the two new passes.
30639         (execute_todo): Handle cgraph_remove_functions.
30640
30641 2007-01-08  Nick Clifton  <nickc@redhat.com>
30642
30643         * config/frv/predicates.md (reg_or_0_operand): Accept
30644         CONST_DOUBLEs.
30645
30646 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
30647
30648         * config/bfin/rtems.h, config/bfin/t-rtems: New.
30649         * config.gcc: Add bfin*-rtems*.
30650
30651 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
30652
30653         * c.opt: Add -flax-vector-conversions.
30654         * c-typeck.c (convert_for_assignment): Pass flag to
30655         vector_types_convertible_p to allow emission of note.
30656         (digest_init): Likewise.
30657         * c-opts.c: Handle -flax-vector-conversions.
30658         * c-common.c (flag_lax_vector_conversions): New.
30659         (vector_types_convertible_p): Unless -flax-vector conversions
30660         has been passed, disallow conversions between vectors with
30661         differing numbers of subparts and/or element types.  If such
30662         a conversion is disallowed, possibly emit a note on the first
30663         occasion only to inform the user of -flax-vector-conversions.
30664         The new last argument specifies this.
30665         * c-common.h (flag_lax_vector_conversions): New.
30666         (vector_types_convertible_p): Add extra argument.
30667         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
30668         char_type_node for V*QI type vectors.
30669         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
30670         Update to satisfy new typechecking rules.
30671         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
30672         C and C++ variants.
30673         * doc/invoke.texi (C Dialect Options): Document
30674         -flax-vector-conversions.
30675
30676 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
30677
30678         PR tree-optimization/29877
30679         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
30680         a register variable on the RHS to not be replaceable.
30681
30682 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
30683         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
30684         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
30685         const_simm15, const_pow2, const_npow2): Added.
30686         * config/score/misc.md (insv, extv, extzv, movmemsi,
30687         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
30688         * config/score/score.c (score_address_cost, score_select_cc_mode):
30689         Added.
30690         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
30691         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
30692         Update score_print_operand.
30693         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
30694         Adjust register allocate order and update some macro define.
30695         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
30696         mdx_block_move_straight, mdx_block_move_loop_head,
30697         mdx_block_move_loop_body, mdx_block_move_loop_foot,
30698         mdx_block_move_loop, mdx_block_move): Added.
30699         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
30700         mdp_limm): Updated and fix some bug and typo.
30701         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
30702         (movsf, movdf, doloop_end): Added.
30703
30704 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
30705
30706         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
30707         config/arm/thumb2.md: Fix comment typos.
30708         * doc/extend.texi: Fix a typo.
30709
30710 2007-01-07  Eric Christopher  <echristo@apple.com>
30711
30712         * configure.ac: Check for __stack_chk_fail for darwin.
30713         * configure: Regenerate.
30714
30715 2007-01-07  Richard Guenther  <rguenther@suse.de>
30716
30717         * tree-vrp.c (extract_range_from_assert): CSE calls to
30718         compare_values where possible.
30719         (extract_range_from_unary_expr): Likewise.
30720
30721 2007-01-07  Anatoly Sokolov <aesok@post.ru>
30722
30723         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
30724         * config/avr/avr.c (call_insn_operand): Delete function.
30725         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
30726         instead of register number. Use predicates.
30727         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
30728         call_insn_operand): Add.
30729
30730 2007-01-06  Jan Hubicka  <jh@suse.cz>
30731
30732         * tree-pass.h (pass_build_cgraph_edges): Declare.
30733         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
30734         (visited_nodes): Remove.
30735         (cgraph_create_edges): Move to cgraphbuild.c; rename to
30736         build_cgrpah_edges; make visited_nodes local.
30737         (cgraph_process_new_functions): DO not call initialize_inline_failed.
30738         (record_references_in_initializer): Move to cgraphbuild.c
30739         (initialize_inline_failed, rebuild_cgraph_edges,
30740         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
30741         (verify_cgraph_node): Make visited_nodes local.
30742         (cgraph_analyze_function): Do not call cgraph_create_edges and
30743         initialize_inline_failed.
30744         (cgraph_expand_function): Do not call cgraph_lower_function;
30745         assert that function is already lowered.
30746         * Makefile.in (cgraphbuild.o): New.
30747         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
30748         at the end of lowering passes.
30749
30750 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
30751
30752         * ifcvt.c (cond_move_convert_if_block): New function, code
30753         factored out from...
30754         (cond_move_process_if_block): ...here.  Call the new function
30755         on the THEN and ELSE blocks.
30756         (merge_if_block): Do not copy global_live_at_end, merge_blocks
30757         already takes care of this.
30758
30759 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30760
30761         PR c/19978
30762         * tree.h (TREE_OVERFLOW_P): New.
30763         * c-typeck.c (parser_build_unary_op): Warn only if result
30764         overflowed and operands did not.
30765         (parser_build_binary_op): Likewise.
30766         (convert_for_assignment): Remove redundant overflow_warning.
30767         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
30768
30769 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30770
30771         * c-typeck.c (store_init_value): Split over two lines to follow
30772         the GNU coding style.
30773
30774 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
30775
30776         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
30777         __GXX_EXPERIMENTAL_CXX0X__.
30778         * doc/cpp.texi: Same.
30779
30780 2007-01-05  Richard Guenther  <rguenther@suse.de>
30781
30782         PR middle-end/27826
30783         * tree.c (get_narrower): Do not construct COMPONENT_REFs
30784         with mismatched types.  Instead explicitly build a
30785         conversion NOP_EXPR.
30786
30787 2007-01-05  Ian Lance Taylor  <iant@google.com>
30788
30789         * c-common.c (decl_with_nonnull_addr_p): New function.
30790         (c_common_truthvalue_conversion): Call it.
30791         * c-typeck.c (build_binary_op): Likewise.
30792         * c-common.h (decl_with_nonnull_addr_p): Declare.
30793
30794 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
30795
30796         PR c/30360
30797         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
30798         denom against 0.0.
30799
30800 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
30801
30802         * doc/install.texi (Final install): Document the fact that
30803         the GNAT runtime should not be stripped.
30804
30805 2007-01-04  Jan Hubicka  <jh@suse.cz>
30806
30807         * tree-inline.c (fold_marked_statements): Update operand caches
30808         and EH after folding
30809
30810 2007-01-04  Ian Lance Taylor  <iant@google.com>
30811
30812         * c-common.c (check_function_nonnull): Whitespace fix.
30813
30814 2007-01-04  Jan Hubicka  <jh@suse.cz>
30815
30816         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
30817         comitted older version of patch.
30818         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
30819         function, celanup cfg and collect garbage.
30820
30821 2007-01-04  Mike Stump  <mrs@apple.com>
30822
30823         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
30824         (clean): Likewise.
30825
30826 2007-01-04  Eric Christopher  <echristo@apple.com>
30827
30828         * libgcc2.c (__bswapsi2): Use SItype.
30829         (__bswapdi2): Use DItype.
30830         * libgcc2.h: Update for above.
30831
30832 2007-01-04  Paul Brook  <paul@codesourcery.com>
30833
30834         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
30835         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
30836         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
30837         umulsidi3, umulsidi3adddi, smulsi3_highpart,
30838         umulsi3_highpart): Make conditional on !arm_arch6.
30839         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
30840         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
30841         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
30842         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
30843         umulsi3_highpart_v6): New insns.
30844
30845 2007-01-04  Roger Sayle  <roger@eyesopen.com>
30846
30847         * fold-const.c (fold_convert): When casting an expression to void,
30848         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
30849         have a type.  Instead of attempting to build a NOP_EXPR, return
30850         these "special" trees directly.
30851
30852 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
30853
30854         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
30855         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
30856         rs6000_cost->fp not 0 as adjustment for outer NEG.
30857
30858 2007-01-04  Jan Hubicka  <jh@suse.cz>
30859
30860         * cgraph.c (cgraph_release_function_body): New function.
30861         (cgraph_remove_node): Use it.
30862         * cgraph.h (cgraph_release_function_body): Declare.
30863         * cgraphunit.c (cgraph_expand_function): Use it.
30864         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
30865         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
30866         is initialized and while compilation of other function is running.
30867         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
30868         statement CFG annotations from here to ...
30869         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
30870
30871 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
30872
30873         * cfgloop.h (enum li_flags): Make the constants powers of two.
30874
30875 2007-01-04  Jan Hubicka  <jh@suse.cz>
30876
30877         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
30878         set.
30879         (fold_marked_statements): New function.
30880         (optimize_inline_calls, tree_function_versioning): Fold new statements.
30881         * tree-inline.h (copy_body_data): Add statements_to_fold.
30882
30883 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
30884
30885         * config.gcc: Mention libgcc/config.host.
30886         * Makefile.in: Update comments mentioning libgcc.
30887         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
30888         (all.cross, start.encap, rest.encap, rest.cross): Update
30889         dependencies for libgcc move.
30890         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
30891         (clean-target, clean-target-libgcc): Delete.
30892         (srcdirify, GCC_EXTRA_PARTS): New macros.
30893         (libgcc-support, libgcc.mvars): New rules.
30894         (distclean): Remove mention of mklibgcc.
30895         (install): Don't reference INSTALL_LIBGCC.
30896         (install-common): Don't reference EXTRA_PARTS.
30897         (install-libgcc, install-multilib): Delete rules.
30898         * mklibgcc.in: Delete file.
30899         * doc/configfiles.texi: Don't mention mklibgcc.
30900
30901         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
30902         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
30903         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
30904         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
30905         (mklibgcc, ldblspecs): Likewise.
30906
30907         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
30908         (posixpre.def): Use $(T).
30909         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
30910         (SHLIB_SRC, SHLIB_INSTALL): Delete.
30911         (SHLIB_LINK): Make dummy.
30912         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
30913
30914         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
30915
30916         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
30917         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
30918         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
30919         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
30920
30921         * configure.ac (all_outputs): Remove mklibgcc.
30922         * configure: Regenerated.
30923
30924 2007-01-03  Josh Conner  <jconner@apple.com>
30925
30926         PR middle-end/29683
30927         * calls.c (compute_argument_addresses): Set stack and stack_slot
30928         for partial args, too.
30929         (store_one_arg): Use locate.size.constant for the size when
30930         generating a save_area.
30931
30932 2007-01-03  Robert Kennedy <jimbob@google.com>
30933
30934         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
30935         whose definitions are deleted due to basic block merging.
30936
30937 2007-01-03  Paul Brook  <paul@codesourcery.com>
30938
30939         PR target/16634
30940         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
30941         functions.
30942         (use_return_insn): Return 0 for Thumb interrupt functions.
30943         (print_multi_reg): Add rfe argument for IRQ returns.
30944         (arm_output_epilogue): Pop interrupt return address directly into PC.
30945         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
30946
30947 2007-01-03  Paul Brook  <paul@codesourcery.com>
30948
30949         Merge from sourcerygxx-4_1.
30950         * config/arm/thumb2.md: New file.
30951         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
30952         Thumb-2.
30953         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
30954         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
30955         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
30956         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
30957         tables.
30958         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
30959         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
30960         comptibility.
30961         * config/arm/ieee754-sf.S: Ditto.
30962         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
30963         (thumb1_base_register_rtx_p): ... to this.
30964         (thumb_index_register_rtx_p): Rename...
30965         (thumb1_index_register_rtx_p): ... to this.
30966         (thumb_output_function_prologue): Rename...
30967         (thumb1_output_function_prologue): ... to this.
30968         (thumb_legitimate_address_p): Rename...
30969         (thumb1_legitimate_address_p): ... to this.
30970         (thumb_rtx_costs): Rename...
30971         (thumb1_rtx_costs): ... to this.
30972         (thumb_compute_save_reg_mask): Rename...
30973         (thumb1_compute_save_reg_mask): ... to this.
30974         (thumb_final_prescan_insn): Rename...
30975         (thumb1_final_prescan_insn): ... to this.
30976         (thumb_expand_epilogue): Rename...
30977         (thumb1_expand_epilogue): ... to this.
30978         (arm_unwind_emit_stm): Rename...
30979         (arm_unwind_emit_sequence): ... to this.
30980         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
30981         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
30982         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
30983         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
30984         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
30985         thumb2_output_casesi): New functions.
30986         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
30987         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
30988         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
30989         THUMB2_WORK_REGS): Define.
30990         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
30991         arm_condexec_mask, arm_condexec_masklen)): New variables.
30992         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
30993         (arm_override_options): Check new CPU capabilities.
30994         Set new architecture flag variables.
30995         (arm_isr_value): Handle v7m interrupt functions.
30996         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
30997         Thumb-2.
30998         (const_ok_for_arm): Handle Thumb-2 constants.
30999         (arm_gen_constant): Ditto.  Use movw when available.
31000         (arm_function_ok_for_sibcall): Return false for v7m interrupt
31001         functions.
31002         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
31003         (thumb_find_work_register, arm_load_pic_register,
31004         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
31005         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
31006         print_multi_reg, output_mov_long_double_fpa_from_arm,
31007         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
31008         output_mov_double_fpa_from_arm, output_move_double,
31009         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
31010         output_return_instruction, arm_output_function_prologue,
31011         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
31012         arm_output_mi_thunk, thumb_set_return_address): Ditto.
31013         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
31014         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
31015         (arithmetic_instr, shift_op): Use arm_shift_nmem.
31016         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
31017         '!' and 'L'.
31018         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
31019         (thumb_expand_prologue): Use thumb_set_frame_pointer.
31020         (arm_file_start): Output directive for unified syntax.
31021         (arm_unwind_emit_set): Handle stack alignment instruction.
31022         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
31023         Add v6t2, v7, v7a, v7r and v7m.
31024         (RETLDM): Add Thumb-2 code.
31025         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
31026         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
31027         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
31028         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
31029         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
31030         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
31031         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
31032         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
31033         ADJUST_INSN_LENGTH): Define.
31034         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
31035         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
31036         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
31037         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
31038         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
31039         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
31040         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
31041         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
31042         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
31043         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
31044         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
31045         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
31046         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
31047         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
31048         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
31049         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
31050         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
31051         cortex-m3.
31052         * config/arm/arm-tune.md: Regenerate.
31053         * config/arm/arm-protos.h: Update prototypes.
31054         * config/arm/vfp.md: Enable patterns for Thumb-2.
31055         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
31056         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
31057         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
31058         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
31059         * config/arm/libunwind.S: Add Thumb-2 code.
31060         * config/arm/constraints.md: Update include Thumb-2.
31061         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
31062         * config/arm/ieee754-df.S: Ditto.
31063         * config/arm/bpabi.S: Ditto.
31064         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
31065         * config/arm/predicates.md (low_register_operand,
31066         low_reg_or_int_operand, thumb_16bit_operator): New.
31067         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
31068         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
31069         * config/arm/t-arm-elf: Add armv7 multilib.
31070         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
31071         Include thumb2.md.
31072         (UNSPEC_STACK_ALIGN, ce_count): New.
31073         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
31074         arm_zero_extendsidi2, arm_zero_extendqidi2): New
31075         insns/expanders.
31076         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
31077         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
31078         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
31079         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
31080         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
31081         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
31082         insns.
31083         * doc/extend.texi: Document ARMv7-M interrupt functions.
31084         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
31085
31086 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
31087
31088         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
31089         (struct _Unwind_Context): Rename args_size to flags, remove
31090         signal_frame field, add a new args_size field and version field.
31091         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
31092         _Unwind_IsExtendedContext): New inline functions.
31093         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
31094         Assume by_value array is only present if _Unwind_IsExtendedContext.
31095         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
31096         _Unwind_IsSignalFrame.
31097         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
31098         (uw_update_context_1): Use _Unwind_SetSignalFrame.
31099         (uw_init_context_1): Initialize context->flags to
31100         EXTENDED_CONTEXT_BIT.
31101         * config/rs6000/linux-unwind.h (frob_update_context): Use
31102         _Unwind_SetSignalFrame.
31103
31104 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31105
31106         PR middle-end/30353
31107         * gimplify.c (gimplify_modify_expr_complex_part): Move below
31108         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
31109         the value.
31110
31111 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
31112
31113         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
31114         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
31115         RET, AT_SP): Remove.
31116         * config/i386/i386.md (*sse_prologue_save_insn): Use return
31117         instead of RET.
31118
31119         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
31120         * cfgbuild.c (find_basic_blocks): Likewise.
31121         * cfgrtl.c (rtl_create_basic_block): Likewise.
31122         * function.c (temp_slots_at_level): Likewise.
31123         * reg-stack.c (stack_regs_mentioned): Likewise.
31124         * regclass.c (allocate_reg_info): Likewise.
31125         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
31126         set_bb_for_stmt, move_block_to_fn): Likewise.
31127         * tree-complex.c (tree_lower_complex): Likewise.
31128         * vec.h (VEC_safe_grow_cleared): New.
31129
31130         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
31131
31132 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
31133
31134         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
31135         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
31136         to loop_version.
31137         * cfgloopmanip.c (scale_loop_frequencies): Export.
31138         (loopify): Scale the frequencies by prescribed coefficients.
31139         (set_zero_probability): New function.
31140         (duplicate_loop_to_header_edge): Improve updating of frequencies.
31141         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
31142         and frequencies according to arguments.
31143         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
31144         correctly.
31145         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
31146         * modulo-sched.c (sms_schedule): Set probabilities for entering
31147         versioned loop correctly.
31148         * tree-vect-transform.c (vect_transform_loop): Ditto.
31149         * cfgloop.h (loopify, loop_version): Declaration changed.
31150         (scale_loop_frequencies): Declared.
31151
31152 2007-01-02  Jan Hubicka  <jh@suse.cz>
31153
31154         * cgraph.c: Include tree-flow.h
31155         (cgraph_add_new-function): Handle IPA_SSA mode; execute
31156         early_local_passes.
31157         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
31158         * tree-pass.h (pass_all_early_optimizations): Declare.
31159         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
31160         early_local_passes.
31161         (cgraph_analyze_function): Do early_local_passes.
31162         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
31163         Do not add referenced vars.
31164         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
31165         SSA form.
31166         (gate_all_early_local_passes): New gate.
31167         (pass_early_local_passes): Use new gate.
31168         (execute_early_local_optimizations): New functions.
31169         (gate_all_early_optimizations): New gate.
31170         (pass_all_early_optimizations): New pass.
31171         (execute_free_datastructures): Free SSA only when initialized.
31172         (gate_init_datastructures): Init only when optimizing.
31173         (tree_lowering_passes): Do early local passes when called late.
31174         * tree-profile.c (do_tree_profiling): Don't profile functions added
31175         late.
31176         (do_early_tree_profiling, pass_early_tree_profile): Kill.
31177         * tree-cfg.c (update_modified_stmts): Do not update when operands are
31178         not active.
31179         * passes.c (init_optimizations_passes): Reorder so we go into SSA
31180         during early_local_passes.
31181         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
31182
31183
31184 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
31185
31186         * Makefile.in: Update copyright year.
31187
31188 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
31189
31190         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
31191         in $(lang_checks) and check-consistency targets.
31192
31193 2007-01-02  Jan Hubicka  <jh@suse.cz>
31194
31195         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
31196         Do not add referenced vars.
31197         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
31198         are not active.
31199         * passes.c (init_optimization_passes): Put mudflap_2 after
31200         free_datastructures.
31201
31202 2007-01-02  Jan Hubicka  <jh@suse.cz>
31203
31204         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
31205         Set NOTHROW flag on call statements proved to be nothrow.
31206         Update statement of local calls so new pure/const functions are
31207         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
31208         goto receivers.
31209         (tree_rest_of_compilation): Register hooks and initialize bitmap
31210         early. Do not set after_inlining flag.
31211
31212 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
31213
31214         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
31215         HOST_BITS_PER_LONGLONG
31216
31217 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
31218
31219         PR c/19977
31220         * c-typeck.c (store_init_value): Don't emit pedantic overflow
31221         warning for non-static initializers.
31222
31223 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
31224
31225         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
31226         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
31227         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
31228         Always use set_unique_reg_note to add REG_EQUAL notes.
31229
31230 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
31231
31232         Revert:
31233         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
31234
31235         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
31236         * cfgbuild.c (find_basic_blocks): Likewise.
31237         * cfgrtl.c (rtl_create_basic_block): Likewise.
31238         * function.c (temp_slots_at_level): Likewise.
31239         * reg-stack.c (stack_regs_mentioned): Likewise.
31240         * regclass.c (allocate_reg_info): Likewise.
31241         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
31242         set_bb_for_stmt, move_block_to_fn): Likewise.
31243         * tree-complex.c (tree_lower_complex): Likewise.
31244         * vec.h (VEC_safe_grow_cleared): New.
31245
31246 2007-01-02  Ian Lance Taylor  <iant@google.com>
31247
31248         * c-common.c (c_common_truthvalue_conversion): When warning about
31249         using an assignment as a truth value, set TREE_NO_WARNING.
31250
31251 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
31252
31253         PR middle-end/7651
31254         * c.opt (Wold-style-declaration): New.
31255         * doc/invoke.texi (C-only Warning Options): New.
31256         (Wold-style-declaration): Document it.
31257         (Wextra): Enabled by -Wextra.
31258         * c-opts.c (c_common_post_options): Enabled by -Wextra.
31259         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
31260         -Wold-style-declaration.
31261
31262 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
31263
31264         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
31265         * cfgbuild.c (find_basic_blocks): Likewise.
31266         * cfgrtl.c (rtl_create_basic_block): Likewise.
31267         * function.c (temp_slots_at_level): Likewise.
31268         * reg-stack.c (stack_regs_mentioned): Likewise.
31269         * regclass.c (allocate_reg_info): Likewise.
31270         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
31271         set_bb_for_stmt, move_block_to_fn): Likewise.
31272         * tree-complex.c (tree_lower_complex): Likewise.
31273         * vec.h (VEC_safe_grow_cleared): New.
31274
31275 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
31276
31277         * c-common.c (c_common_nodes_and_builtins): Since variants of
31278         void_type_node get built before it is given a name, we need to
31279         give those variants the name, too.
31280         (complete_array_type): We need to work with the canonical main
31281         type of the array, from which we will build the qualified version.
31282         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
31283         * print-tree.c (print_node): Display canonical type information
31284         for each type.
31285         * stor-layout.c (layout_type): When we don't know the
31286         alignment of a type for which we're building an array, we end up
31287         guessing wrong, so make the type require structural equality.
31288         * tree.c (make_node_stat): When we build a new type, it is its
31289         own canonical type.
31290         (build_type_attribute_qual_variant): When building an attribute
31291         variant, its canonical type is the non-attribute variant. However,
31292         if the attributes are target-dependent and they differ, we need to
31293         use structural equality checks for this type.
31294         (build_qualified_type): A qualified type is not equivalent to its
31295         unqualified variant; set the canonical type appropriately.
31296         (build_distinct_type_copy): When building a distinct type from
31297         another type, the new type is its own canonical type.
31298         (build_variant_type_copy): When building a new type variant, we
31299         assume that it is equivalent to the original type.
31300         (build_pointer_type_for_mode): When building a pointer type, also
31301         build a canonical type pointer.
31302         (build_reference_type_for_mode): When building a reference type,
31303         also build a canonical type reference.
31304         (build_index_type): When we can't hash an index type (e.g.,
31305         because its maximum value is negative), the index type requires
31306         structural equality tests.
31307         (build_array_type): Build the canonical form of an array type.
31308         (build_function_type): Function types require structural equality,
31309         because they contain default arguments, attributes, etc.
31310         (build_method_type_directly): Ditto for method types.
31311         (build_offset_type): Build the canonical offset type.
31312         (build_complex_type): Build the canonical vector type.
31313         (make_vector_type): Build the canonical vector type.
31314         * tree.h (TYPE_CANONICAL): New.
31315         (TYPE_STRUCTURAL_EQUALITY_P): New.
31316         (SET_TYPE_STRUCTURAL_EQUALITY): New.
31317         (struct tree_type): Added "canonical" field.
31318         * params.h (VERIFY_CANONICAL_TYPES): New.
31319         * doc/c-tree.texi (TYPE_CANONICAL): Document.
31320         (TYPE_STRUCTURAL_EQUALITY_P): Document.
31321         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
31322         * doc/invoke.texi (verify-canonical-types): Document --param
31323         parameter for verifying canonical types.
31324
31325 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
31326
31327         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
31328         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
31329         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
31330         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
31331         tm_file.
31332         * config/rs6000/e500.h: New.
31333         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
31334         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
31335         Remove.
31336         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
31337         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
31338         TARGET_E500_DOUBLE): Remove.
31339         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
31340         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
31341         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
31342         * config/rs6000/rs6000.c (rs6000_override_options): Use
31343         CHECK_E500_OPTIONS.
31344
31345 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
31346
31347         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
31348         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
31349         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
31350         rs6000_emit_cmove): Don't check TARGET_E500.
31351         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
31352         sordered): Don't check TARGET_E500.
31353
31354 2007-01-01  Eric Christopher  <echristo@apple.com>
31355
31356         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
31357         HARD_REGISTER_NUM_P.
31358
31359 2007-01-01  Roger Sayle  <roger@eyesopen.com>
31360
31361         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
31362         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
31363         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
31364         eq/ne Y".
31365
31366 2007-01-01  Mike Stump  <mrs@apple.com>
31367
31368         * configure.ac: Remove support for building with Apple's gcc-3.1.
31369
31370 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
31371
31372         PR middle-end/30311
31373         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
31374         REG is a hard register.  Do not modify REG before calling
31375         subreg_nregs.
31376         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
31377         multiple of the size of YMODE for certain lowpart cases.
31378
31379 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
31380
31381         PR middle-end/30253
31382         * gimplify (voidify_wrapper_expr): Update for
31383         GIMPLE_MODIFY_STMT.
31384
31385 2007-01-01  Andreas Schwab  <schwab@suse.de>
31386
31387         PR target/29166
31388         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
31389         save of BR0 in extra_spill_size instead of spill_size.
31390         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
31391         area.
31392         (ia64_expand_epilogue): Restore BR0 from its new location.
31393
31394 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
31395
31396         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
31397         Use a temporary variable if the left hand side is not a gimple
31398         register.
31399
31400 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
31401
31402         * gimplify.c (gimplify_return_expr): Make the temporary variable
31403         for the return expression, a gimple register variable.
31404
31405 2007-01-01  Jan Hubicka  <jh@suse.cz>
31406
31407         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
31408         INSN_LIST.
31409
31410 2007-01-01  Mike Stump  <mrs@apple.com>
31411
31412         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
31413         .literal16.
31414         * config/darwin.c (machopic_select_rtx_section): Use
31415         HAVE_GAS_LITERAL16.
31416         (darwin_mergeable_constant_section): Likewise.
31417         * configure: Regenerate.
31418         * config.in: Regenerate.
31419
31420 2007-01-01  Jan Hubicka  <jh@suse.cz>
31421             Andrew Pinski  <pinskia@gmail.com>
31422
31423         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
31424         before starting IPA passes.