OSDN Git Service

* varpool.c (dump_varpool): Use 'next', not 'next_needed' when
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-11-02  Tom Tromey  <tromey@redhat.com>
2
3         * varpool.c (dump_varpool): Use 'next', not 'next_needed' when
4         traversing pool.
5
6 2007-11-02  Diego Novillo  <dnovillo@google.com>
7
8         * langhooks.h (struct lang_hooks_for_callgraph): Remove third
9         argument from function pointer ANALYZE_EXPR.  Update all
10         users.
11         * cgraph.c (debug_cgraph_node): New.
12         (debug_cgraph): New.
13
14 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
15
16         PR rtl-optimization/33648
17         * cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
18         the newly created basic block.
19
20 2007-11-01  Richard Guenther  <rguenther@suse.de>
21
22         * ggc-page.c (extra_order_size_tab): Add bitmap_head size.
23
24 2007-11-01  Steven Bosscher  <stevenb.gcc@gmail.com>
25
26         PR rtl-optimization/33828
27         * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
28         of VBEIN and VBEOUT.
29
30 2007-11-01  Eric Botcazou  <ebotcazou@libertysurf.fr>
31
32         * optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
33         * sched-rgn.c (compute_trg_info): Zero 'el' local variable.
34         * tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
35
36 2007-11-01  Nathan Sidwell  <nathan@codesourcery.com>
37
38         * gcc.c (getenv_spec_function): Escape the environment variable's
39         value.
40
41 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
42
43         * doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
44         show that CSE means common subexpression elimination.  Change wording
45         for -fsee and define LCM.  Remove capitalization of optimizations
46         for -ftree-reassoc, -ftree-pre, and -ftree-fre.
47
48 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
49
50         PR testsuite/25352
51         * doc/sourcebuild.texi (Test Directives): Document that xfail
52         has no effect for dg-do except when dg-do-what is "run".
53
54 2007-11-01  Tom Tromey  <tromey@redhat.com>
55
56         * c-decl.c (grokdeclarator): Set decl source locations.
57         * c-parser.c (c_parser_enum_specifier): Set location.
58         (c_parser_struct_or_union_specifier): Likewise.
59
60 2007-11-01  Tom Tromey  <tromey@redhat.com>
61
62         * print-tree.c (print_node): Print column number.
63
64 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
65
66         PR debug/33537
67         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
68         gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
69         rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
70
71         PR rtl-optimization/33673
72         * gcse.c (cprop_jump): If a conditional jump has been optimized
73         into unconditional jump, make the remaining normal edge fallthru
74         and delete the jump insn.
75
76 2007-11-01  Ben Elliston  <bje@au.ibm.com>
77
78         * emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
79         (set_mem_attrs_from_reg): Likewise.
80
81 2007-11-01  Michael Matz  <matz@suse.de>
82
83         PR tree-optimization/33961
84         * tree-ssa-phiopt.c (struct name_to_bb.store): New member.
85         (name_to_bb_hash, name_to_bb_eq): Consider and check it.
86         (add_or_mark_expr): New argument 'store', using it to search
87         the hash table.
88         (nt_init_block): Adjust calls to add_or_mark_expr.
89
90 2007-10-31  Jakub Jelinek  <jakub@redhat.com>
91
92         PR target/31507
93         * config/i386/i386.md (pushsf_rex64): Use X instead of < constraints
94         for the first push_operand.
95
96 2007-10-31  Revital Eres  <eres@il.ibm.com>
97
98         * config/rs6000/paired.md (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
99         reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
100         vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
101         movmisalignv2sf, vcondv2sf): New.
102         (UNSPEC_INTERHI_V2SF, UNSPEC_INTERLO_V2SF, UNSPEC_EXTEVEN_V2SF,
103         UNSPEC_EXTODD_V2SF): Define new constants.
104         * config/rs6000/rs6000-protos.h (paired_expand_vector_move,
105         paired_emit_vector_cond_expr): New.
106         * config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
107         * config/rs6000/rs6000.c (paired_expand_vector_move,
108         paired_emit_vector_cond_expr, paired_emit_vector_compare):
109         New functions.
110         * config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
111
112 2007-10-31  Sebastian Pop  <sebastian.pop@amd.com>
113
114         PR tree-optimization/32377
115         * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
116         work also for unknown number of iterations.
117         (analyze_subscript_affine_affine): Clean up.  Don't fail when the 
118         number of iterations is not known.
119
120 2007-10-31  Richard Guenther  <rguenther@suse.de>
121
122         PR middle-end/33779
123         * fold-const.c (extract_muldiv_1): Make sure to not introduce
124         new undefined integer overflow.
125         (fold_binary): Avoid useless conversion.
126
127 2007-10-31  Richard Sandiford  <rsandifo@nildram.co.uk>
128
129         PR target/33948
130         * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P
131         check.
132
133 2007-10-31  Andreas Krebbel  <krebbel1@de.ibm.com>
134
135         * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
136
137         * config/s390/s390.c: (override_options): Replace -mhard-dfp/-msoft-dfp
138         with -mhard-dfp/-mno-hard-dfp.
139         * config/s390/s390.opt: Likewise.
140         * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
141         definition.
142
143 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
144
145         * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
146
147 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
148
149         * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
150         optimization options.
151         (Optimize Options): Add -fdce and -fdse to the list of optimizations
152         enabled by -O.  Document -fdce and -fdse.
153
154 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
155
156         PR c++/33709
157         * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
158         convert second operand of COMPOUND_EXPR to the original type of
159         that argument.
160
161 2007-10-30  Richard Guenther  <rguenther@suse.de>
162
163         * tree-ssa-operands.c (add_vars_for_offset): Fix exit test
164         of loop adding SFTs as virtual operands.
165
166 2007-10-30  Richard Guenther  <rguenther@suse.de>
167
168         * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
169
170 2007-10-29  Dorit Nuzman  <dorit@il.ibm.com>
171
172         PR tree-optimization/32893
173         * tree-vectorize.c (vect_can_force_dr_alignment_p): Check
174         STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY.
175
176 2007-10-29  Rask Ingemann Lambertsen  <rask@sygehus.dk>
177
178         * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
179         x86_64 versions.
180         (sub_ddmmss): Likewise.
181         (umul_ppmm): Likewise.
182         (udiv_qrnnd): Likewise.
183
184 2007-10-29  Janis Johnson  <janis187@us.ibm.com>
185
186         PR testsuite/24841
187         * doc/sourcebuild.texi (Test Directives): Document that dg-require
188         directives must come before dg-additional-sources.
189
190 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
191
192         PR tree-optimization/33723
193         * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
194         MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
195
196 2007-10-29  Richard Sandiford  <rsandifo@nildram.co.uk>
197
198         PR tree-optimization/33614
199         * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
200         if they can't be reduced to VECTOR_CSTs and aren't legitimate
201         initializer constants.
202
203 2007-10-29  Richard Guenther  <rguenther@suse.de>
204
205         PR tree-optimization/33870
206         * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
207         (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
208         SFTs.
209
210 2007-10-29  Richard Guenther  <rguenther@suse.de>
211
212         * passes.c (init_optimization_passes): Exchange store_copy_prop
213         with copy_prop.
214         * tree-pass.h (pass_store_copy_prop): Remove.
215         * tree-ssa-copy.c (do_store_copy_prop): Remove.
216         (stmt_may_generate-copy): Do not handle store_copy_prop.
217         (get_copy_of_val): Likewise.
218         (set_copy_of_val): Likewise.
219         (copy_prop_visit_assignment): Likewise.
220         (copy_prop_visit_stmt): Likewise.
221         (copy_prop_visit_phi_node): Likewise.
222         (init_copy_prop): Likewise.
223         (execute_copy_prop): Likewise.
224         (do_copy_prop): Remove.
225         (gate_store_copy_prop): Likewise.
226         (store_copy_prop): Likewise.
227         (pass_store_copy_prop): Likewise.
228         (pass_copy_prop): Call execute_copy_prop.
229         * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
230         * common.opt (ftree-store-copy-prop): Mark obsolete.
231         * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
232
233 2007-10-29  Ian Lance Taylor  <iant@google.com>
234
235         * ifcvt.c (noce_can_store_speculate_p): New static function.
236         (noce_process_if_block): Call it.
237         (if_convert): Remove recompute_dominance parameter.  Change all
238         callers.
239
240 2007-10-29  Richard Guenther  <rguenther@suse.de>
241
242         * tree-flow-inline.h (get_subvar_at): Use binary search.
243         (get_first_overlapping_subvar): New function to binary search
244         for the first overlapping subvar.
245         * tree-ssa-operands.c (add_vars_for_offset): Strip down to
246         just handle adding subvars for a pointed-to subvar.  Optimize
247         and use get_first_overlapping_subvar.
248         (add_vars_for_bitmap): Fold into single caller.
249         (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
250         and non pointed-to bits of add_vars_for_offset.
251
252 2007-10-29  Revital Eres  <eres@il.ibm.com> 
253
254         * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
255
256 2007-10-29  Razya Ladelsky  <razya@il.ibm.com>
257             Zdenek Dvorak  <ook@ucw.cz>
258
259         OMP_ATOMIC Changes,
260         reduction support for automatic parallelization.
261
262         * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
263         OMP_ATOMIC_STORE.
264         * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
265         * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
266         and OMP_ATOMIC_STORE.
267         * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
268         * gimple-low.c (lower_stmt): Same.
269         * gimplify.c (gimplify_expr): Same.
270         (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
271         gimplify_omp_atomic_mutex): Remove.
272         (gimplify_omp_atomic): Change it to simply gimplify the
273         statement instead of expanding it.
274         * omp-low.c: Add includes to optabs.h, cfgloop.h.
275         (expand_omp_atomic, expand_omp_atomic_pipeline,
276         goa_stabilize_expr, expand_omp_atomic_mutex,
277         expand_omp_atomic_fetch_op): New functions to implement
278         expansion of OMP_ATOMIC.
279         (expand_omp, build_omp_regions_1): Add support for
280         OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
281         * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
282         OMP_ATOMIC_STORE.
283         * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
284         OMP_ATOMIC_STORE.
285         * tree-parloops.c: add include to tree-vectorizer.h.
286         (reduction_info): New structure for reduction.
287         (reduction_list): New list to represent list of reductions per loop.
288         (struct data_arg): New helper structure for reduction.
289         (reduction_info_hash, reduction_info_eq, reduction_phi,
290         initialize_reductions, create_call_for_reduction,
291         create_phi_for_local_result, create_call_for_reduction_1,
292         create_loads_for_reductions, create_final_loads_for_reduction):
293         New functions.
294         (loop_parallel_p): Identify reductions, add reduction_list parameter.
295         (separate_decls_in_loop_name): Support reduction variables.
296         (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
297         call create_loads_for_reduction for each reduction.
298         (canonicalize_loop_ivs): Identify reductions, add reduction_list
299         parameter.
300         (transform_to_exit_first_loop): Add reduction support, add
301         reduction_list parameter.
302         (gen_parallel_loop): Add reduction_list parameter.  Add call
303         separate_decls_in_loop with
304         the new argument.  Traverse reductions and call
305         initialize_reductions, create_call_for_reduction.
306         (parallelize_loops): Create and delete the reduction list.
307         (add_field_for_name): Change use of data parameter.  Add fields for
308         reductions.
309         * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
310         * tree-vect-analyze.c (vect_analyze_loop_form): export it.
311         * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
312         * tree-inline.c (estimate_num_insns_1): add cases for
313         OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
314         * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
315         * tree-ssa-operands.c (get_addr_dereference_operands):
316         New function.  Subroutine of get_indirect_ref_operands.
317         (get_indirect_ref_operands): Call get_addr_dereference_operands.
318         (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
319
320
321 2007-10-29  Hans-Peter Nilsson  <hp@axis.com>
322
323         * config/cris/cris.c: Include df.h.
324         (cris_address_cost): Add gcc_assert for canonicalization
325         assumptions.  For PLUS with MULT or register, correct
326         test for register in other arm.  Tweak comments.
327
328 2007-10-28  Richard Guenther  <rguenther@suse.de>
329
330         * tree-ssa-operands.c (add_vars_for_offset): Add parameter
331         telling if the var is to be treated as points-to location.
332         (add_vars_for_bitmap): Pass true to add_vars_for_offset.
333         (add_virtual_operand): Only recurse into MPTs if aliases
334         is from a NMT.
335
336 2007-10-28  Richard Guenther  <rguenther@suse.de>
337
338         * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
339         (add_vars_for_bitmap): Do not recurse further.  Only add vars
340         for pointed-to SFTs.
341         (add_virtual_operand): Re-instantiate loop to add operands for
342         aliases.  Recurse into MPTs.
343         (get_indirect_ref_operands): If we fall back to use a pointers
344         SMT, make sure to not prune based on the access offset and size.
345
346 2007-10-28  Andrew Pinski  <pinskia@gmail.com>
347
348         PR tree-opt/33589
349         * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
350         the eh information on the statement.
351
352 2007-10-28  Richard Guenther  <rguenther@suse.de>
353
354         * tree-flow.h (subvar_t): Make it a VEC.
355         (struct subvar): Remove.
356         (struct var_ann_d): Use VEC(tree,gc) to store subvars.
357         * tree-flow-inline.h (get_subvar_at): Adjust iterators over
358         variable subvars.
359         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
360         * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
361         * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
362         (set_initial_properties): Likewise.
363         (setup_pointers_and_addressables): Likewise.
364         (new_type_alias): Likewise.
365         (create_overlap_variables_for): Likewise.
366         * tree-dfa.c (dump_subvars_for): Likewise.
367         * tree-ssa-operands.c (add_vars_for_offset): Likewise.
368         (get_expr_operands): Likewise.
369         (add_to_addressable_set): Likewise.
370         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
371
372 2007-10-28  Uros Bizjak  <ubizjak@gmail.com>
373
374         PR tree-optimization/33920
375         * tree-if-conv.c (tree_if_conversion): Force predicate of single
376         successor bb to true when predecessor bb has NULL predicate.
377         (find_phi_replacement_condition): Assert that tmp_cond is non-null.
378
379 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
380
381         * config/mips/mips.md: Add combiner patterns for DImode extensions
382         of HImode and QImode truncations.  Reformat HImode <- QImode pattern
383         for consistency.
384
385 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
386
387         PR target/33895
388         * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
389
390 2007-10-28  Andreas Krebbel  <krebbel1@de.ibm.com>
391
392         * dce.c (delete_unmarked_insns): Just delete the RETVAL and
393         LIBCALL notes if they are about to be moved to the same insn.
394
395 2007-10-27  Richard Guenther  <rguenther@suse.de>
396
397         PR tree-optimization/33870
398         * tree-ssa-operands.c (add_vars_for_offset): Reduce code
399         duplication.  Remove redundant call to access_can_touch_variable.
400         (add_vars_for_bitmap): New helper for recursing over MPT contents.
401         (add_virtual_operand): Use it.
402
403 2007-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
404
405         PR fortran/31608
406         * pa.h (ASM_PN_FORMAT): Delete define.
407
408 2007-10-26  Janis Johnson  <janis187@us.ibm.com>
409
410         * doc/invoke.texi (Option Summary, optimizations): Remove
411         -fbounds-check.  Add -fassociative-math, -freciprocal-math,
412         -ftree-vrp and -funit-at-a-time.  Change -fno-split-wide-types to
413         -fsplit-wide-types to match later entry.  Break up a long line.
414         (Option Summary, code gen options)  Add -fno-stack-limit.  Add
415         missing @gol to the end of a line.
416         (Optimization Options): Remove -fbounds-check, which is also
417         documented under Code Generation Options.  Remove =n from
418         index entry for -ftree-parallelize-loops.  Change -fno-cprop-registers
419         to -fcprop-registers to match other options, and say when it is
420         enabled rather than disabled.  Remove extra index entry for
421         -fno-cx-limited-range.  Add index entries for -fstack-protector
422         and -fstack-protector-all.
423         (Code Gen Options): Add index entry for -ftls-model.
424
425 2007-10-26  Anatoly Sokolov <aesok@post.ru>
426
427         * config/avr/avr.c (avr_OS_task_function_p): Add new function.
428         (avr_regs_to_save): Handle functions with 'OS_task' attribute.
429         (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
430         expand_epilogue, output_movhi): Don't handle 'main' function.
431         (avr_attribute_table): Add 'OS_task' function attribute.
432         * config/avr/avr.h (machine_function): Remove 'is_main' field, add
433         'is_OS_task' field.
434         * config/avr/avr.md (return_from_main_epilogue): Remove insn.
435         (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
436         'main' function.
437         * config/avr/avr.opt (minit-stack): Remove.
438
439 2007-10-26  Eric Botcazou  <ebotcazou@adacore.com>
440
441         * tree-nested.c (get_trampoline_type): Fix thinko.
442
443 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
444
445         PR c++/33601
446         * tree.c (build_offset_type): Build canonical type based on the
447         TYPE_MAIN_VARIANT of the base type.
448
449 2007-10-26  Daniel Jacobowitz  <dan@codesourcery.com>
450
451         * reorg.c (emit_delay_sequence): Move insn locator from the
452         first insn to the sequence.
453
454 2007-10-26  Samuel Tardieu  <sam@rfc1149.net>
455
456         * ipa-pure-const.c (check_decl): Return immediately when
457         pure_const_state has been set to IPA_NEITHER.
458
459 2007-10-25  Ira Rosen  <irar@il.ibm.com>
460
461         PR tree-optimization/33833
462         * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
463         and convert init to sizetype in inner_base construction.
464
465 2007-10-25  Richard Guenther  <rguenther@suse.de>
466
467         * tree-flow.h (mem_sym_stats): Remove.
468         (dump_mem_sym_stats_for_var): Declare.
469         * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
470         (mem_sym_stats): Move ...
471         * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
472         (mem_sym_score): Rename from ...
473         (pscore): ... this.  Remove.
474         (dump_mem_sym_stats_for_var): New function.  Dump the score, but
475         not the frequencies.
476         (compare_mp_info_entries): Make sort stable by disambiguating
477         on DECL_UID.
478
479 2007-10-25  Ira Rosen  <irar@il.ibm.com>
480
481         PR tree-optimization/33866
482         * tree-vect-transform.c (vectorizable_store): Check operands of all
483         the stmts in the group of strided accesses. Get def stmt type for each
484         store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
485
486 2007-10-25  Uros Bizjak  <ubizjak@gmail.com>
487
488         * config/i386/constraints.md (Y0): Rename register constraint to Yz.
489         (Yt): Rename register constraint to Y2.
490         * config/i386/sse.md: Use renamed register constraints.
491         * config/i386/mmx.md: Ditto.
492         * config/i386/i386.md: Ditto.
493
494 2007-10-25  Rask Ingemann Lambertsen  <rask@sygehus.dk>
495
496         * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
497
498 2007-10-24  Chao-ying Fu  <fu@mips.com>
499
500         * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
501         DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
502
503 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
504             Olga Golovanevsky <olga@il.ibm.com>
505         
506         * ipa-struct-reorg.c (replace_field_acc): Make it clear to
507         the compiler that wr.wrap and wr.domain are initialized in
508         any case.
509
510 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
511
512         * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
513         to print gcov_type values.
514
515 2007-10-24  Eric B. Weddington  <eweddington@cso.atmel.com>
516
517         * config/avr/avr.h: Do not include progmem_section definition when
518         building with IN_TARGET_LIBS.
519
520 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
521
522         PR target/33755
523         * config/mips/mips.c (mips_lo_sum_offset): New structure.
524         (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
525         (mips_lo_sum_offset_lookup, mips_record_lo_sum)
526         (mips_orphaned_high_part_p: New functions.
527         (mips_avoid_hazard): Don't check INSN_P here.
528         (mips_avoid_hazards): Rename to...
529         (mips_reorg_process_insns): ...this.  Cope with
530         !TARGET_EXPLICIT_RELOCS.  Delete orphaned high-part relocations,
531         or turn them into nops.
532         (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
533         dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
534         (mips_set_mips16_mode): Don't set flag_delayed_branch here.
535         (mips_override_options): Set flag_delayed_branch to 0.
536
537 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
538
539         * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
540         MIPS-specific implementation details.
541         (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
542         (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
543         (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
544         for targets with movmemsi.
545         (MOVE_BY_PIECES_P): Define.
546         * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
547         (mips_block_move_loop): Add a bytes_per_iter argument.
548         (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
549         Update call to mips_block_move_loop.
550
551 2007-10-24  Michael Matz  <matz@suse.de>
552
553         PR debug/33868
554         * var-tracking.c (variable_union): Don't break after one loop
555         iteration but only when a difference is found.
556         (dump_variable): Also print DECL_UID.
557
558 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
559
560         * ipa-type-escape.h: Expose function
561         is_array_access_through_pointer_and_index.
562         * ipa-type-escape.c
563         (is_array_access_through_pointer_and_index):
564         Add three new parameters. Add support of
565         POINTER_PLUS_EXPR tree code.
566
567 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
568
569         * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
570         * tree-pass.h: Add pass_ipa_struct_reorg.
571         * common.opt: Add ipa-struct-reorg flag.
572         * Makefile.in: Add ipa-strcut-reorg.o compilation.
573         * passes.c: Add pass pass_ipa_struct_reorg.
574         * params.h:  Add STRUCT_REORG_COLD_STRUCT_RATIO.
575         * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
576
577 2007-10-24  Ira Rosen  <irar@il.ibm.com>
578
579         PR tree-optimization/33804
580         * tree-vect-transform.c (vectorizable_operation): Remove the
581         checks that the vectorization is worthwhile from the transformation
582         phase.
583
584 2007-10-24  Ira Rosen  <irar@il.ibm.com>
585
586         * tree-vect-analyze.c (vect_build_slp_tree): Return false if
587         vectype cannot be determined for the scalar type.
588         (vect_analyze_slp_instance): Likewise.
589         * tree-vect-transform.c (vect_model_reduction_cost): Change the
590         return type to bool. Return false if vectype cannot be determined 
591         for the scalar type.
592         (vect_get_constant_vectors): Return false if vectype cannot be
593         determined for the scalar type.
594         (get_initial_def_for_induction, vect_get_vec_def_for_operand,
595         get_initial_def_for_reduction, vect_create_epilog_for_reduction,
596         vectorizable_reduction): Likewise.      
597
598 2007-10-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
599
600         * config.gcc: For a FreeBSD target, parse the value of ${target}
601         to determine the value of FBSD_MAJOR, instead of adding an
602         explicit check for every possible FreeBSD major version.
603
604 2007-10-23  Uros Bizjak  <ubizjak@gmail.com>
605
606         PR rtl-optimization/33846
607         * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
608
609 2007-10-23  Dorit Nuzman  <dorit@il.ibm.com>
610
611         PR tree-optimization/33860
612         * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
613         interleaved accesses in case the dr is inside the inner-loop during
614         outer-loop vectorization.
615
616 2007-10-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
617
618         * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
619         Document MEM_POINTER.  Replace mentions of "integrated"
620         field with "return_val".  Delete outdated stuff.
621
622 2007-10-23  David Edelsohn  <edelsohn@gnu.org>
623
624         * config/rs6000/rs6000.c (rs6000_override_options): Set
625         rs6000_altivec_abi on AIX.
626         (conditional_register_usage): Set VR20:31 fixed on AIX.
627
628 2007-10-23  Richard Guenther  <rguenther@suse.de>
629
630         * alias.c (get_alias_set): For INDIRECT_REFs, deal with
631         SSA_NAME pointers.
632
633 2007-10-22  Seongbae Park <seongbae.park@gmail.com>
634         David S. Miller  <davem@davemloft.net>
635
636         * df-scan.c (df_get_call_refs): Mark global registers as both a
637         DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
638
639 2007-10-22  Dorit Nuzman  <dorit@il.ibm.com>
640
641         PR tree-optimization/33834
642         PR tree-optimization/33835
643         * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
644         stmts need to be checked for success seperately.
645         * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
646         Remove the check that stmt is not LIVE.
647         (vectorizable_assignment, vectorizable_induction): Likewise.
648         (vectorizable_operation, vectorizable_type_demotion): Likewise.
649         (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
650         Likewise.
651         (vectorizable_live_operation): Check that op is not NULL. 
652
653 2007-10-22  Janis Johnson  <janis187@us.ibm.com>
654
655         * doc/invoke.texi (Optimization Options): In the summary, show
656         that the value for options -falign-jumps, -falign-labels,
657         -falign-loops, -falign-functions, -fsched-stalled-insns, and
658         -fsched-stalled-insns-dep is optional.  In the summary, show that
659         -fsched-stalled-insns takes an optional argument and that
660         -fparallelize-loops takes an argument.  Add opindex for several
661         optimization options, and fix typos in the opindex commands for
662         several others.  In the descriptions for -fsched-stalled-insns
663         and -fsched-stalled-insns-dep, show the options with and without
664         values.
665
666 2007-10-22  Eric B. Weddington  <eweddington@cso.atmel.com>
667
668         * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
669         produced.
670         * config/avr/avr.h (LINK_SPEC): Likewise.
671         (CRT_BINUTILS_SPECS): Likewsie.
672         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
673
674 2007-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
675
676         PR rtl-optimization/33644
677         * cfgcleanup.c: Do not include dce.h.
678         * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
679         * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
680         * dce.c (something_changed): Delete.
681         (libcall_dead_p): New predicate.
682         (delete_unmarked_insns): Use it to delete dead libcalls.
683         Deal with REG_LIBCALL and REG_RETVAL notes.
684         (prescan_libcall_for_dce): New function.
685         (prescan_insns_for_dce): Use it to deal with libcalls.
686         (mark_reg_dependencies): Do nothing special for libcalls.
687         (dce_process_block): Likewise.
688         (fast_dce): Delete unused local variable.
689         (run_fast_dce): Do not return a value.
690         * dce.h (struct df): Delete.
691         (run_fast_dce): Adjust prototype.
692         * optabs.c (libcall_id): Delete.
693         (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
694         (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
695         * reload1.c (reload): Delete REG_LIBCALL_ID case.
696         * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
697         * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
698         notes instead of REG_LIBCALL_ID notes.
699         * reg-notes.def (LIBCALL_ID): Delete.
700         * Makefile.in (see.o): Add dce.h dependency.
701         (cfgcleanup.o): Remove dce.h dependency.
702
703 2007-10-22  Michael Matz  <matz@suse.de>
704
705         PR tree-optimization/33855
706         * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
707         and VECTOR_TYPE.
708
709 2007-10-22  Ira Rosen  <irar@il.ibm.com>
710
711         PR tree-optimization/33854
712         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
713         FLOAT_EXPR to the list of promotion operations. 
714
715 2007-10-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
716
717         PR target/29473
718         PR target/29493
719         * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
720         (print_reg): Print register prefix only with AT&T asm syntax. 
721         Support pc_rtx for RIP register.
722         (print_operand_address): Use print_reg()'s pc_rtx support for RIP
723         relative addressing.  Always print segment register prefix with AT&T
724         asm syntax and never with Intel asm syntax.
725         (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands. 
726         Fix prefix for 16-byte XFmode operands.
727         (output_addr_const_extra): Support Intel asm syntax.
728         (x86_file_start): Don't use register prefix with Intel asm syntax.
729         * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
730         ("return_internal_long"): Fix Intel asm syntax output.
731         ("set_got_rex64"): Support Intel asm syntax.
732         ("set_rip_rex64"): Likewise.
733         ("set_got_offset_rex64"): Likewise.
734         ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
735         syntax.
736         ("*tls_global_dynamic_64"): Likewise.
737         ("*tls_local_dynamic_base_64"): Likewise.
738         ("*load_tp_si")("*load_tp_di"): Likewise.
739         ("*add_tp_si")("*add_tp_di"): Likewise.
740         ("*tls_dynamic_lea_64"): Likewise.
741         ("*sibcall_value_1_rex64_v"): Likewise.
742         ("stack_tls_protect_set_si"): Likewise.
743         ("stack_tls_protect_set_di"): Likewise.
744         ("stack_tls_protect_test_si"): Likewise.
745         ("stack_tls_protect_test_di"): Likewise.
746         * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
747         syntax output.
748         ("*movv2sf_internal_rex64"): Likewise.
749         * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
750         (__get_cpuid_max): Likewise.
751
752 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
753
754         * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
755         the STRICT_P argument type "bool" rather than "int".
756         (mips_legitimate_address_p): Likewise.
757         (fp_register_operand, lo_operand): Delete.
758         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
759         (mips_emit_scc): Rename to...
760         (mips_expand_scc): ...this.
761         (gen_conditional_branch): Rename to...
762         (mips_expand_conditional_branch): ...this.
763         (gen_conditional_move): Rename to...
764         (mips_expand_conditional_move): ...this.
765         (mips_gen_conditional_trap): Rename to...
766         (mips_expand_conditional_trap): ...this and take an rtx code instead
767         of an operands array.
768         (mips_expand_call): Give the SIBCALL_P argument type "bool"
769         rather than "int".
770         (mips_emit_fcc_reload): Rename to...
771         (mips_expand_fcc_reload): ...this.
772         (init_cumulative_args): Rename to...
773         (mips_init_cumulative_args): ...this and remove the libname argument.
774         (function_arg_advance): Rename to...
775         (mips_function_arg_advance): ...this.
776         (function_arg): Rename to...
777         (mips_function_arg): ...this and use "rtx" instead of
778         "struct rtx_def *".
779         (function_arg_boundary): Rename to...
780         (mips_function_arg_boundary): ...this.
781         (mips_expand_unaligned_load): Rename to...
782         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
783         and BITPOS arguments type "HOST_WIDE_INT".
784         (mips_expand_unaligned_store): Rename to...
785         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
786         and BITPOS arguments type "HOST_WIDE_INT".
787         (override_options): Rename to...
788         (mips_override_options): ...this.
789         (print_operand): Rename to...
790         (mips_print_operand): ...this.
791         (print_operand_address): Rename to...
792         (mips_print_operand_address): ...this.
793         (mips_output_ascii): Remove the PREFIX argument.
794         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
795         rather than "int".
796         (mips_can_use_return_insn): Return a "bool" rather than an "int".
797         (mips_function_value): Remove the FUNC argument.  Use "rtx" instead
798         of "struct rtx_def *".
799         (mips_secondary_reload_class): Give the IN_P argument type "bool"
800         rather than "int".
801         (build_mips16_call_stub): Delete.
802         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
803         (mips_use_ins_ext_p): Give the second and third arguments type
804         "HOST_WIDE_INT" rather than "rtx".
805         * config/mips/mips.h: Update after the above changes.  Tweak comments
806         and formatting.
807         (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
808         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
809         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
810         element type from "char" to "bool".
811         (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
812         (mips_cpu_info_table): Delete.
813         * config/mips/mips.md: Update after the above changes.  Tweak some
814         formatting.
815         * config/mips/mips-ps-3d.md: Likewise.
816         * config/mips/mips.c: Tweak comments and formatting.
817         Use NULL-like macros rather than 0 in various places.
818         (mips_section_threshold): Rename to...
819         (mips_small_data_threshold): ...this and give it an unsigned type.
820         (num_source_filenames): Remove explicit initialization.
821         (sdb_label_count): Likewise.
822         (sym_lineno): Delete.
823         (set_noat): Make static.
824         (mips_branch_likely): Likewise, and give it type "bool".
825         (mips_isa_info): Rename to...
826         (mips_isa_option_info): ...this.
827         (mips_flag_delayed_branch): Rename to...
828         (mips_base_delayed_branch): ...this.
829         (mips_split_addresses): Delete.
830         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
831         element type from "char" to "bool".
832         (mips_regno_to_class): Add an explicit array size.
833         (mips16_flipper): Change from type "int" to type "bool".
834         (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
835         (mips_tls_operand_p): Rename to...
836         (mips_tls_symbol_p): ...this.
837         (mips_global_symbol_p): Remove redundant "const".
838         (mips_offset_within_alignment_p): Simplify.
839         (mips_regno_mode_ok_for_base_p): Change the name of the last argument
840         to STRICT_P and give it type bool.
841         (mips_valid_base_register_p): Likewise.
842         (mips_classify_address): Likewise.
843         (mips_legitimate_address_p): Likewise.
844         (mips16_unextended_reference_p): Take the offset as an
845         "unsigned HOST_WIDE_INT" rather than an "rtx".  Simplify.
846         (mips_const_insns): Use IN_RANGE.
847         (mips_force_temporary): Remove an unnecessary copy_rtx.
848         (mips16_gp_pseudo_reg): Simplify.
849         (mips_split_symbol): Remove an unnecessary copy_rtx.
850         (mips_legitimize_tls_address): Only create registers if we need them.
851         (mips_legitimize_address): Use mips_split_plus.
852         (mips_move_integer): Swap DEST and TEMP arguments.  Rename local
853         variable COST to NUM_OPS.
854         (mips_legitimize_move): Use gen_lowpart.
855         (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
856         (m16_check_op): Use IN_RANGE.
857         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
858         (mips_split_doubleword_move): Pass booleans to mips_subword.
859         (mips_output_move): Store the mode in a local variable.
860         Explicitly assert that this function does not deal with
861         MFLO and MFHI.  Use SMALL_OPERAND_UNSIGNED.  Make order of
862         cases more consistent.
863         (mips_relational_operand_ok_p): Rename to...
864         (mips_int_order_operand_ok_p): ...this.
865         (mips_canonicalize_comparison): Rename to...
866         (mips_canonicalize_int_order_test): ...this.
867         (mips_emit_int_relational): Rename to...
868         (mips_emit_int_order_test): ...this.  Store the mode in a local
869         variable.
870         (mips_reverse_fp_cond_p): Rename to...
871         (mips_reversed_fp_cond): ...this.
872         (mips_emit_compare): Make the order of the statements more consistent.
873         (mips_emit_scc): Rename to...
874         (mips_expand_scc): ...this.
875         (gen_conditional_branch): Rename to...
876         (mips_expand_conditional_branch): ...this.
877         (gen_conditional_move): Rename to...
878         (mips_expand_conditional_move): ...this.  Build the condition
879         separately from the main pattern.
880         (mips_gen_conditional_trap): Rename to...
881         (mips_expand_conditional_trap): ...this and take an rtx code instead
882         of an operands array.  Simplify.
883         (init_cumulative_args): Rename to...
884         (mips_init_cumulative_args): ...this.  Use memset rather than a
885         copy from a zeroed static.  Use prototype_p and stdarg_p.
886         (mips_arg_info): Rename to...
887         (mips_get_arg_info): ...this and put the INFO argument first.
888         (function_arg): Rename to...
889         (mips_function_arg): ...this and use "rtx" instead of
890         "struct rtx_def *".  Only split structures into chunks if 
891         TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
892         a chunk-by-chunk basis.  Use SCALAR_FLOAT_TYPE_P instead of a
893         comparison with REAL_TYPE.  Rename local variable REG to REGNO
894         and make it unsigned.
895         (function_arg_advance): Rename to...
896         (mips_function_arg_advance): ...this.
897         (function_arg_boundary): Rename to...
898         (mips_function_arg_boundary): ...this.
899         (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
900         with MODE_INT.
901         (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
902         comparison with REAL_TYPE.
903         (mips_function_value): Remove the FUNC argument.  Rename local
904         variable UNSIGNEDP to UNSIGNED_P.
905         (mips_return_in_memory): Use IN_RANGE.
906         (mips_setup_incoming_varargs): Pass a boolean rather than an int
907         to FUNCTION_ARG_ADVANCE.
908         (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
909         to INDIRECT_P.  Remove a redundant mips_abi check.  Only calculate
910         SIZE and RSIZE if needed.
911         (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
912         rather than "int".
913         (build_mips16_function_stub): Rename to...
914         (mips16_build_function_stub): ...this.
915         (build_mips16_call_stub): Rename to...
916         (mips16_build_call_stub): ...this.  Make static, and return a
917         "bool" rather than an "int".  Rename the ARG_SIZE argument to
918         ARGS_SIZE.  Rename the local variable FPRET to FP_RET_P and give
919         it type "bool".  Use "jr" rather than "j".  Use XNEW.  Simplify.
920         (mips_load_call_address): Give the SIBCALL_P argument type "bool"
921         rather than "int".
922         (mips_expand_call): Likewise.  Assert that MIPS16 calls via stubs
923         are not sibling ones.
924         (mips_emit_fcc_reload): Rename to...
925         (mips_expand_fcc_reload): ...this.
926         (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
927         "HOST_WIDE_INT".
928         (mips_expand_unaligned_load): Rename to...
929         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
930         and BITPOS arguments type "HOST_WIDE_INT".  Remove redundant
931         SUBREG_BYTE check.
932         (mips_expand_unaligned_store): Rename to...
933         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
934         and BITPOS arguments type "HOST_WIDE_INT".
935         (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
936         and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
937         Use IN_RANGE.
938         (mips_init_split_addresses): Replace with...
939         (mips_split_addresses_p): ...this new function.
940         (mips_init_relocs): Check mips_split_addresses_p () rather than
941         mips_split_addresses.  Always initialize mips_split_p with booleans.
942         (print_operand_reloc): Rename to...
943         (mips_print_operand_reloc): ...this.  Use a gcc_assert rather than
944         a fatal_error.
945         (print_operand): Rename to...
946         (mips_print_operand): ...this.
947         (print_operand_address): Rename to...
948         (mips_print_operand_address): ...this.  Use GP_REG_FIRST.
949         (mips_in_small_data_p): Simplify.
950         (mips_output_ascii): Remove the PREFIX argument and "register"
951         keywords.  Use the STRING parameter directly and cast to
952         "unsigned char".
953         (mips16e_collect_argument_save_p): Use IN_RANGE.
954         (mips_function_has_gp_insn): Simplify.
955         (mips_set_return_address): Use BITSET_P.
956         (mips_restore_gp): Use a separate statement to pick the base
957         register.
958         (mips_output_function_prologue): Use a local FRAME variable.
959         (mips_save_reg): Pass booleans to mips_subword.
960         (mips_expand_prologue): Use a local FRAME variable.  Use
961         cprestore_size to detect when .cprestore is needed.
962         (mips_restore_reg): Use GP_REG_FIRST.
963         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
964         rather than "int".  Use local FRAME and REGNO variables.
965         (mips_can_use_return_insn): Return a "bool" rather than an "int".
966         (mips_secondary_reload_class): Give the IN_P argument type "bool"
967         rather than "int".
968         (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
969         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
970         (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
971         (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
972         (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
973         (builtin_description): Rename to...
974         (mips_builtin_description): ...this.
975         (mips_bdesc): Rename to...
976         (mips_ps_bdesc): ...this.
977         (sb1_bdesc): Rename to...
978         (mips_sb1_bdesc): ...this.
979         (dsp_bdesc): Rename to...
980         (mips_dsp_bdesc): ...this.
981         (dsp_32only_bdesc): Rename to...
982         (mips_dsp_32only_bdesc): ...this.
983         (bdesc_map): Rename to...
984         (mips_bdesc_map): ...this.
985         (bdesc_arrays): Rename to...
986         (mips_bdesc_arrays): ...this.
987         (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
988         Tweak error message.
989         (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
990         Rename local variables I and J to OPNO and ARGNO respectively.
991         Assert that the number of arguments is no more than the number of
992         input operands.
993         (mips_expand_builtin_compare): Use an array of arguments rather
994         than an array of operands.  Assert that the number of operands is
995         as expected.
996         (add_constant): Rename to...
997         (mips16_add_constant): ...this.  Use XNEW.
998         (dump_constants_1): Rename to...
999         (mips16_emit_constants_1): ...this.  Use ALL_SCALAR_FIXED_POINT_MODE_P.
1000         (dump_constants): Rename to...
1001         (mips16_emit_constants): ...this.
1002         (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
1003         (mips_set_mips16_mode): Don't call mips_init_split_addresses.
1004         Assign mips16_p to was_mips16_p.
1005         (mips_parse_cpu): Tweak warning message.
1006         (override_options): Rename to...
1007         (mips_override_options): ...this.  Move the mips_cost initialization
1008         out of the "shared with GAS" block.  Quote option names in error
1009         messages.
1010         (mips_conditional_register_usage): Make local variable REGNO unsigned.
1011         (mips_order_regs_for_local_alloc): Remove register keyword.
1012
1013 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1014
1015         * system.h (IN_RANGE): Cast each argument individually.
1016
1017 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1018
1019         * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
1020         MIPS16 code unless using o32 or o64.  
1021
1022 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1023
1024         * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
1025         for modes smaller than 4 bytes.
1026         * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
1027         FPR alternatives.
1028
1029 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1030
1031         * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
1032         * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
1033         (ASM_OUTPUT_ALIGNED_BSS): Delete.
1034         * config/mips/mips.c (mips_output_aligned_bss): Delete.
1035
1036 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1037
1038         * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
1039         sibling calls to "mips16" functions if the function satisfies
1040         const_call_insn_operand.
1041
1042 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1043
1044         * config/mips/mips.c (mips_va_start): Fix types in calls
1045         to build_int_cst.
1046
1047 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1048
1049         * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
1050         if ISA_HAS_FP4.
1051
1052 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1053
1054         * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
1055         * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
1056         instead of checking mips_isa.
1057
1058 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1059
1060         * doc/invoke.texi (-mpaired-single): Don't say that the option
1061         requires 64-bit code.
1062         * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
1063         * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
1064         (ISA_HAS_NMADD_NMSUB): Add a mode argument.  Return true for
1065         V2SF if ISA_MIPS32R2.
1066         (MODES_TIEABLE_P): Use mips_modes_tieable_p.
1067         * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
1068         to ISA_HAS_NMADD_NMSUB.
1069         (mips_split_doubleword_move): Handle V2SF.
1070         (mips_modes_tieable_p): New function.
1071         (override_options): Report a warning rather than an error when
1072         -mpaired-single is used on ISAs that don't support it; use
1073         ISA_HAS_PAIRED_SINGLE to check that case.
1074         * config/mips/mips.md (MOVE64): New mode iterator.  Replace DI
1075         and DF move splitters with a single MOVE64 splitter, thereby adding
1076         a V2SF splitter too.
1077         (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
1078         Add a TARGET_FLOAT64 condition to TF.  Add V2SF to the iterator.
1079         (HALFMODE): Add V2SF.
1080         (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
1081         (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
1082         (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
1083         (movv2sf_hardfloat_32bit): New pattern.
1084         (load_low<mode>, load_high<mode>, store_word<mode>): Remove
1085         TARGET_DOUBLE_FLOAT conditions.
1086
1087 2007-10-20  Jakub Jelinek  <jakub@redhat.com>
1088
1089         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
1090         saved CR2 offset to low 32 bits of regs->ccr rather than the whole
1091         64-bit register in 64-bit libgcc.
1092
1093 2007-10-20  Eric B. Weddington  <eweddington@cso.atmel.com>
1094
1095         * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
1096         * config/avr/avr.h (LINK_SPEC): Likewise.
1097         (CRT_BINUTILS_SPECS): Likewsie.
1098         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1099
1100 2007-10-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1101
1102         * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
1103         and -Wfatal-errors together.
1104         
1105 2007-10-20  Alan Modra  <amodra@bigpond.net.au>
1106
1107         PR target/33812
1108         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
1109         change for vrsave, ie restore after frame pop.
1110
1111 2007-10-19  David S. Miller  <davem@davemloft.net>
1112
1113         * config/sparc/niagara2.md: Fix copyright notice.
1114
1115 2007-10-19  Sebastian Pop  <sebastian.pop@amd.com>
1116
1117         PR tree-optimization/23820
1118         PR tree-optimization/24309
1119         PR tree-optimization/33766
1120         * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
1121         * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
1122         * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
1123         * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
1124         * tree-loop-linear.c (perfect_loop_nest_depth): New.
1125         (linear_transform_loops): Use perfect_loop_nest_depth.
1126         * lambda-code.c (perfect_nest_p): Outer loops in perfect nests 
1127         should have a single condition: their exit.
1128
1129 2007-10-19  Richard Guenther  <rguenther@suse.de>
1130
1131         PR middle-end/33816
1132         PR middle-end/32921
1133         * stor-layout.c (layout_type): Assert that aggregates do not
1134         have their alias sets set.
1135         * alias.c (get_alias_set): Return alias set zero for incomplete
1136         types, return the alias set of the element for incomplete array
1137         types, but do not remember these.
1138
1139 2007-10-19  Richard Guenther  <rguenther@suse.de>
1140
1141         Revert
1142         2007-10-19  Richard Guenther  <rguenther@suse.de>
1143
1144         PR middle-end/32921
1145         * tree.c (build_array_type): Do not re-layout unbound array
1146         types.
1147
1148 2007-10-19  Richard Guenther  <rguenther@suse.de>
1149
1150         PR middle-end/32921
1151         * tree.c (build_array_type): Do not re-layout unbound array
1152         types.
1153
1154 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1155
1156         * config/mips/mips.c (mips_canonicalize_comparison):  Check
1157         mips_relational_operand_ok_p before trying to rewrite the test.
1158         Only calculate PLUS_ONE if needed.
1159         (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
1160         here.
1161
1162 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1163
1164         * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
1165         calculation.
1166
1167 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1168
1169         * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
1170         the call uses the incoming value of $2.
1171
1172 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1173
1174         * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
1175         rather then gen_rtx_MEM.
1176         (mips_setup_incoming_varargs): Use gen_frame_mem rather than
1177         gen_rtx_MEM.
1178         (mips_set_return_address): Likewise.
1179         (mips_restore_gp): Likewise.
1180
1181 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1182
1183         * config/mips/mips.c (gpr_mode): Delete.
1184         (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
1185         instead of gpr_mode.
1186         (mips_for_each_saved_reg): Likewise.
1187         (mips_expand_prologue, mips_expand_epilogue): Likewise.
1188         (override_options): Don't initialize gpr_mode.
1189         * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
1190
1191 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1192
1193         * config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
1194         case last.
1195         (mips_class_max_nregs): Calculate the smallest consituent register
1196         size and use that to determine an upper bound on the number of
1197         registers.
1198
1199 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1200
1201         * config/mips/mips.c (mips16_copy_fpr_return_value): New function,
1202         split out from...
1203         (mips_expand_epilogue): ...here.
1204         (mips_mdebug_abi_name): New function, split out from...
1205         (mips_file_start): ...here.
1206         (mips_hard_regno_mode_ok_p): New function, split out from...
1207         (override_options): ...here.
1208         (mips_expand_builtin_1): New function, split out from...
1209         (mips_expand_buitin): ...here.  Abort if we don't recognize
1210         the function.
1211
1212 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1213
1214         * config/mips/mips.c (build_mips16_function_stub): Load the
1215         target address into $1 before transfering the arguments.
1216         Don't use ".set noreorder".
1217         (build_mips16_call_stub): Likewise.
1218
1219 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1220
1221         * config/mips/mips.c (mips_output_32bit_xfer): New function.
1222         (mips_output_64bit_xfer): Likewise.
1223         (mips16_fp_args): Rename to...
1224         (mips_output_args_xfer): ...this and replace the FROM_FP_P argument
1225         with a DIRECTION argument.  Use mips_output_32bit_xfer and
1226         mips_output_64bit_xfer.
1227         (build_mips16_function_stub): Update accordingly.
1228         (mips16_fpret_double): Delete.
1229         (build_mips16_call_stub): Update after above changes.
1230         Use mips_output_32bit_xfer.  Use mips_output_64bit_xfer instead
1231         of mips16_fpret_double.  Use GP_REG_RETURN.
1232
1233 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1234
1235         * config/mips/mips.c (mips16_fp_args): Remove the FILE argument and
1236         use asm_out_file instead.
1237         (build_mips16_function_stub): Likewise.
1238         (build_mips16_call_stub, mips_output_function_prologue): Update
1239         accordingly.
1240
1241 2007-10-18  David S. Miller  <davem@davemloft.net>
1242
1243         Add Niagara-2 support.
1244         * doc/invoke.texi: Document -m{cpu,tune}=niagara2.
1245         * config.gcc: Add niagara2 to cpu and tune lists for sparc.
1246         * config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
1247         (include): Add inclusion of niagara2.md
1248         * config/sparc/sparc.c (niagara2_costs): New.
1249         (sparc_override_options): Add niagara2 entry to cpu_default[]
1250         and cpu_table[].  Set align_functions to 32 on Niagara2.  Use
1251         niagara2_costs when PROCESSOR_NIAGARA2.  Handle Niagara2 for
1252         PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
1253         (sparc_initialize_trampoline): Handle niagara2 like niagara.
1254         (sparc64_initialize_trampoline): Likewise.
1255         (sparc_use_sched_lookahead): Likewise.
1256         (sparc_issue_rate): Likewise.
1257         * config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
1258         mcpu=niagara2
1259         * config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
1260         ({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
1261         TARGET_CPU_niagara2.
1262         (PROCESSOR_NIAGARA2): New.
1263         (REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
1264         (BRANCH_COST): Likewise.
1265         * config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
1266         * config/sparc/sol2.h: Likewise.
1267         * config/sparc/niagara2.md: New file.
1268
1269 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1270
1271         * config/mips/mips.c (mips_frame_info): Remove gp_reg_size and
1272         and fp_reg_size.
1273         (mips_compute_frame_info): Remove associated code.
1274         (mips16e_build_save_restore): Check num_fp instead of fp_reg_size.
1275
1276 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1277
1278         * config/mips/mips-protos.h (compute_frame_size): Delete.
1279         * config/mips/mips.h: Update comments.
1280         * config/mips/mips.c (mips_frame_info): Remove initialized.
1281         (compute_frame_size): Rename to...
1282         (mips_compute_frame_info): ...this and make static.  Remove the
1283         SIZE argument and return no value.  Remove the setting of initialized.
1284         Update rest of file accordingly.
1285         (mips_set_return_address): Don't call compute_frame_size.
1286         (mips_can_use_return_insn): Don't check df_regs_ever_live_p (31).
1287         Don't call compute_frame_size.
1288
1289 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1290
1291         * config/mips/mips-protos.h (mips_frame_pointer_required): Declare.
1292         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Use
1293         mips_hard_frame_pointer_required.
1294         (CAN_ELIMINATE): Rely on FRAME_POINTER_REQUIRED to check for
1295         large MIPS16 frames.
1296         * config/mips/mips.c (mips_frame_pointer_required): New function.
1297
1298 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1299
1300         * config/mips/mips.c (mips_frame_info): Add arg_pointer_offset
1301         and hard_frame_pointer_offset.
1302         (mips_debugger_offset): Use hard_frame_pointer_offset.
1303         (mips16e_collect_argument_save_p): Likewise.
1304         (compute_frame_size): Initialize arg_pointer_offset and
1305         hard_frame_pointer_offset.
1306         (mips_initial_elimination_offset): Use them.
1307         (mips_output_function_prologue): Use hard_frame_pointer_offset.
1308         (mips_expand_prologue, mips_expand_epilogue): Likewise.
1309
1310 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1311
1312         * config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
1313         profiling code.
1314         * config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
1315         "unsigned int" rather than "int" and put them with the other
1316         register-related fields.  Put expanded comments above fields
1317         rather than to their right.
1318         (mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
1319         with a NUM_REGS_PTR argument.
1320         (mips16e_save_restore_pattern_p): Update accordingly.
1321         (compute_frame_size): Clarify frame diagram.  Rewrite.
1322
1323 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1324
1325         * config/mips/mips-ftypes.def: New file.
1326         * config/mips/mips.c (MIPS_FTYPE_NAME1, MIPS_FTYPE_NAME2)
1327         (MIPS_FTYPE_NAME3, MIPS_FTYPE_NAME4): New macros.
1328         (mips_function_type): Redefine using mips-ftypes.def.
1329         (dsp_bdesc): Use POINTER rather than PTR in the MIPS_*_FTYPE_* names.
1330         (mips_builtin_vector_type): New function.
1331         (MIPS_ATYPE_VOID, MIPS_ATYPE_INT, MIPS_ATYPE_POINTER, MIPS_ATYPE_SI)
1332         (MIPS_ATYPE_USI, MIPS_ATYPE_DI, MIPS_ATYPE_SF, MIPS_ATYPE_DF)
1333         (MIPS_ATYPE_V2SF, MIPS_ATYPE_V2HI, MIPS_ATYPE_V4QI, MIPS_FTYPE_ATYPES1)
1334         (MIPS_FTYPE_ATYPES2, MIPS_FTYPE_ATYPES3, MIPS_FTYPE_ATYPES4): New
1335         macros.
1336         (mips_build_function_type): New function.
1337         (mips_init_builtins): Use it to create types lazily.
1338
1339 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1340
1341         * config/mips/mips.h (set_volatile): Delete.
1342         * config/mips/mips.c (set_volatile): Delete.
1343         (mips_print_operand_punctuation): New function, split out from
1344         print_operand.  Remove '%{', '%}', '%~', '%&' and '%!'.
1345         Use the same character ordering in the code and the comments.
1346         Use a recursive call to handle '*'.  Abort on unknown characters.
1347         (mips_init_print_operand_punct): New function, split out from
1348         override_options.
1349         (mips_print_int_branch_condition): New function, split out from
1350         print_operand.  Use GET_RTX_NAME.  Use output_operand_lossage
1351         to report unexpected codes.
1352         (mips_print_float_branch_condition): New function, split out from
1353         print_operand.  Use output_operand_lossage to report unexpected codes.
1354         (print_operand): Rework to use a case statement.  Use the
1355         same letter ordering in the code and the comments.  Use
1356         output_operand_lossage to report unexpected codes and
1357         reverse_condition to handle inverted branch conditions.
1358         (override_options): Use mips_init_print_operand_punct.
1359
1360 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1361
1362         * config/mips/mips.h: Move variable declarations to end of file and
1363         enclose them all in #ifndef USED_FOR_TARGET.
1364         * config/mips/mips.c: Reorder functions into more logical groups,
1365         and so that callees appear before callers.  Put the targetm
1366         initializer at the end of the file.  Remove forward static
1367         declarations where possible.
1368         (mips_init_builtins): Add "static" to definition.
1369         (mips_expand_builtin, mips_mode_rep_extended): Likewise.
1370
1371 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1372
1373         * config/mips/mips.c (TARGET_MIN_ANCHOR_OFFSET): Delete.
1374         (TARGET_MAX_ANCHOR_OFFSET): Delete.
1375         (mips_cannot_force_const_mem): Don't check TARGET_HAVE_TLS.
1376         (mips_set_mips16_mode): Initialize min_anchor_offset and
1377         max_anchor_offset directly to constants.
1378
1379 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1380
1381         * config/mips/mips.c: Delete trailing whitespace.
1382
1383 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1384
1385         * config/mips/mips.c (mips_expand_call): Use FAKE_CALL_REGNO.
1386         (mips_avoid_hazard): Allow multiple sets for HAZARD_DELAY,
1387         and pick the first.
1388         * config/mips/mips.md (load_call<mode>): Don't make the unspec
1389         depend on FAKE_CALL_REGNO.  Set FAKE_CALL_REGNO.
1390
1391 2007-10-18  David Daney  <ddaney@avtrex.com>
1392
1393         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use new
1394         reg_offset variable to calculate register locations.
1395
1396 2007-10-18  Richard Guenther  <rguenther@suse.de>
1397
1398         * tree-ssa.c (uid_ssaname_map_eq): New function.
1399         (uid_ssaname_map_has): Likewise.
1400         (init_tree_ssa): Allocate default_defs as uid_ssaname map.
1401         * tree-flow.h (struct gimple_df): Make default_defs a
1402         uid_ssaname map.
1403         * tree-dfa.c (gimple_default_def): Deal with it.
1404         (set_default_def): Likewise.
1405
1406 2007-10-18  Richard Guenther  <rguenther@suse.de>
1407
1408         * tree-flow.h (struct gimple_df): Make referenced_vars
1409         a uid_decl_map.
1410         (uid_decl_map_eq): Declare.
1411         (uid_decl_map_hash): Likewise.
1412         * tree-ssa.c (uid_decl_map_eq): New function.
1413         (uid_decl_map_hash): Likewise.
1414         (init_tree_ssa): Make referenced_vars a uid_decl_map.
1415         * tree-flow-inline.h (first_referenced_var): Deal with
1416         the referenced_vars representation change.
1417         (next_referenced_var): Likewise.
1418         * tree-dfa.c (referenced_var_lookup): Likewise.
1419         (referenced_var_check_and_insert): Likewise.
1420         (remove_referenced_var): Likewise.
1421
1422 2007-10-18  Daniel Jacobowitz  <dan@codesourcery.com>
1423
1424         * config/mips/mips.c (mips_dwarf_register_span): New.
1425         (TARGET_DWARF_REGISTER_SPAN): Define.
1426
1427 2007-10-18  Chen Liqin  <liqin@sunnorth.com.cn>
1428
1429         * config.gcc : update score-*-elf(extra_objs).
1430         * config/score/mac.md : Remove.
1431         * config/score/misc.md : Remove.
1432         * config/score/score7.md : Remove.
1433         * config/score/score-mdaux.h : Remove.
1434         * config/score/score-mdaux.c : Remove.
1435         * config/score/score-version.h : Remove.
1436         * config/score/score-generic.md : New.
1437         * config/score/score3.h : New.
1438         * config/score/score3.c : New.
1439         * config/score/score7.h : New.
1440         * config/score/score7.c : New.
1441         * config/score/mul-div.S : add flush_cache score3 support.
1442         * config/score/elf.h : Fix some typos.
1443         * config/score/score.md : merge score3 and score7 pattern.
1444         * config/score/score.c : use to seperate which target it used.
1445         * config/score/score.h : use to seperate the target macro.
1446         * config/score/score.opt : remove -mmac option , add -mscore3,
1447         -mscore3d and -march OPTION support.
1448  
1449 2007-10-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1450
1451         * cfgexpand.c (expand_stack_vars): Add checking to make sure
1452         that the offset of a variable is not greater than the size
1453         of the paritition.
1454
1455 2007-10-17  Anatoly Sokolov <aesok@post.ru>
1456
1457         * config/avr/avr.c (avr_mcu_types): Add support for atmega48p, 
1458         atmega88p, atmega168p and atmega328p devices.
1459         * config/avr/avr.h (LINK_SPEC): (Ditto.).
1460         (CRT_BINUTILS_SPECS): (Ditto.).
1461         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1462
1463 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1464
1465         * sched-ebb.c: Surround code with '#ifdef INSN_SCHEDULING'.
1466         * ddg.c: Ditto.
1467         * sched-deps.c: Ditto.  Remove nested #ifdef's INSN_SCHEDULING.
1468         * sched-int.h: Surround declarations with '#ifdef INSN_SCHEDULING'.
1469         (print_insn): Move declaration to ...
1470         * rtl.h (print_insn): ... here.
1471
1472 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1473
1474         * config/m68k/m68k.h (m68k_sched_cpu, m68k_sched_attr_opx_type,
1475         m68k_sched_attr_opy_type, m68k_sched_attr_size, m68k_sched_attr_op_mem,
1476         m68k_sched_branch_type): Move declarations to ...
1477         * config/m68/m68k-protos.h: ... here.
1478
1479 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1480
1481         * genattrtab.c (main): Rearrange output of insn-attrtab.c headers.
1482
1483 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
1484
1485         * config/avr/avr.c (avr_mcu_types): Add attiny48.
1486         * config/avr/avr.h (LINK_SPEC): Likewise.
1487         (CRT_BINUTILS_SPECS): Likewsie.
1488         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1489
1490 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
1491
1492         * config/avr/avr.c (avr_mcu_types): Add attiny43u.
1493         * config/avr/avr.h (CRT_BINUTILS_SPECS): Likewsie.
1494         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1495
1496 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
1497
1498         PR middle-end/33794
1499         * reg-stack.c (move_for_stack_reg): Swap input argument of
1500         UNSPEC_TAN insn to the top of the stack.
1501
1502 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
1503
1504         PR target/32961
1505         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLLWI128,
1506         IX86_BUILTIN_PSLLDI128, BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128,
1507         IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
1508         IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
1509         immediate shift value.
1510         * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
1511         _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
1512         _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
1513         Remove macros for !__OPTIMIZE__ case.
1514
1515 2007-10-17  Daniel Berlin  <dberlin@dberlin.org>
1516
1517         * tree-ssa-structalias.c (rewrite_constraints): Don't test for
1518         directness anymore.
1519         (perform_var_substitution): Only DFS from real nodes. Don't test
1520         for directness.
1521         (unite_pointer_equivalences): Fix broken test.
1522
1523 2007-10-17  Alan Modra  <amodra@bigpond.net.au>
1524
1525         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Correct
1526         altivec sp_offset.  Rearrange sp_offset assignments to
1527         correspond to stack adjustments.  Use frame_reg_rtx for
1528         SPE register restores.  Correct SPE stack adjustment.
1529
1530 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1531
1532         * builtins.c (gimplify_va_arg_expr): Use inform for help message.
1533         * toplev.c (check_global_declaration_1): Use appropriate warning
1534         option instead of unnamed warning.
1535         * stor-layout.c (layout_decl): Likewise.
1536         * c-typeck.c (build_conditional_expr): Likewise.
1537         (build_compound_expr): Fix wrong comment.
1538         (build_binary_op): Use appropriate warning option instead of
1539         unnamed warning.
1540         * cfgexpand.c (tree_expand_cfg): Likewise.
1541         * tree-optimize.c (tree_rest_of_compilation): Likewise.
1542         * tree-cfg.c (remove_useless_stmts_warn_notreached): Likewise.
1543         (execute_warn_function_return): Likewise.
1544         * stmt.c (warn_if_unused_value): Likewise.
1545
1546 2007-10-16  Eric B. Weddington  <eweddington@cso.atmel.com>
1547
1548         * config/avr/avr.c (avr_mcu_types): Add at90pwm216, at90pwm316.
1549         * config/avr/avr.h (LINK_SPEC): Likewise and remove regex for
1550         similar devices.
1551         (CRT_BINUTILS_SPECS): Likewsie.
1552         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1553
1554 2007-10-16  Amruth Laxman  <amruth.laxman@nsn.com>
1555
1556         PR target/33594
1557         * config/sparc/sparc.h (LOCAL_ALIGNMENT): Define.
1558
1559 2007-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
1560
1561         * dce.c (init_dce): Only initialize the obstacks for the fast pass.
1562         (fini_dce): Only release them for the fast pass.
1563         (end_ud_dce): Delete.
1564         (rest_of_handle_ud_dce): Do not modify df_in_progress.
1565         Call fini_dce instead of end_ud_dce.
1566         (rest_of_handle_fast_dce): Do not modify df_in_progress.
1567         (run_fast_df_dce): Reset df_in_progress to false on exit.
1568
1569 2007-10-16  Paolo Bonzini  <bonzini@gnu.org>
1570             Maxim Kuvyrkov  <maxim@codesourcery.com>
1571
1572         * target.h (unspec_may_trap_p): New target hook.
1573         * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro.
1574         * targhooks.c (default_unspec_may_trap_p): Default implementation of
1575         the hook.
1576         * targhooks.h (default_unspec_may_trap_p): Declare it.
1577         * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook.
1578         * rtlanal.c (may_trap_p_1): Use new hook.  Make global.
1579         * rtl.h (may_trap_p_1): Declare.
1580         
1581         * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to
1582         override default hook implementation.
1583         (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the
1584         hook.
1585
1586 2007-10-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1587
1588         * doc/invoke.texi (Wextra): Move it just after Wall, list the
1589         options enabled by Wextra and mention Wuninitialized.
1590         
1591 2007-10-15  Nigel Stephens  <nigel@mips.com>
1592
1593         * config/mips/mips.h (LOCAL_ALIGNMENT): Define.
1594
1595 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
1596
1597         PR tree-optimization/33136
1598         * opts.c (decode_options): Don't enable flag_ipa_type_escape.
1599
1600 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
1601
1602         PR tree-optimization/33735
1603         PR tree-optimization/33572
1604         * tree-inline.c (update_ssa_across_abnormal_edges): Revert
1605         2007-10-09's change.
1606         * except.c (duplicate_eh_regions): Don't look for prev_try
1607         beyond ERT_ALLOWED_EXCEPTIONS with an empty list.
1608
1609 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
1610
1611         PR middle-end/33706
1612         * tree-inline.c (copy_bb): Use bsi_replace to replace a
1613         __builtin_va_arg_pack-containing call stmt.
1614
1615 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
1616
1617         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
1618         program flag.
1619
1620 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
1621
1622         PR tree-optimization/33619
1623         * tree-ssa-ter.c (is_replaceable_p): Return false for all
1624         calls.
1625
1626 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
1627
1628         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
1629
1630 2007-10-15  Richard Guenther  <rguenther@suse.de>
1631
1632         * fold-const.c (extract_array_ref): Remove.
1633         (fold_comparison): Handle POINTER_PLUS_EXPR with the
1634         generic address expression comparison folding.  Remove
1635         the folding that used extract_array_ref.
1636
1637 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
1638
1639         PR target/33133
1640         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
1641         speculation type of insn can be changed before trying to do that.
1642
1643 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
1644
1645         * dse.c (struct insn_info): Add 'frame_read' field.
1646         (scan_insn): For the call to a const function, set frame_read if
1647         reload has been run.
1648         If the insn reads the frame, kill the frame related stores.
1649         (scan_reads_nospill): Likewise.
1650
1651 2007-10-14  Jason Merrill  <jason@redhat.com>
1652
1653         * tree-eh.c (optimize_double_finally): Don't assume that the
1654         cleanup we're duplicating is only one statement.
1655
1656 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
1657
1658         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
1659         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
1660         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
1661         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
1662         tree-vect-transform.c: Fix comment typos.
1663         * doc/extend.texi: Fix a typo.
1664
1665         * c-common.h: Remove the prototype for c_expand_body.
1666         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
1667         * tree.h: Remove the prototype for fold_build_call_expr.
1668
1669         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
1670         Remove.
1671         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
1672
1673 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
1674
1675         * config/rs6000/aix53.h: New file.
1676         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
1677         (TARGET_ALTIVEC_ABI): Same.
1678         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
1679         (TARGET_ALTIVEC_ABI): Delete.
1680         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
1681         stanza defaulting to aix5.3.
1682
1683 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
1684
1685         * config/i386/i386.md (SI_REG, DI_REG): New constants.
1686         (strmov): Use defined constants.
1687         (cmpstrnsi): Likewise.
1688         * config/i386/i386.c (decide_alg): Use defined constants.
1689         (ix86_expand_strlen): Likewise.
1690
1691 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
1692
1693         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
1694         * var-tracking.c (micro_operation_def): Update comment on u.loc.
1695         (mode_for_reg_attrs, var_lowpart): New functions.
1696         (add_uses): Consider recording a lowpart of LOC for MO_USE.
1697         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
1698         or copy is known, set LOC to the SET that performs the set, instead
1699         of the destination.
1700         (find_src_status, find_src_set_src): Remove LOC parameter.
1701         Replace INSN with the source value.
1702         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
1703         handling MO_SET and MO_COPY.  Update the calls to find_src_status
1704         and find_src_set_src.
1705
1706 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
1707
1708         PR 11001
1709         * config/i386/i386.md (strmov): Check for esi and edi usage.
1710         * config/i386/i386.c (decide_alg): Check whether we can use a
1711         rep prefix and adjust algorithm choice accordingly.
1712         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
1713
1714 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1715
1716         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
1717
1718 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
1719
1720         * global.c (build_insn_chain): Formatting fixes.
1721
1722 2007-10-12  Richard Guenther <rguenther@suse.de>
1723
1724         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
1725         combining both operands require either both have single uses
1726         or combining to a constant.
1727
1728 2007-10-12  Richard Guenther  <rguenther@suse.de>
1729
1730         PR middle-end/26198
1731         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
1732         a rhs with side-effects or which is a load.
1733         (forward_propagate_into_cond): Also try combining both operands.
1734
1735 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
1736
1737         PR tree-optimization/33742
1738         * tree-vect-transform.c (vectorizable_operation): Return false
1739         if get_vectype_for_scalar_type for scalar_dest can't be determined.
1740         (vectorizable_call): Same for rhs_type and lhs_type.
1741
1742 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
1743
1744         PR tree-optimization/33645
1745         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
1746         pass it to walk_tree.
1747         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
1748         When calling set_is_used on a VAR_DECL, if data is not NULL and
1749         its DECL_UID is in the bitmap, call mark_all_vars_used on its
1750         DECL_INITIAL after clearing the bit in bitmap.
1751         (remove_unused_locals): Adjust mark_all_vars_used callers.
1752         Instead of removing unused global vars from unexpanded_var_list
1753         immediately record them in bitmap, call mark_all_vars_used on
1754         all used global vars from unexpanded_var_list and only purge
1755         global vars that weren't found used even during that step.
1756  
1757 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1758
1759         * gthr-posix.h (__gthread_active_init): Create detached instead of
1760         joinable thread when testing whether threads are active on hppa-hpux.
1761         * gthr-posix95.h (__gthread_active_init): Likewise.
1762
1763 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1764
1765         PR middle-end/33676
1766         * global.c (build_insn_chain): Include insn that occur between
1767         basic blocks.
1768         
1769 2007-10-11  Tom Tromey  <tromey@redhat.com>
1770
1771         * gengtype-yacc.y: Delete.
1772
1773 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
1774
1775         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
1776         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
1777         function_value_32, function_value_64, function_value_ms_64,
1778         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
1779         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
1780         Use new constants.
1781
1782 2007-10-11  Richard Guenther  <rguenther@suse.de>
1783
1784         * gcse.c (hash_scan_set): If the next nonnote insn is in
1785         a different basic block insert the set.
1786
1787 2007-10-11  Richard Guenther  <rguenther@suse.de>
1788
1789         PR middle-end/33724
1790         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
1791         (verify_gimple_expr): Use it to verify pointer-to types for
1792         ADDR_EXPRs.
1793
1794 2007-10-11  Richard Guenther  <rguenther@suse.de>
1795
1796         PR c/33726
1797         * c-typeck.c (build_array_ref): Do not strip qualifiers from
1798         the array element type.
1799
1800 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
1801
1802         PR rtl-optimization/33638
1803         * dse.c (struct insn_info): Remove 'stack_read' field,
1804         add 'stack_pointer_based' field.
1805         (record_store): For a store with non-constant base, record
1806         whether it is stack pointer based.
1807         (scan_insn): For the call to a const function, remove stack
1808         pointer based stores from the list of local active stores.
1809         (scan_reads_nospill): Delete code dealing with const functions.
1810
1811 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
1812
1813         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
1814         to HOST_WIDE_INT.
1815         (conflict_p, set_conflict, set_conflicts): Likewise.
1816         * global.c (global_alloc): Likewise.
1817         * ra.h: Update prototypes.
1818
1819 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
1820
1821         * opth-gen.awk: Fixed generation of comment stating the origin
1822           of options.h
1823
1824 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
1825
1826         Revert:
1827         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
1828         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
1829         and '%}', respectively.
1830
1831         Revert:
1832         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
1833         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
1834         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
1835         and '}'.
1836         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
1837         meant to be output.
1838
1839         Revert:
1840         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
1841         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
1842         syntax for ASSEMBLER_DIALECT.
1843         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
1844
1845 2007-10-10  Revital Eres  <eres@il.ibm.com>
1846
1847         * modulo-sched.c (check_nodes_order): Dump the final order of
1848         the nodes.
1849         (get_sched_window): Add dump info.
1850         (calculate_order_params): Dump order params of the nodes.
1851
1852 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
1853
1854         PR middle-end/33669
1855         * ra-conflict.c (record_one_conflict_between_regnos, 
1856         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
1857         (global_conflicts): Enhanced incorrect check.
1858         
1859 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
1860
1861         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
1862         if flag_exceptions is not set.
1863         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
1864         assemble_name rather than incorrectly emulating it.
1865
1866         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
1867         friends are removed from G++.
1868
1869 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1870
1871         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
1872         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
1873         enabling them is redundant. Don't check two times for
1874         c_dialect_cxx.
1875         
1876 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
1877
1878         * ra-conflict.c (record_one_conflict_between_regnos): Revert
1879         the last change.
1880         (set_conflicts_for_earlyclobber): Likewise.
1881         (global_conflicts): Likewise.
1882
1883 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
1884
1885         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
1886         and '%}', respectively.
1887
1888 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
1889
1890         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
1891         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
1892         and '}'.
1893         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
1894         meant to be output.
1895
1896 2007-10-09  Richard Guenther  <rguenther@suse.de>
1897
1898         PR middle-end/33692
1899         * gimplify.c (canonicalize_component_ref): Honor qualifiers
1900         of referenced structure and component.
1901
1902 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
1903
1904         PR middle-end/33669
1905         * ra-conflict.c (record_one_conflict_between_regnos,
1906         set_conflicts_for_earlyclobber, global_conflicts): Improved
1907         logging.
1908         (global_conflicts): Removed incorrect check.
1909
1910 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
1911
1912         PR tree-optimization/33615
1913         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
1914         if the statement might throw.  Fix formatting.
1915
1916 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
1917
1918         PR tree-optimization/33615
1919         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
1920         if the rhs might throw.
1921
1922 2007-10-09  Jan Hubicka  <jh@suse.cz>
1923
1924         * invoke.texi (align-threshold, align-loop-iterations): Document.
1925         * final.c: Include cfgloop.h, params.h
1926         (compute_alignments): Dump decisions and compare them with loop
1927         structure; honor given parameters.
1928         (pass_compute_alignments): New dump file.
1929         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
1930         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
1931
1932 2007-10-09  James E. Wilson  <wilson@specifix.com>
1933
1934         PR tree-optimization/33655
1935         PR middle-end/22156
1936         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
1937         convert it to bitsizetype before size_binop call.
1938
1939 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
1940
1941         PR tree-optimization/33572
1942         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
1943         the absence of a corresponding edge from the exit block.
1944
1945 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
1946
1947         PR middle-end/22156
1948         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
1949         bit-field layout.
1950         (sra_build_assignment): Likewise.  Set up mask depending on
1951         precision, not type.
1952         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
1953         computing bit masks.
1954         (sra_build_elt_assignment): Don't view-convert from signed to
1955         unsigned.
1956         (sra_explode_bitfield_assignment): Use bit-field type if
1957         possible.  Use BYTES_BIG_ENDIAN.
1958
1959 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
1960
1961         PR middle-end/22156
1962         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
1963         the original stmt can throw.
1964         (sra_build_bf_assignment): Fix type mismatch when applying negated
1965         mask.
1966
1967 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
1968
1969         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
1970         '#pragma mark' to be executed at preprocessing time.
1971
1972 2007-10-08  Ollie Wild  <aaw@google.com>
1973
1974         * varasm.c (compare_constant): Removed call to
1975         lang_hooks.expand_constant.
1976         (copy_constants): Removed call to lang_hooks.expand_constant.
1977         (compute_reloc_for_constant): Removed call to
1978         lang_hooks.expand_constant.
1979         (output_addressed_constants): Removed call to
1980         lang_hooks.expand_constant.
1981         (constructor_static_from_elts_p): Removed call to
1982         lang_hooks.expand_constant.
1983         (output_constant): Removed calls to lang_hooks.expand_constant.
1984         * langhooks.h (struct lang_hooks): Removed field expand_constant.
1985         * langhooks-def.h (lhd_return_tree): Removed.
1986         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1987         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
1988         * langhooks.c (lhd_return_tree): Removed.
1989
1990 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
1991
1992         * combine.c (setup_incoming_promotions): Ensure that
1993         arguments that have not undergone mode promotions do not
1994         incorrectly get marked as being sign- or zero-extended.
1995
1996 2007-10-08  Richard Guenther  <rguenther@suse.de>
1997
1998         PR middle-end/33693
1999         PR middle-end/33695
2000         PR middle-end/33697
2001         * fold-const.c (fold_binary): Use correct types in folding
2002         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
2003         and building of RROTATE_EXPR.
2004
2005 2007-10-08  Richard Guenther  <rguenther@suse.de>
2006
2007         PR middle-end/33691
2008         PR middle-end/33694
2009         PR middle-end/33696
2010         * fold-const.c (fold_binary): Use the correct types when
2011         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
2012         (fold_binary): Use the correct types when folding
2013         (-A) - B to (-B) - A.
2014         (fold_unary): Use the correct types when folding ~(X).
2015
2016 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2017
2018         * doc/invoke.texi (Wall): fix formatting issues.
2019         
2020 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
2021
2022         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
2023         truncated shift counts.
2024
2025 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
2026
2027         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
2028         syntax for ASSEMBLER_DIALECT.
2029         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
2030
2031 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
2032             Nathan Froyd  <froydnj@codesourcery.com>
2033
2034         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
2035         when determining whether to record INCOMING_RETURN_ADDR_RTX.
2036
2037 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
2038
2039         Revert:
2040         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
2041
2042         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
2043         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
2044         the function, temporarily point the debug interface to the null one.
2045
2046 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
2047
2048         PR tree-optimization/33655
2049         PR middle-end/22156
2050         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
2051         elements.
2052
2053 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
2054
2055         PR tree-optimization/33572
2056         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
2057         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
2058         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
2059         return PHI node.
2060         (copy_edges_for_bb): Handle nonlocal label edges.
2061         (make_nonlocal_label_edges): Deleted.
2062         (optimize_inline_calls): Don't call it.
2063
2064 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
2065
2066         * gthr-single.h: Revert last change.
2067
2068 2007-10-05  Michael Matz  <matz@suse.de>
2069
2070         PR middle-end/33667
2071         * lower-subreg.c (decompose_multiword_subregs): Use
2072         validate_unshare_change().
2073
2074 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
2075
2076         * ra-conflict.c: Include "sparseset.h".
2077         (conflicts): Change to HOST_WIDEST_FAST_INT.
2078         (allocnos_live): Redefine variable as a sparseset.
2079         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE):
2080         Delete macros.
2081         (allocno_row_words): Removed global variable.
2082         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
2083         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
2084         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
2085         (record_one_conflict_between_regnos): Cache allocno values and reuse.
2086         Use set_conflict_p.
2087         (record_one_conflict): Update uses of allocnos_live to use
2088         the sparseset routines.  Use set_conflicts_p.
2089         (mark_reg_store): Likewise.
2090         (set_reg_in_live): Likewise.
2091         (global_conflicts): Update uses of allocnos_live.
2092         Use the new adjacency list to visit an allocno's neighbors
2093         rather than iterating over all possible allocnos.
2094         Call set_conflicts_p to setup conflicts rather than adding
2095         them manually.
2096         * global.c: Comments updated.  
2097         (CONFLICTP): Delete define.
2098         (regno_compare): New function.  Add prototype.
2099         (global_alloc): Sort the allocno to regno mapping according to
2100         which basic blocks the regnos are referenced in.  Modify the
2101         conflict bit matrix to a compressed triangular bitmatrix.
2102         Only allocate the conflict bit matrix and adjacency lists if
2103         we are actually going to allocate something.
2104         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
2105         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
2106         allocno's neighbors rather than iterating over all possible allocnos.
2107         (mirror_conflicts): Removed function.
2108         (dump_conflicts): Iterate over regnos rather than allocnos so
2109         that all dump output will be sorted by regno number.
2110         Use the FOR_EACH_CONFLICT macro.
2111         * ra.h: Comments updated.
2112         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
2113         (partial_bitnum, max_bitnum, adjacency, adjacency_pool):
2114         Add prototypes.
2115         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
2116         (adjacency_list_d, adjacency_iterator_d): New types.
2117         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
2118         adjacency_iter_next, regno_basic_block): New static inline functions.
2119         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
2120         (conflict_p): Add function prototype.
2121         * sparseset.h, sparseset.c: New files.
2122         * Makefile.in (OBJS-common): Add sparseset.o.
2123         (sparseset.o): New rule.
2124
2125 2007-10-05  Richard Guenther  <rguenther@suse.de>
2126
2127         PR middle-end/33666
2128         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
2129         to (long long)ptr.
2130
2131 2007-10-05  Michael Matz  <matz@suse.de>
2132
2133         PR inline-asm/33600
2134         * function.c (match_asm_constraints_1): Check for input
2135         being used in the outputs.
2136
2137 2007-10-05  Richard Guenther  <rguenther@suse.de>
2138
2139         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
2140
2141 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
2142
2143         PR target/33635
2144         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
2145         subset checks.  Make the cost of FPR -> FPR moves depend on
2146         mips_mode_ok_for_mov_fmt_p.
2147
2148 2007-10-04  Doug Kwan  <dougkwan@google.com>
2149
2150         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
2151         __gthread_cond_wait_recursive): Add to extend interface for POSIX
2152         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
2153         support of conditional variables.
2154         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
2155         __gthread_cond_wait_recursive): Add to extend interface for POSIX
2156         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
2157         support of conditional variables.
2158         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
2159         __gthread_cond_wait_recursive): Add to extend interface for POSIX
2160         conditional variables.
2161         * gthr.h: Update comments to document new interface.
2162
2163 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
2164
2165         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
2166         DECL_IGNORED_P.
2167
2168 2007-10-04  Anatoly Sokolov <aesok@post.ru>
2169
2170         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
2171
2172 2007-10-04  Richard Guenther  <rguenther@suse.de>
2173
2174         PR middle-end/33641
2175         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
2176         does not need to be of INTEGER_TYPE.
2177         (verify_gimple_2): New function split out from ...
2178         (verify_gimple_1): ... here.  ICE if there was an error during
2179         verification.
2180
2181 2007-10-04  Michael Matz  <matz@suse.de>
2182
2183         PR rtl-optimization/33653
2184         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
2185         * dse.c (scan_insn): Same.
2186
2187 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
2188
2189         * config.gcc: Remove USE_GAS for m68k targets.
2190
2191 2007-10-04  Richard Guenther  <rguenther@suse.de>
2192
2193         PR tree-optimization/33627
2194         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
2195         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
2196         split out from ...
2197         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
2198         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
2199
2200 2007-10-04  Anatoly Sokolov <aesok@post.ru>
2201
2202         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
2203         commands_in_epilogues): Remove variables.
2204         (avr_file_start): Remove unneded initializations of commands_in_file,
2205         commands_in_prologues and commands_in_epilogues variables.
2206         (avr_file_end): Remove dead code.
2207
2208 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
2209
2210         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
2211         MOTOROLA is to true.
2212
2213 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
2214
2215         PR target/33635
2216         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
2217         (mips_split_doubleword_move): ...this.
2218         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
2219         use natural endianness for multi-format FPR values.
2220         (mips_split_64bit_move): Rename to...
2221         (mips_split_doubleword_move): ...this and extend to 64-bit words.
2222         Use move_doubleword_fpr* patterns for moves involving FPRs.
2223         (mips_save_reg): Update the call to mips_split_64bit_move.
2224         (mips_secondary_reload_class): Return NO_REGS for any reload of a
2225         nonzero constant into an FPR if the constant can be forced to memory.
2226         * config/mips/mips.md: Update the splitter calls to
2227         mips_split_64bit_move.
2228         (UNSPEC_LOAD_DF_LOW): Rename to...
2229         (UNSPEC_LOAD_LOW): ...this.
2230         (UNSPEC_LOAD_DF_HIGH): Rename to...
2231         (UNSPEC_LOAD_HIGH): ...this.
2232         (UNSPEC_STORE_DF_HIGH): Rename to...
2233         (UNSPEC_STORE_WORD): ...this.
2234         (SPLITF): New mode iterator.
2235         (HALFMODE): New mode attribute.
2236         (movtf): New expander.
2237         (*movtf_internal): New define_insn_and_split.
2238         (move_doubleword_fpr<mode>): New expander.
2239         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
2240         with...
2241         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
2242         (mfhc1<mode>): ...these more general patterns.
2243
2244 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
2245
2246         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
2247
2248 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
2249
2250         * gcse.c (hash_scan_set): Insert set in insn before note at
2251         the end of basic block.
2252
2253 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
2254
2255         PR tree-optimization/33576
2256         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
2257         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
2258         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
2259         (remove_iv): Declared.
2260         * lambda-code.c (remove_iv): Not static.
2261         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
2262         Don't remove ivs there, save ivs in the buffer.
2263
2264 2007-10-03  Jason Merrill  <jason@redhat.com>
2265
2266         PR c++/15764
2267         * tree-eh.c (same_handler_p): New fn.
2268         (optimize_double_finally): New fn.
2269         (refactor_eh_r): New fn.
2270         (refactor_eh): New fn.
2271         (pass_refactor_eh): New pass.
2272         * tree-pass.h: Declare it.
2273         * passes.c (init_optimization_passes): Add it.
2274
2275 2007-10-03  Doug Kwan  <dougkwan@google.com>
2276         Richard Guenther  <rguenther@suse.de>
2277
2278         PR debug/31899
2279         * dwarf2out.c (reference_to_unused): Disable sanity checking,
2280         be conservative instead.
2281
2282 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2283
2284         PR fortran/26682
2285         * doc/invoke.texi (-fwhole-program): Document that Fortran
2286         doesn't support this option.
2287
2288 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
2289
2290         PR middle-end/33617
2291         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
2292         expand_expr.
2293
2294 2007-10-02  David Daney  <ddaney@avtrex.com>
2295
2296         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
2297         against constant zero.
2298         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
2299         operand.
2300
2301 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
2302
2303         * ra-conflict.c: New file.
2304         * ra.h: New file.
2305         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
2306         usage to DF_LIVE usage.
2307         (reload): Remove reference to df_get_live_top.
2308         * rtlanal.c (subreg_nregs_with_regno): New function.  
2309         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
2310         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
2311         (df_has_eh_preds): Removed.
2312         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
2313         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
2314         bb_has_eh_pred.
2315         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
2316         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
2317         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
2318         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
2319         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
2320         (global_alloc): Turn off rescanning insns after call to
2321         global_conflicts and added call to set_preferences.
2322         (global_conflicts): Moved to ra-alloc.c.
2323         (set_preferences_1, set_preferences): New function.
2324         (mirror_conflicts): Changed types for various variables.
2325         (mark_elimination): Change DF_RA_LIVE
2326         usage to DF_LIVE usage.
2327         (build_insn_chain): Rewritten from scratch and made local.
2328         (print_insn_chain, print_insn_chains): New functions.
2329         (dump_conflicts): Do not print conflicts for fixed_regs.
2330         (rest_of_handle_global_alloc): Turn off insn rescanning.
2331         * hard-reg-set.h: Fixed comment.
2332         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
2333         usage to DF_LIVE usage and delete refs to TOP sets.
2334         (block_alloc): Mark regs as live if they are in the artificial
2335         defs at top of block.
2336         (find_stack_regs): New function.
2337         (rest_of_handle_local_alloc): Changed urec problem to live
2338         problem and do not turn off df rescanning.
2339         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
2340         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
2341         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
2342         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
2343         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
2344         fields in df_ref_flags.  The rest have been renumbered.  
2345         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
2346         at -O1.
2347         * rtl.h (subreg_nregs_with_regno): New function.
2348         * df-problems.c: (df_get_live_out, df_get_live_in,
2349         df_get_live_top): Removed reference to DF_RA_LIVE.
2350         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
2351         df_live_alloc, df_live_reset, df_live_local_finalize,
2352         df_live_free): Make top set only if different from in set.
2353         (df_lr_top_dump, df_live_top_dump): Only print top set if
2354         different from in set.
2355         (df_lr_bb_local_compute): Removed unnecessary check.
2356         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
2357         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
2358         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
2359         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
2360         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
2361         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
2362         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
2363         df_urec_add_problem): Removed.
2364         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
2365         bb_has_eh_pred. 
2366         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
2367         * basic_block.h (bb_has_abnormal_pred): New function.
2368         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
2369         usage to DF_LIVE usage.
2370         
2371 2007-10-02  Revital Eres  <eres@il.ibm.com>
2372
2373         * config/rs6000/predicates.md (easy_vector_constant): Return false
2374         for 750CL paired vectors.
2375         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
2376         vector constant.
2377         (vec_initv2sf): Add new description.
2378         (vconcatsf): Likewise.
2379         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
2380         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
2381
2382 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
2383
2384         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
2385         sinking the last stmt in a BB.
2386
2387 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
2388
2389         PR middle-end/22156
2390         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
2391         (sra_hash_tree): Handle BIT_FIELD_REFs.
2392         (sra_elt_hash): Don't hash bitfld blocks.
2393         (sra_elt_eq): Skip them in parent compares as well.  Handle
2394         BIT_FIELD_REFs.
2395         (build_element_name_1): Handle BIT_FIELD_REFs.
2396         (instantiate_element): Propagate nowarn from parents.  Create
2397         BIT_FIELD_REF for variables that are widened by scalarization.
2398         Gimple-zero-initialize all bit-field variables that are not
2399         part of parameters that are going to be scalarized on entry.
2400         (instantiate_missing_elements_1): Return the sra_elt.
2401         (canon_type_for_field): New.
2402         (try_instantiate_multiple_fields): New.  Infer widest possible
2403         access mode from decl or member type, but clip it at word
2404         size, and only widen it if a field crosses an alignment
2405         boundary.
2406         (instantiate_missing_elements): Use them.
2407         (generate_one_element_ref): Handle BIT_FIELD_REFs.
2408         (scalar_bitfield_p): New.
2409         (sra_build_assignment): Optimize assignments from scalarizable
2410         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
2411         counts.
2412         (REPLDUP): New.
2413         (sra_build_bf_assignment): New.  Optimize assignments to
2414         scalarizable BIT_FIELD_REFs.
2415         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
2416         assignments to full variables.
2417         (generate_copy_inout): Use the new macros and functions.
2418         (generate_element_copy): Likewise.  Handle bitfld differences.
2419         (generate_element_zero): Don't recurse for blocks.  Use
2420         sra_build_elt_assignment.
2421         (generate_one_element_init): Take elt instead of var.  Use
2422         sra_build_elt_assignment.
2423         (generate_element_init_1): Adjust.
2424         (bitfield_overlap_info): New struct.
2425         (bitfield_overlaps_p): New.
2426         (sra_explode_bitfield_assignment): New.  Adjust widened
2427         variables to account for endianness.
2428         (sra_sync_for_bitfield_assignment): New.
2429         (scalarize_use): Re-expand assignment to/from scalarized
2430         BIT_FIELD_REFs.  Explode or sync needed members for
2431         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
2432         (scalarize_copy): Use REPLDUP.
2433         (scalarize_ldst): Move assert before dereference.  Adjust EH
2434         handling.
2435         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2436
2437 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
2438
2439         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
2440         Rename CR_* constants to CMP_*.  Fix spacing.
2441
2442 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2443
2444         PR other/33585
2445         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
2446         to be processed with the special script doc/install.texi2html.
2447         
2448 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2449
2450         * doc/invoke.texi (Wall): List the options enabled by Wall.
2451         (Wstrict-aliasing): Add missing @option.
2452         
2453 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
2454
2455         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
2456         rather than gen_lowpart to change a register from DImode to DFmode.
2457         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
2458         both FROM and TO are integer modes that are no bigger than 4 bytes.
2459         (mips_mode_ok_for_mov_fmt_p): New function.
2460         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
2461         (mips_secondary_reload_class): Tweak formatting and comments.
2462         Use reg_class_subset_p instead of direct comparisons with
2463         classes.  Only allow direct FPR<->FPR moves for modes that
2464         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
2465         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
2466         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
2467         (*movdi_64bit): Likewise.
2468         (*movsi_internal): Likewise.
2469         (*movhi_internal): Likewise.
2470         (*movqi_internal): Likewise.
2471
2472 2007-09-30  Diego Novillo  <dnovillo@google.com>
2473
2474         PR 33593
2475         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
2476         throw an exception.
2477
2478 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
2479
2480         PR tree-optimization/33597
2481         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
2482         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
2483
2484 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
2485
2486         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
2487         instead of variants of (!reload_in_progress && !reload_completed).
2488         (x86_expand_vector_move): Ditto.
2489
2490 2007-09-28  Ollie Wild  <aaw@google.com>
2491
2492         Revert
2493         2007-09-27  Ollie Wild  <aaw@google.com>
2494
2495         * varasm.c (compare_constant): Removed call to
2496         lang_hooks.expand_constant.
2497         (copy_constants): Removed call to lang_hooks.expand_constant.
2498         (compute_reloc_for_constant): Removed call to
2499         lang_hooks.expand_constant.
2500         (output_addressed_constants): Removed call to
2501         lang_hooks.expand_constant.
2502         (constructor_static_from_elts_p): Removed call to
2503         lang_hooks.expand_constant.
2504         (output_constant): Removed calls to lang_hooks.expand_constant.
2505         * langhooks.h (struct lang_hooks): Removed field expand_constant.
2506         * langhooks-def.h (lhd_return_tree): Removed.
2507         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2508         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
2509         * langhooks.c (lhd_return_tree): Removed.
2510
2511 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2512
2513         PR target/33347
2514         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
2515         argument to gen_selb.
2516
2517 2007-09-28  Chao-ying Fu  <fu@mips.com>
2518
2519         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
2520         * doc/libgcc.texi (Fixed-point fractional library routines):
2521         Fix typos for neg and cmp functions.
2522
2523 2007-09-28  Michael Matz  <matz@suse.de>
2524
2525         PR rtl-optimization/33552
2526         * function.c (match_asm_constraints_1): Check for overlap in
2527         inputs and replace all occurences.
2528
2529 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
2530
2531         * config/mips/mips.c (override_options): Fix comment typo.
2532
2533 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
2534
2535         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
2536         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
2537         * config/bfin/t-bfin-linux (crti.o): Don't build.
2538         (crtn.o): Likewise.
2539         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
2540         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
2541         (crtn.o): Likewise.
2542         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
2543
2544 2007-09-27  Ollie Wild  <aaw@google.com>
2545
2546         * varasm.c (compare_constant): Removed call to
2547         lang_hooks.expand_constant.
2548         (copy_constants): Removed call to lang_hooks.expand_constant.
2549         (compute_reloc_for_constant): Removed call to
2550         lang_hooks.expand_constant.
2551         (output_addressed_constants): Removed call to
2552         lang_hooks.expand_constant.
2553         (constructor_static_from_elts_p): Removed call to
2554         lang_hooks.expand_constant.
2555         (output_constant): Removed calls to lang_hooks.expand_constant.
2556         * langhooks.h (struct lang_hooks): Removed field expand_constant.
2557         * langhooks-def.h (lhd_return_tree): Removed.
2558         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2559         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
2560         * langhooks.c (lhd_return_tree): Removed.
2561
2562 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2563
2564         PR middle-end/33436
2565         * expr.c (emit_group_load_1): Split constant double when destination
2566         length is half source length.
2567
2568 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
2569
2570         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
2571         (mips_cpu_info): Add tune_flags.
2572         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
2573         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
2574         Remove end marker.
2575         (override_options): Remove deprecation code.  Use branch-likely
2576         instructions for optimize_size or if the tuning flags do not
2577         suggest otherwise.  Tweak warning.
2578         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
2579
2580 2007-09-27  Matthias Klose  <doko@ubuntu.com>
2581
2582         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
2583         multilib osdirname if it exists.
2584         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
2585
2586 2007-09-27  Ian Lance Taylor  <iant@google.com>
2587
2588         PR tree-optimization/33565
2589         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
2590         assignments of comparisons.
2591         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
2592         parameter.  Change caller.  Defer overflow warnings around call to
2593         fold_binary.
2594         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
2595         TREE_NO_WARNING is set on the statement.
2596         * tree-ssa-forwprop.c
2597         (tree_ssa_forward_propagate_single_use_vars): Don't test
2598         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
2599         * tree-cfg.c (fold_cond_expr_cond): Likewise.
2600
2601 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
2602
2603         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
2604         reduce offset by units of 0x10000 for SPE vector modes or modes
2605         used with E500 double instructions.
2606
2607 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
2608
2609         * simplify-rtx.c (comparison_result): New.
2610         (simplify_const_relational_operation): Use it instead of the five
2611         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
2612         Improve bounds-checking optimizations; remove subsumed POPCOUNT
2613         optimizations.  Extract nonzero_address_p optimizations into a
2614         separate "if" together with optimizations where op1 is const0_rtx.
2615         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
2616         floating-point arguments too when appropriate.  Hoist test for ABS
2617         outside the final switch statement.
2618         * cse.c (fold_rtx): Don't look for an IOR equivalent of
2619         folded_arg0 if we found a constant equivalent.  Remove
2620         transformations done in simplify-rtx.c for "op0 RELOP op0".
2621
2622 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
2623
2624         * builtins.c (expand_builtin, expand_builtin_object_size,
2625         expand_builtin_memory_chk, maybe_emit_chk_warning,
2626         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
2627         for diagnostics.
2628         * expr.c (expand_expr_real_1): Likewise.
2629         * langhooks-def.h (struct diagnostic_info): Add forward decl.
2630         (lhd_print_error_function): Add third argument.
2631         * langhooks.h (struct diagnostic_info): Add forward decl.
2632         (struct lang_hooks): Add third argument to print_error_function.
2633         * diagnostic.h (diagnostic_info): Add abstract_origin field.
2634         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
2635         second argument.
2636         (diagnostic_report_current_function): Likewise.
2637         * toplev.c (announce_function): Pass NULL as second argument to
2638         diagnostic_set_last_function.
2639         * diagnostic.c (diagnostic_report_current_function): Add second
2640         argument, pass it as third argument to lang_hooks.print_error_function.
2641         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
2642         to diagnostic_report_current_function.
2643         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
2644         and message.abstract_origin.
2645         (verbatim): Initialize abstract_origin.
2646         * pretty-print.h (text_info): Add abstract_origin field.
2647         * pretty-print.c (pp_base_format): Handle %K.
2648         * langhooks.c (lhd_print_error_function): Add third argument.  If
2649         diagnostic->abstract_origin, print virtual backtrace.
2650         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
2651         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
2652         (init_dynamic_diag_info): Likewise.
2653
2654 2007-09-26  David Daney  <ddaney@avtrex.com>
2655
2656         PR target/33479
2657         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
2658         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
2659         sync_old_nand<mode>, sync_new_nand<mode>,
2660         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
2661         Update length attributes.
2662         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
2663         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
2664         length attributes.
2665         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
2666         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
2667         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
2668         post-loop sync.
2669
2670 2007-09-26  Richard Guenther  <rguenther@suse.de>
2671
2672         PR tree-optimization/33563
2673         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
2674         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
2675         aggregate stores.
2676         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
2677         get_use_of_stmt_lhs.
2678
2679 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
2680
2681         PR c/25309
2682         * c-common.c (complete_array_type): Diagnose too-large arrays and
2683         set type to error_mark_node.
2684
2685 2007-09-26  Richard Guenther  <rguenther@suse.de>
2686
2687         PR tree-optimization/30375
2688         PR tree-optimization/33560
2689         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
2690         with calls.
2691
2692         Revert
2693         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
2694
2695         * tree-ssa-dse.c (aggregate_vardecl_d): New.
2696         (dse_global_data): Add aggregate_vardecl field.
2697         (dse_possible_dead_store_p): New.
2698         Add prev_defvar variable.
2699         Allow immediate uses and previous immediate uses to differ
2700         if they are setting different parts of the whole.
2701         (get_aggregate_vardecl): New.
2702         (dse_record_partial_aggregate_store): New.
2703         (dse_whole_aggregate_clobbered_p): New.
2704         (dse_partial_kill_p): New.
2705         Call dse_maybe_record_aggregate_store().
2706         When checking whether a STMT and its USE_STMT refer to the
2707         same memory address, check also for partial kills that clobber
2708         the whole.
2709         Move some variable definitions to the block where they are used.
2710         (aggregate_vardecl_hash): New.
2711         (aggregate_vardecl_eq): New.
2712         (aggregate_vardecl_free): New.
2713         (aggregate_whole_store_p): New.
2714         (tree_ssa_dse): Initialize and free aggregate_vardecl.
2715         Mark which aggregate stores we care about.
2716
2717 2007-09-25  DJ Delorie  <dj@redhat.com>
2718
2719         PR target/33551
2720         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
2721         XINT.
2722
2723 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
2724
2725         PR target/33524
2726         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
2727         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
2728         for vector int32 -> int64 conversions.  Don't write beyond the end
2729         of the allocated vector for int32 -> int64 conversions.
2730
2731 2007-09-25  Revital Eres  <eres@il.ibm.com>
2732
2733         * config/rs6000/paired.h (paired_sel): New.
2734         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
2735         (rs6000_expand_ternop_builtin): Pass zero const_double operand
2736         when expanding selv2sf.
2737         * config/rs6000/rs6000.h (rs6000_builtins): Add
2738         PAIRED_BUILTIN_SELV2SF4.
2739
2740 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
2741
2742         PR c/32295
2743         * c-typeck.c (default_conversion): Call require_complete_type
2744         before perform_integral_promotions.
2745         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
2746         (build_c_cast): Call require_complete_type except for casts to
2747         void types.
2748         (convert_for_assignment): Call require_complete_type.
2749
2750 2007-09-25  Revital Eres  <eres@il.ibm.com>
2751
2752         * config/spu/spu.md: Fix doloop pattern.
2753
2754 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
2755
2756         * config/bfin/bfin.c (expand_prologue_reg_save,
2757         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs
2758         and ASTAT moved here...
2759         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
2760         ... from here.  New argument ALL; callers changed.
2761         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
2762         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
2763         have the "saveall" attribute.
2764
2765 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
2766
2767         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
2768         bogus target macro.
2769         (INCOMING_REGNO, OUTGOING_REGNO): Define.
2770         * config/mmix/mmix.c (mmix_opposite_regno): New function.
2771         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
2772
2773         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
2774         with REG_P tests before REGNO access.
2775
2776 2007-09-24  DJ Delorie  <dj@redhat.com>
2777
2778         PR target/31482
2779         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
2780         constraint.
2781         (movqicc_<code>_<mode>): Likewise.
2782         (movhicc_<code>_<mode>): Likewise.
2783
2784 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2785
2786         PR target/33184
2787         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
2788         register for reload.
2789
2790 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
2791
2792         PR c++/14688
2793         * config/i386/i386.c (ix86_comp_type_attributes): Check
2794         METHOD_TYPE too.
2795
2796 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
2797
2798         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
2799         "move.l %a4,%a4" to produce nops.
2800         * config/m68k/m68k.c (override_options): Reset align options,
2801         if neccessary align macro isn't avaible.
2802
2803 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
2804
2805         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
2806
2807 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
2808
2809         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
2810         the basic block.
2811         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
2812         reload is completed.
2813         (peephole pattern): Convert most of them to RTL peephole pattern.
2814
2815 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
2816
2817         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
2818         (moved from fp compare patterns).
2819         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
2820         Cleanup predicates to relieve reload.
2821         (conditional_trap): Reject conditional trap with fp condition.
2822         * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
2823         certain constants early.
2824
2825 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
2826
2827         * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
2828
2829 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2830
2831         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
2832         Allow --with-tune=cell and --with-cpu=cell.
2833
2834 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
2835
2836         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
2837         * config/rs6000/rs6000.opt (swdiv): Change option to ...
2838         (recip): this.
2839         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
2840         function.
2841         (TARGET_BUILTIN_RECIPROCAL): Use it.
2842         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
2843         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
2844         (rs6000_emit_swrsqrtsf): New.
2845         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
2846         rsqrtf. 
2847         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
2848         (divsf3): Remove swdiv support.
2849         (recipsf3): New.
2850         (rsqrtsf2): New.
2851         (rsqrt_internal1): New.
2852         (divdf3): Remove swdiv support.
2853         (reciptdf3): New.
2854
2855 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
2856
2857         PR c++/33506
2858         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
2859         field.
2860         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
2861         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
2862         * tree.c (type_hash_eq): For FUNCTION_TYPE use
2863         lang_hooks.type.type_hash_eq in addition to generic tests.
2864
2865 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
2866         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
2867
2868         * tree-inline.h (eni_weights): Add field target_builtin_cost to
2869         reflect the cost per call to a target specific builtin.
2870         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
2871         call to a target specific builtin, then use target_builtin_call_cost.
2872         (init_inline_once): Initialize target_builtin_call_cost field.
2873
2874 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
2875
2876         PR middle-end/33472
2877         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
2878         complex types.
2879
2880 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
2881
2882         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
2883         * configure: Regenerated.
2884
2885 2007-09-23  Ollie Wild  <aaw@google.com>
2886
2887         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
2888         operand.
2889         (get_pointer_modulus_and_residue): New function.
2890
2891 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2892
2893         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
2894         combine an SC return value into a single register.
2895
2896 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2897
2898         * opth-gen.awk (target_flags_explicit): Declare.
2899         * toplev.h (target_flags_explicit): Delete declaration.
2900         * toplev.c (target_flags): Likewise.
2901         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
2902         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
2903         Never return true for TARGET_MIPS16.
2904         * config/mips/mips.c (mips_llsc): Delete.
2905         (mips_handle_option): Remove -mllsc handling.
2906         (mips_strip_unspec_address): Tweak comment.
2907         * config/mips/mips.opt (mllsc): Use a target mask.
2908
2909 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2910
2911         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
2912         word_mode as well as Pmode.
2913
2914 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2915
2916         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
2917         parameters from word_mode to the subword type if such a truncation
2918         is not a no-op.
2919
2920 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
2921
2922         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
2923         * configure: Regenerated.
2924
2925 2007-09-23  Jan Hubicka  <jh@suse.cz>
2926
2927         * params.def (INLINE_CALL_COST): Set to 12.
2928         * invoke.texi (inline-call-cost): Update default value.
2929
2930 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
2931
2932         * config/alpha/alpha.md (movti): Use operand_subword for the split.
2933
2934 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
2935             Revital Eres  <eres@il.ibm.com>
2936
2937         * modulo-sched.c (doloop_register_get): Rewrite the loop which
2938         checks whether the count_reg is found outside the control part.
2939
2940 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
2941
2942         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
2943         instead of checking CALL_EXPR_FN directly to test for builtins.
2944         If error or warning attributes are present, print
2945         error resp. warning.
2946         * c-common.c (handle_error_attribute): New function.
2947         (c_common_attribute_table): Add error and warning
2948         attributes.
2949         * doc/extend.texi: Document error and warning attributes.
2950
2951         * tree.h (block_nonartificial_location): New prototype.
2952         * tree.c (block_nonartificial_location): New function.
2953         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
2954         if artificial attribute is present on abstract inline decl.
2955         * c-common.c (handle_artificial_attribute): New function.
2956         (c_common_attribute_table): Add artificial attribute.
2957         * final.c (override_filename, override_linenum): New variables.
2958         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
2959         and override_linenum if inside of a block inlined from
2960         __attribute__((__artificial__)) function.
2961         (notice_source_line): Honor override_filename and override_linenum.
2962         * doc/extend.texi: Document __attribute__((__artificial__)).
2963         * config/i386/emmintrin.h: Add __artificial__ attribute to
2964         all __always_inline__ functions.
2965         * config/i386/mmintrin.h: Likewise.
2966         * config/i386/tmmintrin.h: Likewise.
2967         * config/i386/mm3dnow.h: Likewise.
2968         * config/i386/pmmintrin.h: Likewise.
2969         * config/i386/ammintrin.h: Likewise.
2970         * config/i386/xmmintrin.h: Likewise.
2971         * config/i386/smmintrin.h: Likewise.
2972         * config/i386/bmmintrin.h: Likewise.
2973         * config/i386/mmintrin-common.h: Likewise.
2974
2975         PR middle-end/28755
2976         * expr.c (expand_constructor): New function.
2977         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
2978         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
2979         CONSTRUCTOR.
2980
2981 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2982
2983         * config/mips/mips.c (dump_constants_1): Generalize to include
2984         fractional and accumulator modes.
2985
2986 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
2987
2988         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
2989         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
2990         flags for MIPS16.
2991         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
2992         TARGET_HARD_FLOAT when testing whether -mpaired-single is
2993         supported.
2994         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
2995         TARGET_DSP.
2996         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
2997         TARGET_DSPR2.
2998         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
2999         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
3000         TARGET_HARD_FLOAT.
3001         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
3002         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
3003         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
3004         throughout.
3005         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
3006         TARGET_HAS_DSPR2.
3007         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
3008         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
3009         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
3010
3011 2007-09-22  Jason Merrill  <jason@redhat.com>
3012
3013         PR c++/19407
3014         * attribs.c (lookup_attribute_spec): Split out...
3015         (decl_attributes): From here.
3016         * tree.h: Declare it.
3017
3018 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3019
3020         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
3021
3022 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
3023
3024         * tree-inline.c (remap_type_1): Correctly chain variants.
3025
3026 2007-09-22  Richard Guenther  <rguenther@suse.de>
3027
3028         PR tree-optimization/33146
3029         * fold-const.c (fold_binary): Use the original tree
3030         for negating.
3031         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
3032         also changes "sign".
3033
3034 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
3035
3036         PR target/32325
3037         * except.c (finish_eh_generation): Call commit_edge_insertions if
3038         there are insns queued on the entry edge.
3039         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
3040         the entry edge.
3041
3042 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3043
3044         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
3045
3046 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
3047
3048         * gcc/config/i386/i386.c: Delete trailing whitespace.
3049         * gcc/config/i386/i386.h: Ditto.
3050         * gcc/config/i386/bmmintrin.h: Ditto.
3051         * gcc/config/i386/sync.md: Ditto.
3052         * gcc/config/i386/ppro.md: Ditto.
3053         * gcc/config/i386/mmx.md: Ditto.
3054         * gcc/config/i386/constraints.md: Ditto.
3055         * gcc/config/i386/sse.md: Ditto.
3056         * gcc/config/i386/athlon.md: Ditto.
3057         * gcc/config/i386/i386.md: Ditto.
3058
3059 2007-09-21  Richard Guenther  <rguenther@suse.de>
3060
3061         PR tree-optimization/33508
3062         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
3063         quadratic loop by keeping a bitmap of variables we have
3064         to clobber all subvariables for.
3065         (set_initial_properties): Likewise.
3066
3067 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
3068
3069         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
3070
3071 2007-09-20  Nigel Stephens  <nigel@mips.com>
3072             Chao-ying Fu  <fu@mips.com>
3073
3074         * c-decl.c (finish_declspecs): When _Sat is used without
3075         _Fract or _Accum, set the default type to cts_fract.
3076         This avoids a warning of "type defaults to int".
3077
3078 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
3079
3080         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
3081         bit-fields wider than one bit.
3082
3083 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
3084
3085         PR debug/33316
3086         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
3087         DECL_NAME.
3088         * dbxout.c (dbxout_type): Likewise.
3089
3090         PR c/33238
3091         PR c/27301
3092         * gimplify.c (gimplify_vla_decl): New function.
3093         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
3094         Call it.
3095         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
3096
3097 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
3098
3099         * doc/invoke.texi (-minterlink-mips16): Document.
3100         * config/mips/mips.opt (minterlink-mips16): New option.
3101         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
3102         -minterlink-mips16
3103
3104 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
3105
3106         * doc/extend.texi (Attribute Syntax): Remove old speculative
3107         future direction.
3108
3109 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
3110
3111         * combine.c: Include cgraph.h.
3112         (setup_incoming_promotions): Rework to allow more aggressive
3113         elimination of sign extensions when all call sites of the
3114         current function are known to lie within the current unit.
3115
3116 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
3117
3118         * dse.c (find_shift_sequence): No-op rework of control flow.
3119
3120 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3121
3122         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
3123         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
3124
3125 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3126
3127         * cfgexpand.c (dump_stack_var_partition): Use the correct
3128         index for the offset.
3129
3130 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
3131
3132         * config/mips/sde.h: Switch to GPLv3.
3133
3134 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
3135
3136         * tree-sra.c (decide_block_copy): Decide if there are groups.
3137
3138 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
3139
3140         * config/m68k/m68k.c (output_move_himode): Remove jump table
3141         recognition.
3142         config/m68k/m68k.md (lea): Likewise.
3143         * config/m68k/m68k.c (print_operand_address): Use simple pc
3144         relative addressing.
3145
3146 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
3147
3148         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
3149         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
3150         default definition.
3151         (asm_insn_count): Pass template as second argument to it.
3152         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3153         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3154         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3155         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3156         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
3157         (sh_insn_length_adjustment): Pass template as second argument to it.
3158         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
3159
3160         * config/bfin/bfin.md (define_asm_attributes): New.
3161
3162 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
3163
3164         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
3165         to tm_file.
3166         * config/bfin/print-sysroot-suffix.sh: New.
3167         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
3168         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
3169         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
3170         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
3171         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
3172         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
3173         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
3174         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
3175         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
3176         (linux-sysroot-suffix.h): New target.
3177         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
3178         (mspecld-anomaly): Likewise.
3179         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
3180         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
3181         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
3182         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
3183         (bfin_si_revision): Declare.
3184         (bfin_workarounds): Declare.
3185         (WA_SPECULATIVE_LOADS): Define.
3186         (ENABLE_WA_SPECULATIVE_LOADS): Define.
3187         (WA_SPECULATIVE_SYNCS): Define.
3188         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
3189         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
3190         (LIB_SPEC): Add %s to the linker scripts.
3191         Use proper linker script for bf522, bf525, bf527,
3192         bf538, bf539, bf542, bf544, bf548, and bf549.
3193         * config/bfin/bfin.c (bfin_si_revision): Define.
3194         (bfin_workarounds): Define.
3195         (struct bfin_cpu): New.
3196         (bfin_cpus): New.
3197         (bfin_handle_option): Handle silicon revision part of -mcpu option.
3198         (override_options): Set bfin_workarounds.
3199         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
3200         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
3201         ENABLE_WA_SPECULATIVE_LOADS.
3202         (bfin_reorg): Likewise.
3203         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
3204         macros for bf522, bf525, bf527, bf538, bf539,
3205         bf542, bf544, bf548, and bf549.
3206         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
3207         Don't define __ID_SHARED_LIB__ when -msep-data.
3208         (TARGET_DEFAULT): Define as 0.
3209         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
3210         * doc/invoke.texi (Blackfin Options): Document silicon
3211         revision part of -mcpu option and it now accepts bf522, bf525,
3212         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
3213
3214 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3215
3216         * alias.c (memory_modified_1): Deconstify.
3217         (memory_modified_in_insn_p): Don't use const_note_stores.
3218         * rtl.h (const_note_stores): Delete.
3219         * rtlanal.c (const_note_stores): Likewise.
3220
3221 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3222
3223         * dse.c (find_shift_sequence): Temporarily revert to forbidding
3224         word shifts.
3225
3226 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3227
3228         PR target/33388
3229         PR target/33397
3230         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
3231         (addsi_small_int): Likewise.
3232         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
3233         (one_cmplsi2): Likewise.
3234         (negsi2): Delete.
3235         (enter_func): Expand insn using hard_frame_pointer_rtx and
3236         stack_pointer_rtx.
3237         (*enter_func): New.
3238         * config/fr30/fr30.c (fr30_expand_prologue): Check for
3239         hard_frame_pointer_rtx instead of using REGNO() check.
3240         Properly sign extend GEN_INT() argument.
3241
3242 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
3243
3244         * config/m68k/m68k.c (override_options): Remove USE_GAS,
3245         use %. syntax.
3246         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
3247         alternatives with just jcc.
3248         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
3249         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
3250         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
3251         dbge_hi, dbge_si): Likewise.
3252
3253 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
3254
3255         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
3256         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
3257         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
3258         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
3259         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
3260
3261 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
3262
3263         * config/m68k/m68k-devices.def (51qe): New device.
3264         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
3265         to all uses of FL_FOR_isa_c for compatibility.
3266         (all_microarchs): Add cfv1 microarchitecture.
3267         (m68k_handle_option): Handle m51qe option.
3268         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
3269         (TUNE_CFV1): New macro.
3270         (enum uarch_type): Add ucfv1.
3271         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
3272         
3273 2007-09-18  Richard Guenther  <rguenther@suse.de>
3274
3275         PR tree-optimization/31863
3276         * tree-ssa-structalias.c (create_variable_info_for): Always
3277         free the fieldstack.
3278
3279 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
3280
3281         * opts.c (decode_options): Enable vectorization under -O3.
3282
3283 2007-09-18  Richard Guenther  <rguenther@suse.de>
3284
3285         PR tree-optimization/33340
3286         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
3287         SSA_NAMEs that occur in abnormal PHI nodes.
3288
3289 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3290
3291         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
3292         Don't use const_get_call_expr_in.
3293         * tree-gimple.c (const_get_call_expr_in): Delete.
3294         * tree-gimple.h (const_get_call_expr_in): Likewise.
3295
3296 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3297
3298         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
3299         not yet have a basic block.
3300         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
3301
3302 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3303
3304         * config/mips/mips.c (mips_file_start): Add ".previous" directives
3305         to both ".section"s.
3306
3307 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
3308
3309         * config/mips/mips.c (mips_output_mi_thunk): Use
3310         mips_function_ok_for_sibcall and const_call_insn_operand
3311         to determine if a direct sibcall is allowed.  Use
3312         mips_classify_symbol to determine a global pointer is needed.
3313
3314 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
3315
3316         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
3317
3318 2007-09-17  Chao-ying Fu  <fu@mips.com>
3319             Nigel Stephens  <nigel@mips.com>
3320
3321         * config/fixed-bit.h: New file.
3322         * config/fixed-bit.c: New file.
3323         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
3324
3325 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
3326
3327         * c-format.h (format_kind_info): Add alloc_char field.
3328         * c-format.c (scanf_flag_specs): Add 'm'.
3329         (scanf_flag_pairs): Add 'a', 'm' pair.
3330         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
3331         (format_types_orig): Add alloc_char fields.
3332         (check_format_info_main): Rename aflag to alloc_flag.
3333         Handle fki->alloc_char. modifier after width and before length
3334         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
3335         length modifiers as well.
3336         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
3337
3338         PR middle-end/33423
3339         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
3340         returned by build_call_expr.
3341
3342 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
3343
3344         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
3345         NULL for variable-sized records too.
3346         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
3347
3348 2007-09-17  Tom Tromey  <tromey@redhat.com>
3349
3350         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
3351         (c_builtin_function): Likewise.
3352         (grokdeclarator): Likewise.
3353
3354 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
3355
3356         PR rtl-optimization/26449
3357         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
3358         (seq_insns_valid_p): Removed.
3359
3360 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
3361
3362         * tree-nomudflap.c (gate_mudflap): New static function.
3363         (pass_mudflap_1): Use it as gate function.
3364         (pass_mudflap_2): Likewise.
3365
3366 2007-09-17  Jan Hubicka  <jh@suse.cz>
3367
3368         PR middle-end/33348
3369         PR target/33406
3370         * loop-invariant.c (move_invariant_reg): Unshare sequence.
3371
3372 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
3373
3374         PR tree-optimization/33319
3375         * tree-vect-analyze.c (vect_same_range_drs): New.
3376         (vect_vfa_range_equal): New.
3377         (vect_is_duplicate_ddr): Removed.
3378         (vect_mark_for_runtime_alias_test): Do not perform marking when
3379         optimizing for size or max_param for alias checking is zero.
3380         Move the function before vect_analyze_data_ref_dependence.
3381         (vect_analyze_data_ref_dependence): Add call to
3382         vect_mark_for_runtime_alias_test in two cases when dependence
3383         is not clear.
3384         (vect_analyze_data_ref_dependences): Do not call to
3385         vect_mark_for_runtime_alias_test.
3386         (vect_prune_runtime_alias_test_list): New.
3387         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
3388         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
3389         Update vec_outside_cost.
3390         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
3391         (vect_create_cond_for_alias_checks): Build the base address of data
3392         reference from DR_GROUP_FIRST_DR.
3393         (vect_loop_versioning): New.
3394         (vect_transform_loop): Add a call to vect_loop_versioning.
3395         Remove factored out code.
3396
3397 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3398
3399         PR middle-end/33273
3400         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
3401         to BLKmode.
3402
3403 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
3404
3405         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
3406         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
3407         Fix the call to insn_rtx_cost.  Skip access sizes that require a
3408         real truncation of the store register.  Use convert_move instead
3409         of gen_lowpart when narrowing the result.
3410         (replace_read): Use convert_move instead of gen_lowpart when
3411         narrowing the store rhs.
3412
3413 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
3414
3415         * config/mips/mips.md (SHORT): Fix long line.
3416         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
3417         to QImode and HImode.
3418
3419 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
3420
3421         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
3422
3423 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
3424
3425         * tree-parloops.c: New file.
3426         * tree-ssa-operands.h (free_stmt_operands): Declare.
3427         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
3428         block.
3429         * tree-pass.h (pass_parallelize_loops): Declare.
3430         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
3431         virtual operands.
3432         (build_omp_regions_1): Allow analysing just a single OMP region and
3433         its subregions.
3434         ( build_omp_regions_root, omp_expand_local): New functions.
3435         (build_omp_regions): Add argument to build_omp_regions_1 call.
3436         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
3437         autoparallelization is run.
3438         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
3439         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
3440         pass_parallelize_loops): New.
3441         * common.opt (ftree-parallelize-loops): New.
3442         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
3443         parallelize_loops): Declare.
3444         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
3445         * Makefile.in (tree-parloops.o): Added.
3446         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
3447         New functions.
3448         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
3449         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
3450         one extra edge as well.
3451         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
3452         Use VEC_free to free doms vector.
3453         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
3454         operands.  Recompute operand caches in the new function.
3455         (move_sese_region_to_fn): Update loop info.
3456         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
3457         * tree-ssa-operands.c (free_stmt_operands): New function.
3458
3459         * doc/passes.texi: Document autoparallelization.
3460         * doc/invoke.texi (-ftree-parallelize-loops): New option.
3461
3462 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3463
3464         PR target/33062
3465         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
3466         TYPE_PRECISION.
3467
3468 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
3469
3470         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
3471         the VEC is not NULL.
3472         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
3473         get_vectype_for_scalar_type succeeded.
3474         (vectorizable_conversion): Likewise.
3475
3476 2007-09-14  Jan Hubicka  <jh@suse.cz>
3477
3478         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
3479         TARGET_64BIT.
3480
3481 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
3482
3483         PR target/33438
3484         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
3485         register when operands[2] equals operands[1].
3486         (remainderxf3): Ditto.
3487
3488 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
3489             Nigel Stephens  <nigel@mips.com>
3490
3491         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
3492         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
3493         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
3494         declaration.
3495         (_Unwind_ForcedUnwind): Likewise.
3496         (_Unwind_Resume): Likewise.
3497         (_Unwind_Resume_or_Rethrow): Likewise.
3498         (_Unwind_Backtrace): Likewise.
3499         (_Unwind_SjLj_RaiseException): Likewise.
3500         (_Unwind_SjLj_ForcedUnwind): Likewise.
3501         (_Unwind_SjLj_Resume): Likewise.
3502         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
3503         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
3504         to definition.
3505         (_Unwind_ForcedUnwind): Likewise.
3506         (_Unwind_Resume): Likewise.
3507         (_Unwind_Resume_or_Rethrow): Likewise.
3508         (_Unwind_Backtrace): Likewise.
3509         * unwind-compat.c (_Unwind_Backtrace): Likewise.
3510         (_Unwind_ForcedUnwind): Likewise.
3511         (_Unwind_RaiseException): Likewise.
3512         (_Unwind_Resume): Likewise.
3513         (_Unwind_Resume_or_Rethrow): Likewise.
3514
3515         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
3516         nomips16 mode when IN_LIBGCC2 with hard float.
3517
3518 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
3519
3520         * config/mips/sdemtk.opt: Update to GPLv3.
3521         * config/mips/sdemtk.h: Likewise.
3522
3523 2007-09-14  Nigel Stephens  <nigel@mips.com>
3524
3525         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
3526         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
3527         for mipsisa32-*-linux*.
3528
3529 2007-09-14  Nigel Stephens  <nigel@mips.com>
3530             David Ung  <davidu@mips.com>
3531             Thiemo Seufer  <ths@mips.com>
3532             Richard Sandiford  <richard@codesourcery.com>
3533
3534         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
3535         * configure.ac: Add a mipssde threading type.
3536         * configure: Regenerate.
3537         * config/mips/sdemtk.h: New file.
3538         * config/mips/t-sdemtk: Likewise.
3539         * config/mips/sdemtk.opt: Likewise.
3540         * gthr-mipssde.h: Likewise.
3541         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
3542         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
3543         (MIPS_ICACHE_SYNC): New macro, split from ...
3544         * config/mips/mips.md (clear_cache): ...here.
3545         * config/mips/mips.c (mips_save_reg_p): Check
3546         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
3547         (build_mips16_function_stub): Use targetm.strip_name_encoding.
3548         (build_mips16_call_stub): Likewise.
3549
3550 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
3551
3552         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
3553
3554 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
3555
3556         PR target/32337
3557         * config/ia64/ia64.c (find_gr_spill): Don't decrement
3558         current_frame_info.n_local_regs.  Don't return emitted local
3559         regs.
3560         (ia64_compute_frame_size): Improve unwind hack to put
3561         RP, PFS, FP in that order by allowing some of the registers
3562         been already emitted, as long as they are emitted to the
3563         desired register.
3564
3565 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3566
3567         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
3568         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
3569         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
3570
3571 2007-09-13  Eric Christopher  <echristo@apple.com>
3572             Kenneth Zadeck <zadeck@naturalbridge.com>
3573
3574         * dse.c (find_shift_sequence): New function.
3575         (replace_read): Add case to remove read if it requires shift.
3576         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
3577         
3578 2007-09-13  Tom Tromey  <tromey@redhat.com>
3579
3580         * c-common.c (fname_as_string): Update.
3581         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
3582         (c_lex_one_token): Update.  Add 'parser' argument.
3583         (c_parser_simple_asm_expr): Update.
3584         (c_parser_attributes): Update.
3585         (c_parser_asm_statement): Update.
3586         (c_parser_asm_operands): Update.
3587         (c_parser_peek_token): Update.
3588         (c_parser_peek_2nd_token): Update.
3589         * c-lex.c (c_lex_string_translate): Remove.
3590         (c_lex_return_raw_strings): Likewise.
3591         (c_lex_with_flags): Added 'lex_flags' argument.
3592         (lex_string): Added 'translate' argument.
3593         * c-pragma.h (c_lex_with_flags): Update.
3594         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
3595         (C_LEX_STRING_NO_TRANSLATE): New define.
3596         (C_LEX_RAW_STRINGS): Likewise.
3597
3598 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
3599
3600         From Jie Zhang:
3601         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
3602         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
3603         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
3604         (bfin_init_builtins): Initialize __builtin_bfin_ones,
3605         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
3606         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
3607         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
3608         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
3609         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
3610         (bdesc_1arg): Add __builtin_bfin_ones.
3611         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
3612         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
3613         and __builtin_bfin_csqu_fr16.
3614         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
3615         (ones): New define_insn.
3616         (ssaddhi3_parts): New define_insn.
3617         (sssubhi3_parts): New define_insn.
3618         (flag_mulhi_parts): New define_insn.
3619
3620 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
3621
3622         * common.opt (femit-class-debug-always): Turn off by default.
3623
3624 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
3625
3626         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
3627         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
3628
3629 2007-09-13  James E. Wilson  <wilson@specifix.com>
3630
3631         PR tree-optimization/33389
3632         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
3633         then set build_loads before returning.
3634
3635 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
3636             David Ung  <davidu@mips.com>
3637
3638         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
3639         {d}addiu and a negative immediate such that it works with MIPS16
3640         instructions.
3641         
3642 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
3643
3644         PR bootstrap/33418
3645         * configure.ac (ld_vers): Support Linux linker.
3646         * configure: Regenerated.
3647
3648 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
3649             Sandra Loosemore <sandra@codesourcery.com>
3650
3651         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
3652         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
3653         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
3654         nomips16 into decl attributes.
3655         (TARGET_INSERT_ATTRIBUTES): Override.
3656         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
3657         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
3658         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
3659         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
3660         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
3661         (mips_use_mips16_mode_p): Reimplement as a function that takes
3662         a decl and considers only decl attributes.  If the decl is nested
3663         function, use its parent attributes.
3664         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
3665         instead of SYMBOL_REF_MIPS16_FUNC_P.
3666         (mips_set_mips16_mode): Move call to sorry here from old
3667         mips_use_mips16_mode_p.
3668         (mflip_mips16_entry): New structure.
3669         (mflip_mips16_htab): New variable.
3670         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
3671         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
3672         (mips_merge_decl_attributes): New function.
3673         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
3674         Use mips_use_mips16_mode_p.
3675         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
3676         SYMBOL_REF_MIPS16_FUNC_P.
3677         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
3678
3679 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
3680
3681         * c-parser.c (c_parser_struct_declaration): Check for a null return.
3682
3683 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3684
3685         PR driver/33309
3686         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
3687
3688 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
3689             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3690             Tony Linthicum  <tony.linthicum@amd.com>
3691
3692         * tree.h (function_args_iterator): New type to iterate over
3693         function arguments.
3694         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
3695         function arguments providing a pointer to the argument.
3696         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
3697         function arguments providing the argument.
3698         (function_args_iter_init): Inline function to initialize
3699         function_args_iterator.
3700         (function_args_iter_cond_ptr): Inline function to return the next
3701         pointer to hold the argument.
3702         (function_args_iter_cond): Inline function to return the next
3703         argument.
3704         (function_args_iter_cond_next): Advance the function args
3705         iterator.
3706         (stdarg_p): New function, return true if variable argument
3707         function.
3708         (prototype_p): New function, return true if function is
3709         prototyped.
3710         (function_args_count): New function, count the number of arguments
3711         of a function.
3712
3713         * tree.c (stdarg_p): New function, return true if variable
3714         argument function.
3715         (prototype_p): New function, return true if function is
3716         prototyped.
3717
3718         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
3719         (TARGET_ROUND): New macro for the round/ptest instructions which
3720         are shared between SSE4.1 and SSE5.
3721         (OPTION_MASK_ISA_ROUND): Ditto.
3722         (OPTION_ISA_ROUND): Ditto.
3723         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
3724         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
3725
3726         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
3727         (-mfused-madd): New switch to give users control over whether the
3728         compiler optimizes to use the multiply/add SSE5 instructions.
3729
3730         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
3731         m_ATHLON_K8_AMDFAM10, and change all uses.
3732         (enum pta_flags): Add PTA_SSE5.
3733         (ix86_handle_option): Turn off 3dnow if -msse5.
3734         (override_options): Add SSE5 support.
3735         (print_operand): %Y prints comparison codes for SSE5 com/pcom
3736         instructions.
3737         (ix86_expand_sse_movcc): Add SSE5 support.
3738         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
3739         vector type to the next largest size.
3740         (ix86_expand_sse5_pack): New function to use pperm to pack a
3741         vector type to the next smallest size.
3742         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
3743         (IX86_BUILTIN_FMADDSD): Ditto.
3744         (IX86_BUILTIN_FMADDPS): Ditto.
3745         (IX86_BUILTIN_FMADDPD): Ditto.
3746         (IX86_BUILTIN_FMSUBSS): Ditto.
3747         (IX86_BUILTIN_FMSUBSD): Ditto.
3748         (IX86_BUILTIN_FMSUBPS): Ditto.
3749         (IX86_BUILTIN_FMSUBPD): Ditto.
3750         (IX86_BUILTIN_FNMADDSS): Ditto.
3751         (IX86_BUILTIN_FNMADDSD): Ditto.
3752         (IX86_BUILTIN_FNMADDPS): Ditto.
3753         (IX86_BUILTIN_FNMADDPD): Ditto.
3754         (IX86_BUILTIN_FNMSUBSS): Ditto.
3755         (IX86_BUILTIN_FNMSUBSD): Ditto.
3756         (IX86_BUILTIN_FNMSUBPS): Ditto.
3757         (IX86_BUILTIN_FNMSUBPD): Ditto.
3758         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
3759         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
3760         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
3761         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
3762         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
3763         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
3764         (IX86_BUILTIN_PPERM): Ditto.
3765         (IX86_BUILTIN_PERMPS): Ditto.
3766         (IX86_BUILTIN_PERMPD): Ditto.
3767         (IX86_BUILTIN_PMACSSWW): Ditto.
3768         (IX86_BUILTIN_PMACSWW): Ditto.
3769         (IX86_BUILTIN_PMACSSWD): Ditto.
3770         (IX86_BUILTIN_PMACSWD): Ditto.
3771         (IX86_BUILTIN_PMACSSDD): Ditto.
3772         (IX86_BUILTIN_PMACSDD): Ditto.
3773         (IX86_BUILTIN_PMACSSDQL): Ditto.
3774         (IX86_BUILTIN_PMACSSDQH): Ditto.
3775         (IX86_BUILTIN_PMACSDQL): Ditto.
3776         (IX86_BUILTIN_PMACSDQH): Ditto.
3777         (IX86_BUILTIN_PMADCSSWD): Ditto.
3778         (IX86_BUILTIN_PMADCSWD): Ditto.
3779         (IX86_BUILTIN_PHADDBW): Ditto.
3780         (IX86_BUILTIN_PHADDBD): Ditto.
3781         (IX86_BUILTIN_PHADDBQ): Ditto.
3782         (IX86_BUILTIN_PHADDWD): Ditto.
3783         (IX86_BUILTIN_PHADDWQ): Ditto.
3784         (IX86_BUILTIN_PHADDDQ): Ditto.
3785         (IX86_BUILTIN_PHADDUBW): Ditto.
3786         (IX86_BUILTIN_PHADDUBD): Ditto.
3787         (IX86_BUILTIN_PHADDUBQ): Ditto.
3788         (IX86_BUILTIN_PHADDUWD): Ditto.
3789         (IX86_BUILTIN_PHADDUWQ): Ditto.
3790         (IX86_BUILTIN_PHADDUDQ): Ditto.
3791         (IX86_BUILTIN_PHSUBBW): Ditto.
3792         (IX86_BUILTIN_PHSUBWD): Ditto.
3793         (IX86_BUILTIN_PHSUBDQ): Ditto.
3794         (IX86_BUILTIN_PROTB): Ditto.
3795         (IX86_BUILTIN_PROTW): Ditto.
3796         (IX86_BUILTIN_PROTD): Ditto.
3797         (IX86_BUILTIN_PROTQ): Ditto.
3798         (IX86_BUILTIN_PROTB_IMM): Ditto.
3799         (IX86_BUILTIN_PROTW_IMM): Ditto.
3800         (IX86_BUILTIN_PROTD_IMM): Ditto.
3801         (IX86_BUILTIN_PROTQ_IMM): Ditto.
3802         (IX86_BUILTIN_PSHLB): Ditto.
3803         (IX86_BUILTIN_PSHLW): Ditto.
3804         (IX86_BUILTIN_PSHLD): Ditto.
3805         (IX86_BUILTIN_PSHLQ): Ditto.
3806         (IX86_BUILTIN_PSHAB): Ditto.
3807         (IX86_BUILTIN_PSHAW): Ditto.
3808         (IX86_BUILTIN_PSHAD): Ditto.
3809         (IX86_BUILTIN_PSHAQ): Ditto.
3810         (IX86_BUILTIN_FRCZSS): Ditto.
3811         (IX86_BUILTIN_FRCZSD): Ditto.
3812         (IX86_BUILTIN_FRCZPS): Ditto.
3813         (IX86_BUILTIN_FRCZPD): Ditto.
3814         (IX86_BUILTIN_CVTPH2PS): Ditto.
3815         (IX86_BUILTIN_CVTPS2PH): Ditto.
3816         (IX86_BUILTIN_COMEQSS): Ditto.
3817         (IX86_BUILTIN_COMNESS): Ditto.
3818         (IX86_BUILTIN_COMLTSS): Ditto.
3819         (IX86_BUILTIN_COMLESS): Ditto.
3820         (IX86_BUILTIN_COMGTSS): Ditto.
3821         (IX86_BUILTIN_COMGESS): Ditto.
3822         (IX86_BUILTIN_COMUEQSS): Ditto.
3823         (IX86_BUILTIN_COMUNESS): Ditto.
3824         (IX86_BUILTIN_COMULTSS): Ditto.
3825         (IX86_BUILTIN_COMULESS): Ditto.
3826         (IX86_BUILTIN_COMUGTSS): Ditto.
3827         (IX86_BUILTIN_COMUGESS): Ditto.
3828         (IX86_BUILTIN_COMORDSS): Ditto.
3829         (IX86_BUILTIN_COMUNORDSS): Ditto.
3830         (IX86_BUILTIN_COMFALSESS): Ditto.
3831         (IX86_BUILTIN_COMTRUESS): Ditto.
3832         (IX86_BUILTIN_COMEQSD): Ditto.
3833         (IX86_BUILTIN_COMNESD): Ditto.
3834         (IX86_BUILTIN_COMLTSD): Ditto.
3835         (IX86_BUILTIN_COMLESD): Ditto.
3836         (IX86_BUILTIN_COMGTSD): Ditto.
3837         (IX86_BUILTIN_COMGESD): Ditto.
3838         (IX86_BUILTIN_COMUEQSD): Ditto.
3839         (IX86_BUILTIN_COMUNESD): Ditto.
3840         (IX86_BUILTIN_COMULTSD): Ditto.
3841         (IX86_BUILTIN_COMULESD): Ditto.
3842         (IX86_BUILTIN_COMUGTSD): Ditto.
3843         (IX86_BUILTIN_COMUGESD): Ditto.
3844         (IX86_BUILTIN_COMORDSD): Ditto.
3845         (IX86_BUILTIN_COMUNORDSD): Ditto.
3846         (IX86_BUILTIN_COMFALSESD): Ditto.
3847         (IX86_BUILTIN_COMTRUESD): Ditto.
3848         (IX86_BUILTIN_COMEQPS): Ditto.
3849         (IX86_BUILTIN_COMNEPS): Ditto.
3850         (IX86_BUILTIN_COMLTPS): Ditto.
3851         (IX86_BUILTIN_COMLEPS): Ditto.
3852         (IX86_BUILTIN_COMGTPS): Ditto.
3853         (IX86_BUILTIN_COMGEPS): Ditto.
3854         (IX86_BUILTIN_COMUEQPS): Ditto.
3855         (IX86_BUILTIN_COMUNEPS): Ditto.
3856         (IX86_BUILTIN_COMULTPS): Ditto.
3857         (IX86_BUILTIN_COMULEPS): Ditto.
3858         (IX86_BUILTIN_COMUGTPS): Ditto.
3859         (IX86_BUILTIN_COMUGEPS): Ditto.
3860         (IX86_BUILTIN_COMORDPS): Ditto.
3861         (IX86_BUILTIN_COMUNORDPS): Ditto.
3862         (IX86_BUILTIN_COMFALSEPS): Ditto.
3863         (IX86_BUILTIN_COMTRUEPS): Ditto.
3864         (IX86_BUILTIN_COMEQPD): Ditto.
3865         (IX86_BUILTIN_COMNEPD): Ditto.
3866         (IX86_BUILTIN_COMLTPD): Ditto.
3867         (IX86_BUILTIN_COMLEPD): Ditto.
3868         (IX86_BUILTIN_COMGTPD): Ditto.
3869         (IX86_BUILTIN_COMGEPD): Ditto.
3870         (IX86_BUILTIN_COMUEQPD): Ditto.
3871         (IX86_BUILTIN_COMUNEPD): Ditto.
3872         (IX86_BUILTIN_COMULTPD): Ditto.
3873         (IX86_BUILTIN_COMULEPD): Ditto.
3874         (IX86_BUILTIN_COMUGTPD): Ditto.
3875         (IX86_BUILTIN_COMUGEPD): Ditto.
3876         (IX86_BUILTIN_COMORDPD): Ditto.
3877         (IX86_BUILTIN_COMUNORDPD): Ditto.
3878         (IX86_BUILTIN_COMFALSEPD): Ditto.
3879         (IX86_BUILTIN_COMTRUEPD): Ditto.
3880         (IX86_BUILTIN_PCOMEQUB): Ditto.
3881         (IX86_BUILTIN_PCOMNEUB): Ditto.
3882         (IX86_BUILTIN_PCOMLTUB): Ditto.
3883         (IX86_BUILTIN_PCOMLEUB): Ditto.
3884         (IX86_BUILTIN_PCOMGTUB): Ditto.
3885         (IX86_BUILTIN_PCOMGEUB): Ditto.
3886         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
3887         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
3888         (IX86_BUILTIN_PCOMEQUW): Ditto.
3889         (IX86_BUILTIN_PCOMNEUW): Ditto.
3890         (IX86_BUILTIN_PCOMLTUW): Ditto.
3891         (IX86_BUILTIN_PCOMLEUW): Ditto.
3892         (IX86_BUILTIN_PCOMGTUW): Ditto.
3893         (IX86_BUILTIN_PCOMGEUW): Ditto.
3894         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
3895         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
3896         (IX86_BUILTIN_PCOMEQUD): Ditto.
3897         (IX86_BUILTIN_PCOMNEUD): Ditto.
3898         (IX86_BUILTIN_PCOMLTUD): Ditto.
3899         (IX86_BUILTIN_PCOMLEUD): Ditto.
3900         (IX86_BUILTIN_PCOMGTUD): Ditto.
3901         (IX86_BUILTIN_PCOMGEUD): Ditto.
3902         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
3903         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
3904         (IX86_BUILTIN_PCOMEQUQ): Ditto.
3905         (IX86_BUILTIN_PCOMNEUQ): Ditto.
3906         (IX86_BUILTIN_PCOMLTUQ): Ditto.
3907         (IX86_BUILTIN_PCOMLEUQ): Ditto.
3908         (IX86_BUILTIN_PCOMGTUQ): Ditto.
3909         (IX86_BUILTIN_PCOMGEUQ): Ditto.
3910         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
3911         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
3912         (IX86_BUILTIN_PCOMEQB): Ditto.
3913         (IX86_BUILTIN_PCOMNEB): Ditto.
3914         (IX86_BUILTIN_PCOMLTB): Ditto.
3915         (IX86_BUILTIN_PCOMLEB): Ditto.
3916         (IX86_BUILTIN_PCOMGTB): Ditto.
3917         (IX86_BUILTIN_PCOMGEB): Ditto.
3918         (IX86_BUILTIN_PCOMFALSEB): Ditto.
3919         (IX86_BUILTIN_PCOMTRUEB): Ditto.
3920         (IX86_BUILTIN_PCOMEQW): Ditto.
3921         (IX86_BUILTIN_PCOMNEW): Ditto.
3922         (IX86_BUILTIN_PCOMLTW): Ditto.
3923         (IX86_BUILTIN_PCOMLEW): Ditto.
3924         (IX86_BUILTIN_PCOMGTW): Ditto.
3925         (IX86_BUILTIN_PCOMGEW): Ditto.
3926         (IX86_BUILTIN_PCOMFALSEW): Ditto.
3927         (IX86_BUILTIN_PCOMTRUEW): Ditto.
3928         (IX86_BUILTIN_PCOMEQD): Ditto.
3929         (IX86_BUILTIN_PCOMNED): Ditto.
3930         (IX86_BUILTIN_PCOMLTD): Ditto.
3931         (IX86_BUILTIN_PCOMLED): Ditto.
3932         (IX86_BUILTIN_PCOMGTD): Ditto.
3933         (IX86_BUILTIN_PCOMGED): Ditto.
3934         (IX86_BUILTIN_PCOMFALSED): Ditto.
3935         (IX86_BUILTIN_PCOMTRUED): Ditto.
3936         (IX86_BUILTIN_PCOMEQQ): Ditto.
3937         (IX86_BUILTIN_PCOMNEQ): Ditto.
3938         (IX86_BUILTIN_PCOMLTQ): Ditto.
3939         (IX86_BUILTIN_PCOMLEQ): Ditto.
3940         (IX86_BUILTIN_PCOMGTQ): Ditto.
3941         (IX86_BUILTIN_PCOMGEQ): Ditto.
3942         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
3943         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
3944         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
3945         OPTION_MASK_ISA_ROUND for instructions that are shared between
3946         SSE4.1 and SSE5.
3947         (bdesc_2arg): Ditto.
3948         (bdesc_sse_3arg): Ditto.
3949         (enum multi_arg_type): New enum for describing the various SSE5
3950         intrinsic argument types.
3951         (bdesc_multi_arg): New table for SSE5 intrinsics.
3952         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
3953         (ix86_expand_multi_arg_builtin): New function for creating SSE5
3954         intrinsics.
3955         (ix86_expand_builtin): Add SSE5 intrinsic support.
3956         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
3957         operand instructions.
3958         (ix86_expand_sse5_multiple_memory): New function to split the
3959         second memory reference from SSE5 instructions.
3960         (type_has_variadic_args_p): Delete in favor of stdarg_p.
3961         (ix86_return_pops_args): Use stdarg_p to determine if the function
3962         has variable arguments.
3963         (ix86_setup_incoming_varargs): Ditto.
3964         (x86_this_parameter): Ditto.
3965
3966         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
3967         declaration.
3968         (ix86_expand_sse5_pack): Ditto.
3969         (ix86_sse5_valid_op_p): Ditto.
3970         (ix86_expand_sse5_multiple_memory): Ditto.
3971
3972         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
3973         constant for SSE5 support.
3974         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
3975         (UNSPEC_SSE5_TRUEFALSE): Ditto.
3976         (UNSPEC_SSE5_PERMUTE): Ditto.
3977         (UNSPEC_SSE5_ASHIFT): Ditto.
3978         (UNSPEC_SSE5_LSHIFT): Ditto.
3979         (UNSPEC_FRCZ): Ditto.
3980         (UNSPEC_CVTPH2PS): Ditto.
3981         (UNSPEC_CVTPS2PH): Ditto.
3982         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
3983         (PCOM_TRUE): Ditto.
3984         (COM_FALSE_S): Ditto.
3985         (COM_FALSE_P): Ditto.
3986         (COM_TRUE_S): Ditto.
3987         (COM_TRUE_P): Ditto.
3988         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
3989         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
3990         types.
3991         (memory attribute): Ditto.
3992         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3993         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
3994         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3995         (floor<mode>2): Ditto.
3996         (ceil<mode>2): Ditto.
3997         (btrunc<mode>2): Ditto.
3998         (nearbyintdf2): Ditto.
3999         (nearbyintsf2): Ditto.
4000         (sse_setccsf): Disable if SSE5.
4001         (sse_setccdf): Ditto.
4002         (sse5_setcc<mode>): New support for SSE5 conditional move.
4003         (sse5_pcmov_<mode>): Ditto.
4004
4005         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
4006         (SSEMODEF4): Ditto.
4007         (SSEMODEF2P): Ditto.
4008         (ssemodesuffixf4): New mode attribute for SSE5.
4009         (ssemodesuffixf2s): Ditto.
4010         (ssemodesuffixf2c): Ditto.
4011         (sserotatemax): Ditto.
4012         (ssescalarmode): Ditto.
4013         (sse_maskcmpv4sf3): Disable if SSE5.
4014         (sse_maskcmpv2df3): Ditto.
4015         (sse_vmmaskcmpv4sf3): Ditto.
4016         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
4017         instructions.
4018         (sse5_vmfmadd<mode>4): Ditto.
4019         (sse5_fmsub<mode>4): Ditto.
4020         (sse5_vmfmsub<mode>4): Ditto.
4021         (sse5_fnmadd<mode>4): Ditto.
4022         (sse5_vmfnmadd<mode>4): Ditto.
4023         (sse5_fnmsub<mode>4): Ditto.
4024         (sse5_vmfnmsub<mode>4): Ditto.
4025         (sse5i_fmadd<mode>4): Ditto.
4026         (sse5i_fmsub<mode>4): Ditto.
4027         (sse5i_fnmadd<mode>4): Ditto.
4028         (sse5i_fnmsub<mode>4): Ditto.
4029         (sse5i_vmfmadd<mode>4): Ditto.
4030         (sse5i_vmfmsub<mode>4): Ditto.
4031         (sse5i_vmfnmadd<mode>4): Ditto.
4032         (sse5i_vmfnmsub<mode>4): Ditto.
4033         (mulv16qi3): Add SSE5 support.
4034         (mulv4si3): Ditto.
4035         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
4036         (sse2_mulv4si3): Disable if SSE5.
4037         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
4038         (sse4_1_roundps): Ditto.
4039         (sse4_1_roundsd): Ditto.
4040         (sse4_1_roundss): Ditto.
4041         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
4042         be generated.
4043         (sse_maskcmpsf3): Ditto.
4044         (sse_vmmaskcmpv4sf3): Ditto.
4045         (sse2_maskcmpv2df3): Ditto.
4046         (sse2_maskcmpdf3): Ditto.
4047         (sse2_vmmaskcmpv2df3): Ditto.
4048         (sse2_eq<mode>3): Ditto.
4049         (sse2_gt<mode>3): Ditto.
4050         (sse5_pcmov_<mode>): Add SSE5 support.
4051         (vec_unpacku_hi_v16qi): Ditto.
4052         (vec_unpacks_hi_v16qi): Ditto.
4053         (vec_unpacku_lo_v16qi): Ditto.
4054         (vec_unpacks_lo_v16qi): Ditto.
4055         (vec_unpacku_hi_v8hi): Ditto.
4056         (vec_unpacks_hi_v8hi): Ditto.
4057         (vec_unpacku_lo_v8hi): Ditto.
4058         (vec_unpacks_lo_v8hi): Ditto.
4059         (vec_unpacku_hi_v4si): Ditto.
4060         (vec_unpacks_hi_v4si): Ditto.
4061         (vec_unpacku_lo_v4si): Ditto.
4062         (vec_unpacks_lo_v4si): Ditto.
4063         (sse5_pmacsww): New SSE5 intrinsic insn.
4064         (sse5_pmacssww): Ditto.
4065         (sse5_pmacsdd): Ditto.
4066         (sse5_pmacssdd): Ditto.
4067         (sse5_pmacssdql): Ditto.
4068         (sse5_pmacssdqh): Ditto.
4069         (sse5_pmacsdqh): Ditto.
4070         (sse5_pmacsswd): Ditto.
4071         (sse5_pmacswd): Ditto.
4072         (sse5_pmadcsswd): Ditto.
4073         (sse5_pmadcswd): Ditto.
4074         (sse5_pcmov_<move>): Conditional move support on SSE5.
4075         (sse5_phaddbw): New SSE5 intrinsic insn.
4076         (sse5_phaddbd): Ditto.
4077         (sse5_phaddbq): Ditto.
4078         (sse5_phaddwd): Ditto.
4079         (sse5_phaddwq): Ditto.
4080         (sse5_phadddq): Ditto.
4081         (sse5_phaddubw): Ditto.
4082         (sse5_phaddubd): Ditto.
4083         (sse5_phaddubq): Ditto.
4084         (sse5_phadduwd): Ditto.
4085         (sse5_phadduwq): Ditto.
4086         (sse5_phaddudq): Ditto.
4087         (sse5_phsubbw): Ditto.
4088         (sse5_phsubwd): Ditto.
4089         (sse5_phsubdq): Ditto.
4090         (sse5_pperm): Ditto.
4091         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
4092         (sse5_pperm_zero_v16qi_v8hi): Ditto.
4093         (sse5_pperm_sign_v8hi_v4si): Ditto.
4094         (sse5_pperm_zero_v8hi_v4si): Ditto.
4095         (sse5_pperm_sign_v4si_v2di): Ditto.
4096         (sse5_pperm_sign_v4si_v2di): Ditto.
4097         (sse5_pperm_pack_v2di_v4si): Ditto.
4098         (sse5_pperm_pack_v4si_v8hi): Ditto.
4099         (sse5_pperm_pack_v8hi_v16qi): Ditto.
4100         (sse5_perm<mode>): New SSE5 intrinsic insn.
4101         (rotl<mode>3): Ditto.
4102         (sse5_rotl<mode>3): Ditto.
4103         (sse5_ashl<mode>3): Ditto.
4104         (sse5_lshl<mode>3): Ditto.
4105         (sse5_frcz<mode>2): Ditto.
4106         (sse5s_frcz<mode>2): Ditto.
4107         (sse5_cvtph2ps): Ditto.
4108         (sse5_cvtps2ph): Ditto.
4109         (sse5_vmmaskcmp<mode>3): Ditto.
4110         (sse5_com_tf<mode>3): Ditto.
4111         (sse5_maskcmp<mode>3): Ditto.
4112         (sse5_maskcmp_uns<mode>3): Ditto.
4113         (sse5_maskcmp_uns2<mode>3): Ditto.
4114         (sse5_pcom_tf<mode>3): Ditto.
4115         
4116         * config/i386/predicates.md (const_0_to_31_operand): New predicate
4117         to match 0..31.
4118         (sse5_comparison_float_operator): New predicate to match the
4119         comparison operators supported by the SSE5 com instruction.
4120         (ix86_comparison_int_operator): New predicate to match just the
4121         signed int comparisons.
4122         (ix86_comparison_uns_operator): New predicate to match just the
4123         unsigned int comparisons.
4124
4125         * doc/invoke.texi (-msse5): Add documentation.
4126         (-mfused-madd): Ditto.
4127
4128         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
4129
4130         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
4131         mmintrin-common.h.
4132         (x86_64-*-*): Ditto.
4133
4134         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
4135
4136         * config/i386/bmmintrin.h: New file, provide common x86 compiler
4137         intrinisics for SSE5.
4138
4139         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
4140         mmintrin-common.h.
4141
4142         * config/i386/mmintrin-common.h: New file, to contain common
4143         instructions between SSE4.1 and SSE5.
4144
4145         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
4146         FOREACH_FUNCTION_ARGS to iterate over the argument list.
4147         (gen_regparm_prefix): Ditto.
4148
4149         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
4150         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
4151         prototype_p to determine if a function is prototyped.
4152
4153 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
4154
4155         * config/dfp-bit.c (dfp_conversion_exception): New function.
4156         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
4157         (DFP_TO_INT): Ditto.
4158         (INT_TO_DFP): Ditto.
4159         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
4160
4161 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
4162
4163         PR target/32338
4164         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
4165         before sp restoration even when total_size is 0, but
4166         frame_pointer_needed.
4167
4168 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
4169
4170         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
4171         (xtensa_copy_incoming_a7): Use start_sequence instead of
4172         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
4173         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
4174         of the saveregs sequence.
4175
4176 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
4177
4178         * c-tree.h (grokfield): Add a "tree *" argument.
4179         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
4180         Chain nested decl attributes to it.  Don't call decl_attributes here.
4181         (groktypename): Pass grokdeclarator a pointer to the attribute list.
4182         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
4183         (grokfield): Take a pointer to the decl's attributes and pass
4184         it to grokdeclarator.
4185         * c-parser.c (c_parser_struct_declaration): Update the calls to
4186         grokfield.  Call decl_attributes for anonymous struct and union
4187         fields.
4188
4189 2007-09-12  Jan Hubicka  <jh@suse.cz>
4190
4191         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
4192
4193 2007-09-12  Ira Rosen  <irar@il.ibm.com>
4194
4195         PR tree-optimization/32377
4196         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
4197         between positive and negative dependence distance using DDR_REVERSED_P.
4198
4199 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
4200
4201         PR tree-optimization/33373
4202         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
4203         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
4204
4205 2007-09-12  Jan Hubicka  <jh@suse.cz>
4206
4207         PR target/33393
4208         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
4209         for !SSE_MATH
4210
4211 2007-09-12  Christian Bruel  <christian.bruel@st.com>
4212
4213         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
4214         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
4215         
4216 2007-09-12  Ira Rosen  <irar@il.ibm.com>
4217
4218         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
4219         for oprnd1 if not required.
4220         (vectorizable_operation): Use scalar operand in SLP in case of 
4221         shift with scalar argument.
4222
4223 2007-09-12  Ira Rosen  <irar@il.ibm.com>
4224
4225         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
4226         to 1.
4227
4228 2007-09-11  James E. Wilson  <wilson@specifix.com>
4229
4230         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
4231         TARGET_UNWIND_INFO is defined.
4232         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
4233         after definition.
4234
4235 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
4236
4237         * config/sh/sh.c (calc_live_regs): Use
4238         current_function_saves_all_registers instead of
4239         current_function_has_nonlocal_label.
4240         (sh_allocate_initial_value): Likewise.
4241         (sh_get_pr_initial_val): Likewise.
4242         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
4243         * config/sh/sh.md (load_ra): Likewise.
4244
4245 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
4246
4247         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
4248
4249         PR target/33360
4250         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
4251         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
4252
4253 2007-09-12  Sa Liu  <saliu@de.ibm.com>
4254
4255         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
4256         operands to DFmode GE or LE compares.
4257
4258 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
4259
4260         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
4261         REG_CLASS_NAMES): Add P0REGS.
4262         (REGNO_REG_CLASS): Return it where appropriate.
4263         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
4264         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
4265         * doc/md.texi (Blackfin family): Document 'q' constraints.
4266
4267 2007-09-11  Steve Kenton  <skenton@ou.edu>
4268
4269         * pa/linux-unwind.h: Guard with inhibit_libc.
4270         * pa/hpux-unwind.h: Likewise.
4271
4272 2007-09-11  David Daney  <ddaney@avtrex.com>
4273
4274         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
4275         * doc/install.texi: Document new --with-llsc and --without-llsc
4276         options.
4277         * config.gcc: Handle --with-llsc and --without-llsc configure options.
4278         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
4279         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
4280         ISA_HAS_SYNC.
4281         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
4282         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
4283         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
4284         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
4285         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
4286         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
4287         * config/mips/mips.opt (mllsc): New option.
4288         * config/mips/mips.c (mips_llsc): Define variable.
4289         (mips_handle_option): Handle mllsc option.
4290         (override_options): Set mips_print_operand_punct for '|' and '-'.
4291         (print_operand): Add new %| and %- operand codes.
4292         * config/mips/mips.h (mips_llsc_setting): New enum type.
4293         (mips_llsc): Declare.
4294         (OPTION_DEFAULT_SPECS): Add llsc handling.
4295         (GENERATE_SYNC): New macro.
4296         (GENERATE_LL_SC): New macro.
4297         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
4298         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
4299         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
4300         in %| and %- operand codes.
4301
4302 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
4303
4304         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
4305         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
4306
4307 2007-09-11  Jason Merrill  <jason@redhat.com>
4308
4309         PR middle-end/27945
4310         * stor-layout.c (layout_decl): Do pack variable size fields.    
4311
4312 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
4313
4314         * config/m68k/predicates.md (movsi_const0_operand,
4315         non_symbolic_call_operand): New predicates.
4316
4317         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
4318         New constraints.
4319         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
4320         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
4321         CW, CZ, CS, Ap and Ac.
4322
4323         * config/m68k/m68k.md (UNSPEC_IB): New constant.
4324         (constraints.md): New include.
4325         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
4326         opx_mem, opy_mem, op_mem, guess, split): New attributes.
4327         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
4328         Specify attributes.
4329         (pushdi): Add split.
4330         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
4331         attributes.  Split tstsi_internal_68020_cf from it.
4332         (tstsi_internal_68020_cf): New pattern.
4333         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
4334         (tst<mode>_cf): Specify attributea.
4335         (cmpsi_cf): Name pattern.  Specify attributes.
4336         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
4337         (pushexthisi_const): Fix to use alternatives.  Specify
4338         attributes.
4339         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
4340         from it.  Fix to use alternatives.  Specify attributes.
4341         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
4342         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
4343         attributes.
4344         (movsf_cf_soft): Specify attributes.
4345         (movdf_cf_soft): Add split.
4346         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
4347         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
4348         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
4349         (truncdfsf2_68881): Name pattern.  Specify attributes.
4350         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
4351         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
4352         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
4353         Specify attributes.
4354         (addsi3_5200): Fix to use alternatives.  Specify attributes.
4355         Add splits.
4356         (add<mode>3_cf, subdi_dishl32): Specify attributes.
4357         (subsi3): Add alternative for subq.l.  Specify attributes.
4358         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
4359         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
4360         attributes.
4361         (umulhisi3): Specify attributes.
4362         (mulhisisi3_z): Name pattern.  Specify attributes.
4363         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
4364         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
4365         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
4366         bsetmemqi): Specify attributes.
4367         (bsetmemqi_ext): Name pattern.  Specify attributes.
4368         (bclrmemqi): Specify attributes.
4369         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
4370         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
4371         attributes.
4372         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
4373         pattern.  Specify attributes.
4374         (jump): Specify attributes.
4375         (tablejump_internal): Name pattern.  Specify attributes.
4376         (call_value): Split into non_symbolic_call_value,
4377         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
4378         alternatives.  Specify attributes.
4379         (non_symbolic_call_value, symbolic_call_value_jsr,
4380         symbolic_call_value_bsr): New patterns.
4381         (nop, return, unlink, indirect_jump): Specify attributes.
4382         (trap): Fix condition.  Specify attributes.
4383         (ib): New pattern.
4384
4385         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
4386         (override_options): Initialize it.  Initialize m68k_sched_cpu.
4387         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
4388         (const_method): Make global, rename to m68k_const_method.
4389         (const_int_cost, output_move_const_into_data_reg): Update.
4390         (output_move_double): Parametrize to emit rtl code, rename to
4391         handle_move_double.
4392         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
4393         emit_movsi): New static functions.
4394         (output_move_double): New function with semantics of old
4395         output_move_double.
4396         (m68k_emit_move_double): New function.
4397         (m68k_sched_cpu): New variable.
4398         (attr_op_type): New enum.
4399         (sched_guess_p): New variable.
4400         (sched_address_type, sched_operand_type, sched_attr_op_type):
4401         New static functions.
4402         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
4403         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
4404         (sched_branch_type): New static variable.
4405         (m68k_sched_branch_type): New function.
4406         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
4407         (m68k_symbolic_call_var): Declare.
4408         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
4409         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
4410         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
4411         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
4412         Declare.
4413
4414 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
4415
4416         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
4417         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
4418         error if __builtin_va_arg_pack_len () wasn't optimized out during
4419         inlining.
4420         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
4421         with the number of inline's anonymous arguments.
4422         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
4423
4424 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
4425
4426         * fold-const.c (extract_muldiv_1): Do not simplify
4427         var * c * c to var.
4428
4429 2007-09-11  Jan Hubicka <jh@suse.cz>
4430
4431         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
4432         (TARGET_INTER_UNIT_CONVERSIONS): New.
4433         * i386.md (floatsi expanders): Remove redundant check for SImode
4434         source; offload to memory when asked for.
4435         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
4436         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
4437         Update conditions;
4438         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
4439         floatsidf2_mixed_memory, floatsidf2_sse_memory
4440         floatdisf2_mixed_memory, floatsisf2_sse_memory,
4441         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
4442
4443 2007-09-11  Jan Hubicka <jh@suse.cz>
4444
4445         * toplev.c (process_options): all frontends now do unit-at-a-time.
4446         * cgraphunit.c: update comments.
4447         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
4448         * c-decl.c (finish_function): use cgraph_add_new_function.
4449         * function.c (expand_function_end): We are always unit-at-a-time.
4450
4451 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
4452
4453         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
4454         settings for MIPS16.
4455         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
4456
4457 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
4458
4459         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
4460         SYMBOL_FORCE_TO_MEM constants.
4461         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
4462         (mips16_rewrite_pool_refs_info): New structure.
4463         (mips16_rewrite_pool_constant): New function, split out from...
4464         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
4465         mips16_rewrite_pool_refs_info structure rather than a pointer
4466         to a constant pool.  Force force_to_mem_operands into memory.
4467         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
4468         * config/mips/predicates.md (force_to_mem_operand): New predicate.
4469         * config/mips/constraints.md (kf): New constraint.
4470         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
4471         (*movsi_mips16): Likewise.
4472
4473 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
4474             Nigel Stephens  <nigel@mips.com>
4475             David Ung  <davidu@mips.com>
4476
4477         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
4478         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
4479         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
4480         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
4481         (mips_zero_extend_cost): New functions.
4482         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
4483         Use the new functions.  Tweak many cost estimates, both here
4484         and in the new subroutines.  Return false when the cost of the
4485         operands has not been calculated.  Check for *clear_upper32.
4486         Check for floating-point multiply-add, reciprocal and rsqrt
4487         patterns.  Handle comparison and rotation codes.
4488
4489 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
4490
4491         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
4492         override default.
4493         * config/i386/i386.c (get_dllimport_decl): Don't strip
4494         FASTCALL_PREFIX.
4495
4496 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
4497
4498         PR c/30013
4499         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
4500         declarations to top.
4501         (DFP_TO_BFP): Use for either XFmode or TFmode.
4502         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
4503         of BFP_VIA_TYPE.
4504         * config/dfp-bit.h: Include float.h.
4505         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
4506         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
4507         which doesn't mean the same thing.
4508         (BFP_KIND): Use 4 to mean TFmode.
4509         (BFP_FMT): Specify the number of decimal digits based on the
4510         number of mantissa digits.
4511         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
4512         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
4513         (STR_TO_BFP): Use strtold for XFmode or TFmode.
4514         (TFtype): Define if TFmode is supported.
4515         * doc/libgcc.texi (Decimal float library routines): Document
4516         TF conversion functions.
4517
4518 2007-09-10  Chao-ying Fu  <fu@mips.com>
4519
4520         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
4521         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
4522         (mips_emit_compare): Process fixed-point modes.
4523         (mips_pad_arg_upward): Support fixed-point types.
4524         (override_options): Allow fixed-point modes in accumulators.
4525         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
4526         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
4527         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
4528         (mips_scalar_mode_supported_p): New function to accept fixed-point
4529         modes if the width is not greater than two BITS_PER_WORD.
4530         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
4531         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
4532         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
4533         LONG_LONG_ACCUM_TYPE_SIZE): Define.
4534         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
4535         modes.
4536         ("IMODE"): New mode attribute.
4537         (mips-fixed.md): Include.
4538         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
4539         ACCUM, UACCUM.
4540         * config/mips/mips-fixed.md: New file.
4541
4542 2007-09-11  Ben Elliston  <bje@au.ibm.com>
4543
4544         * config/spu/spu.md: Formatting fixes.
4545
4546 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
4547
4548         * config/dfp-bit.c (dfp_unary_func): Delete.
4549         (dfp_unary_op): Delete.
4550         (dfp_binary_op): Use decFloat functions instead of decNumber
4551         functions for binary operations.
4552         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
4553         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
4554         DFP_C_TYPE.
4555         (dfp_compare_op): Use decFloat functions insteadof decNumber
4556         functions for comparisons.
4557         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
4558         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
4559         DFP_C_TYPE.
4560         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
4561         call to dxx_binary_op and decFloat function.
4562         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
4563         calls to dxx_binary_op and decFloat function.
4564         * config/dfp-bit.h: Include decFloat header files.
4565         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
4566         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
4567         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
4568         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
4569
4570 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
4571             Jan Sjodin <jan.sjodin@amd.com>
4572
4573         * tree-vect-analyze.c (vect_analyze_operations): Change
4574         comparison of loop iterations with threshold to less than
4575         or equal to instead of less than. Reduce
4576         min_scalar_loop_bound by one.
4577         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
4578         Change prologue and epilogue iterations estimate to vf/2,
4579         when unknown at compile-time. Change versioning guard
4580         cost to taken_branch_cost. If peeling for alignment is
4581         unknown at compile-time, change peel guard costs to one
4582         taken branch and one not-taken branch per peeled loop.
4583         If peeling for alignment is known but number of scalar loop
4584         iterations is unknown at compile-time, change peel guard
4585         costs to one taken branch per peeled loop. Change the cost
4586         model equation to consider vector iterations as the loop
4587         iterations less the prologue and epilogue iterations.
4588         Change outside vector cost check to less than or equal to
4589         zero instead of equal to zero.
4590         (vect_do_peeling_for_loop_bound): Reduce
4591         min_scalar_loop_bound by one.
4592         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
4593         TARG_COND_NOT_TAKEN_BRANCH_COST.        
4594         * config/i386/i386.h (processor_costs): Add
4595         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
4596         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
4597         vec_align_load_cost, vect_unalign_load_cost,
4598         vec_store_cost, cond_taken_branch_cost,
4599         cond_not_taken_branch_cost.
4600         Define macros for x86 costs.
4601         * config/i386/i386.c:
4602         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
4603         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
4604         scalar_to_vec_cost, vec_align_load_cost, 
4605         vect_unalign_load_cost, vec_store_cost,
4606         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
4607         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
4608         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
4609         core2_cost, generic64_cost, generic32_cost): Set to default
4610         untuned costs.
4611         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
4612         (x86_builtin_vectorization_cost): New.
4613
4614 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
4615             Ben Elliston  <bje@au.ibm.com>
4616
4617         * dfp.c: Include decimal128Local.h; 
4618         (dfp_byte_swap): Remove.
4619         (encode_decimal32, decode_decimal32): Don't handle endianness.
4620         (encode_decimal64, decode_decimal64): Ditto.
4621         (encode_decimal128, decode_decimal128): Ditto.
4622         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
4623         (__swap64): Remove.
4624         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
4625         (__swap128): Remove
4626         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
4627         * Makefile.in (DECNUM_H): Add decimal128Local.h.
4628
4629 2007-09-10  David Daney  <ddaney@avtrex.com>
4630
4631         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
4632         define_constants.
4633         (memory_barrier): Rewrote as an insn that clobbers memory.
4634
4635 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
4636
4637         * config/mips/mips.c (mips_global_pointer): Check
4638         call_really_used_regs instead of call_used_regs.
4639         (mips_save_reg_p): Likewise.  Save all call-saved registers
4640         if current_function_saves_all_registers.  Fix indentation.
4641         No longer treat $18 as a special case.
4642         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
4643
4644 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
4645
4646         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
4647         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
4648         the introductory comment.
4649         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
4650         (override_options): Don't test for it.
4651         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
4652         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
4653         * config/mips/vr.h: As for config/mips/sde.h.
4654
4655 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4656             Revital Eres  <eres@il.ibm.com>
4657
4658         * target.h (struct gcc_target.sched): New field: sms_res_mii.
4659         (struct ddg): Define.
4660         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
4661         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
4662         * config/spu/spu.c: Include ddg.h.
4663         (TARGET_SCHED_SMS_RES_MII): Define.
4664         (spu_sms_res_mii): New function to calculate mii.
4665         * modulo-sched (res_MII): Use it.
4666         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
4667
4668 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
4669
4670         * config/s390/s390.c (s390_dump_pool): Create copy of constant
4671         pool entries since they might hold values that must not be shared.
4672
4673 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
4674
4675         PR target/33369
4676         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
4677         Use 'N' operand constraint for op2.
4678         (lshr<mode>3): Ditto.
4679         (ashl<mode>3): Ditto.
4680         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
4681         (vec_shr_<mode>): Ditto.
4682         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
4683         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
4684
4685 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
4686
4687         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
4688         Change mode macro in the last real_2expN parameter to uppercase.
4689
4690 2007-09-10  Michael Matz  <matz@suse.de>
4691
4692         * tree-pass.h (pass_cselim): Declare new pass.
4693         * passes.c (init_optimization_passes): Link in pass_cselim.
4694         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
4695         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
4696         cond_store_replacement.
4697         (condstoretemp): New static variable.
4698         (cond_store_replacement): New function.
4699         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
4700         tree_ssa_phiopt_worker.
4701         (struct name_to_bb): New.
4702         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
4703         nt_init_block, nt_fini_block): New static functions.
4704         (seen_ssa_names, nontrap_set): New static variables.
4705         (gate_cselim, pass_cselim): Define new pass.
4706         * common.opt (ftree-cselim): New flag.
4707         * toplev.c (process_options): Set flag_tree_cselim if required.
4708
4709 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
4710
4711         * simplify-rtx.c (simplify_relational_operation_1): For recent
4712         canonicalization, don't recurse if op1 equals both PLUS arguments.
4713
4714 2007-09-09  David Daney  <ddaney@avtrex.com>
4715
4716         * optabs.c (expand_sync_operation):  Use plus insn if minus
4717         CONST_INT_P(val).
4718         (expand_sync_fetch_operation):  Ditto.
4719
4720 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
4721
4722         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
4723         of cvtpq2ps.
4724         (*floatsisf2_sse_vector): Likewise.
4725
4726 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
4727
4728         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
4729
4730 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
4731
4732         * config/i386/i386.h (ix86_tune_indices): Rename
4733         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
4734         (TARGET_USE_VECTOR_CONVERTS): Updated.
4735         * config/i386/i386.c: Likewise.
4736
4737 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
4738             Nigel Stephens <nigel@mips.com>
4739
4740         * doc/invoke.texi (Overall Options):  Add .sx file extension
4741         as a synonym for .S.
4742         * cppspec.c (known_suffixes): Likewise.
4743         * gcc.c (default_compilers): Likewise.
4744
4745 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4746
4747         PR target/30315
4748         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
4749         * simplify-rtx.c (simplify_relational_operation_1): Add the
4750         canonicalization from i386.h.
4751         * doc/md.texi (Canonicalization of Instructions): Document it.
4752
4753 2007-09-09  Jan Hubicka  <jh@suse.cz>
4754             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4755
4756         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
4757         (TARGET_USE_VECTOR_CONVERTS): New.
4758         * i386.md: New post-reload splitters for converting SF to DF and DF to
4759         SF.
4760         (floatsi* expander): Special case vector conversions.
4761         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
4762         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
4763         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
4764         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
4765         Disable when doing vector converts.
4766         (floatsi<mode>2_i387): Disable when
4767         * sse.md (vec_dupv2df): Export.
4768         * i386.c (ix86_tune_features): Enable SSE conversions.
4769
4770 2007-09-09  Richard Guenther  <rguenther@suse.de>
4771
4772         * tree-ssa-operands.c (add_virtual_operand): Only mark
4773         stores as has_volatile_ops if alias information is not available.
4774
4775 2007-09-09  Revital Eres  <eres@il.ibm.com>
4776
4777         * doc/contrib.texi: Add myself.
4778
4779 2007-09-09  Ira Rosen  <irar@il.ibm.com>
4780
4781         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
4782         stmt_vinfo_set_outside_of_loop_cost): New functions.
4783         * tree-vect-transform.c (vect_get_cost_fields): Remove.
4784         (vect_model_simple_cost): Call
4785         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
4786         field instead of calling vect_get_cost_fields.
4787         (vect_model_store_cost, vect_model_load_cost): Likewise.
4788
4789 2007-09-09  Revital Eres  <eres@il.ibm.com>
4790
4791         * config/rs6000/rs6000.c (paired_init_builtins): Add const
4792         declaration to bdesc_paired_preds variable.
4793         (paired_expand_builtin): Likewise.
4794
4795 2007-09-09  Revital Eres  <eres@il.ibm.com>
4796
4797         * dbgcnt.def (sms_sched_loop): New counter.
4798         * modulo-sched.c: Use sms_sched_loop instead of
4799         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
4800         perform swing modulo scheduling on.  Include dbgcnt.h.
4801         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
4802         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
4803
4804 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
4805
4806         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
4807         Substitute all uses with ...
4808         (MODEF): New mode iterator.
4809
4810         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
4811         from pre-regalloc define_insn_and_split splitter pattern.
4812         (*fix_trunc<mode>_i387_1): Ditto.
4813         (*fistdi2_1): Ditto.
4814         (*fist<mode>2_1): Ditto.
4815         (frndintxf2_floor): Ditto.
4816         (*fist<mode>2_floor_1): Ditto.
4817         (frndintxf2_ceil): Ditto.
4818         (*fist<mode>2_ceil_1): Ditto.
4819         (frndintxf2_trunc): Ditto.
4820         (frndintxf2_mask_pm): Ditto.
4821
4822         (prologue): Use (const_int 0) as never generated filler insn.
4823         (epilogue): Ditto.
4824         (sibcall_epilogue): Ditto.
4825         (eh_return_si): Ditto.
4826         (eh_return_di): Ditto.
4827
4828         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
4829         using MODEF mode iterator.
4830         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
4831         using MODEF mode iterator.
4832         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
4833         using MODEF mode iterator.
4834         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
4835         Macroize expander using MODEF mode iterator.
4836
4837         (zero_extendsidi2): Remove operand constraints from expander.
4838         (smuldi3_highpart): Ditto.
4839         (indirect_jump): Ditto.
4840         (tablejump): Ditto.
4841         (rsqrtsf2): Ditto.
4842         * config/i386/sse.md (storentv4sf): Ditto.
4843         (storentv2df): Ditto.
4844         (storentv2di): Ditto.
4845         (storentsi): Ditto.
4846         (sse2_cvtpd2ps): Ditto.
4847         (vec_interleave_highv16qi): Ditto.
4848         (vec_interleave_lowv16qi): Ditto.
4849         (vec_interleave_highv8hi): Ditto.
4850         (vec_interleave_lowv8hi): Ditto.
4851         (vec_interleave_highv4si): Ditto.
4852         (vec_interleave_lowv4si): Ditto.
4853         (vec_interleave_highv2di): Ditto.
4854         (vec_interleave_lowv2di): Ditto.
4855         (sse2_maskmovdqu): Ditto.
4856         * config/i386/mmx.md (mmx_maskmovq): Ditto.
4857
4858 2007-09-09  Ira Rosen  <irar@il.ibm.com>
4859
4860         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
4861         (struct _slp_tree, struct _slp_instance): Define new data structures
4862         along macros for their access.
4863         (struct _loop_vec_info): Define new fields: strided_stores,
4864         slp_instances, and slp_unrolling_factor along macros for their access.
4865         (enum slp_vect_type): New.
4866         (struct _stmt_vec_info): Define new field, slp_type, and macros for
4867         its access.
4868         (STMT_VINFO_STRIDED_ACCESS): New macro.
4869         (vect_free_slp_tree): Declare.
4870         (vectorizable_load): Add an argument of type slp_tree.
4871         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
4872         vectorizable_assignment): Likewise.
4873         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
4874         Declare (make extern).
4875         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
4876         (new_loop_vec_info): Likewise.
4877         (destroy_loop_vec_info): Free memory allocated for SLP structures.
4878         * tree-vect-analyze.c: Include recog.h.
4879         (vect_update_slp_costs_according_to_vf): New.
4880         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
4881         functions. For not pure SLP stmts with strided access check that the
4882         group size is power of 2. Update the vectorization factor according to
4883         SLP. Call vect_update_slp_costs_according_to_vf.
4884         (vect_analyze_group_access): New.
4885         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
4886         (vect_free_slp_tree): New functions.
4887         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
4888         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
4889         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
4890         vect_detect_hybrid_slp): Likewise.
4891         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
4892         and vect_detect_hybrid_slp.
4893         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
4894         SLP costs into account.
4895         (vect_get_cost_fields): New function.
4896         (vect_model_simple_cost): Make extern, add SLP parameter and handle
4897         SLP.
4898         (vect_model_store_cost, vect_model_load_cost): Likewise.
4899         (vect_get_constant_vectors): New function.
4900         (vect_get_slp_vect_defs, vect_get_slp_defs,
4901         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
4902         vect_get_vec_defs): Likewise.
4903         (vectorizable_reduction): Don't handle SLP for now.
4904         (vectorizable_call): Don't handle SLP for now. Add argument to
4905         vect_model_simple_cost.
4906         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
4907         get SLPed and vectorized defs). Fix indentation and spacing.
4908         (vectorizable_assignment): Handle SLP.
4909         (vectorizable_induction): Don't handle SLP for now.
4910         (vectorizable_operation): Likewise.
4911         (vectorizable_type_demotion): Add argument to
4912         vect_model_simple_cost.
4913         (vectorizable_type_promotion): Likewise.
4914         (vectorizable_store, vectorizable_load): Handle SLP.
4915         (vectorizable_condition): Don't handle SLP for now.
4916         (vect_transform_stmt): Add a new argument for SLP. Check that there is
4917         no SLP transformation required for unsupported cases. Add SLP
4918         argument for supported cases.
4919         (vect_remove_stores): New function.
4920         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
4921         (vect_transform_loop): Schedule SLP instances.
4922         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
4923
4924 2007-09-09  Andrew Haley  <aph@redhat.com>
4925
4926         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
4927         signed optab.
4928
4929 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
4930
4931         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
4932         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
4933         Similar for what label_refs can go in the JUMP_TARGET field.  Split
4934         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
4935         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
4936         REG_LABEL when replacing an operand with a LABEL_REF for a
4937         non-jump insn.
4938         (subst_reloads): When replacing a LABEL_REG with a register,
4939         instead of generating a REG_LABEL note, assert that there already
4940         is one or that the label is a known target for the insn.
4941         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
4942         note, check the JUMP_LABEL field.  Remove "else" after return.
4943         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
4944         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
4945         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
4946         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
4947         insns.  Iterate over all notes; don't assume there's only one.
4948         * cse.c (recorded_label_ref): Adjust comment to refer to
4949         REG_LABEL_OPERAND.
4950         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
4951         insns, not just NONJUMP_INSN_P.
4952         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
4953         isn't a jump target.
4954         * jump.c (rebuild_jump_labels): Adjust head comment.
4955         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
4956         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
4957         (mark_all_labels): For JUMP_P insns without a target, check if the
4958         the target is noted on the previous nonjump insn.
4959         (mark_jump_label_1): New function, guts from mark_jump_label.
4960         <case IF_THEN_ELSE>: Handle first operand as a non-target when
4961         marking jump target labels.
4962         <case LABEL_REF>: Adjust for whether to generate a
4963         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
4964         For 'E' format rtl, iterate in descending element order.
4965         (delete_related_insns): Handle both REG_LABEL_TARGET and
4966         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
4967         reference count, delete and fallthrough.  Move finding-next-
4968         non-deleted insn last in the function.  Look at all INSN_P insns
4969         for REG_LABEL_OPERAND notes.
4970         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
4971         JUMP.
4972         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
4973         JUMP_LABEL, output the INSN_UID of it.
4974         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
4975         and/or REG_LABEL_TARGET.
4976         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
4977         with jump.c copy by only adding notes for labels actually
4978         referenced in the insn.
4979         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
4980         usage count increment; handle all INSN_P trial insns.
4981         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
4982         notes.
4983         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
4984         REG_LABEL_TARGET and REG_LABEL_OPERAND.
4985         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
4986         REG_LABEL_OPERAND.
4987         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
4988         JUMP_P insns and REG_LABEL_OPERAND everywhere.
4989         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
4990         on all INSN_P insns.
4991         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
4992         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
4993         REG_LABEL_OPERAND notes.
4994         * reload1.c (calculate_needs_all_insns): Adjust comments.
4995         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
4996         * config/alpha/alpha.md (split for load of an address into a
4997         four-insn sequence on Unicos/Mk): Adjust to use
4998         REG_LABEL_OPERAND.
4999         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
5000
5001 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5002
5003         Revert:
5004         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5005         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
5006         FOR_BB_INSNS_SAFE instead of for loop.
5007         * cse.c (cse_extended_basic_block): Likewise.
5008         * postreload.c (reload_cse_regs_1): New variable next. Make sure
5009         that the for loop does not invoke NEXT_INSN on a deleted insn.
5010         * function.c (instantiate_virtual_regs): Likewise.
5011         * lower-subreg.c (remove_retval_note): Likewise.
5012         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
5013         FOR_BB_INSNS.
5014         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
5015         a deleted insn.
5016         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
5017         insn, if it's a jump.
5018         (try_redirect_by_replacing_jump): New variable jump_p. Call
5019         tablejump_p before delete_insn_chain.
5020         * reload1.c (reload): New variable next. Make sure that the for
5021         loop does not invoke NEXT_INSN on a deleted insn.
5022         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
5023         (delete_output_reload): New variable prev. Make sure the the for
5024         loops do not invoke PREV_INSN on a deleted insn.
5025
5026 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5027
5028         * pa/constraints.md: Remove 'X' from unused letters comment.
5029
5030 2007-09-08  Richard Guenther  <rguenther@suse.de>
5031
5032         * tree-tailcall.c (find_tail_calls): If we don't have aliases
5033         computed check stmt_ann->references_memory instead of counting
5034         virtual operands.
5035  
5036 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
5037
5038         * cse.c (fold_rtx): Use validate_unshare_change() instead of
5039         validate_change() in one more case.
5040
5041 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
5042
5043         PR tree-optimization/32283
5044         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
5045         estimated_loop_iterations.
5046         (determine_use_iv_cost_condition): Decrease cost of expressions
5047         used in iv elimination.
5048
5049 2007-09-08  Richard Guenther  <rguenther@suse.de>
5050
5051         * tree-cfg.c (verify_gimple_expr): Avoid building new
5052         pointer types, use TYPE_POINTER_TO if available instead.
5053
5054 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
5055
5056         PR target/33329
5057         PR rtl-optimization/26449
5058         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
5059         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
5060         split1 pass.
5061         (mulv16qi3): Implement as define_insn_and_split pattern instead of
5062         define_expand.  Split insn in split1 pass.
5063         (mulv2di3): Ditto.
5064
5065 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
5066
5067         PR tree-optimization/33301
5068         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
5069         when relevant.
5070
5071 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
5072
5073         PR tree-optimization/32183
5074         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
5075
5076         * tree-ssa-reassoc.c: Include cfgloop.h.
5077         (is_reassociable_op): Add a loop argument and return true only
5078         for inside loop.
5079         (linearize_expr): Updated.
5080         (should_break_up_subtract): Likewise.
5081         (linearize_expr_tree): Likewise.
5082         (init_reassoc): Call loop_optimizer_init with
5083         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
5084         with CDI_DOMINATORS.
5085         (fini_reassoc): Call loop_optimizer_finalize.
5086
5087 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
5088
5089         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
5090         if there is no i-cache.
5091
5092 2007-09-07  Richard Guenther  <rguenther@suse.de>
5093
5094         Reapply
5095         2007-09-06  Richard Guenther  <rguenther@suse.de>
5096
5097         PR tree-optimization/32586
5098         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
5099         folding if nothing changed.
5100         (simplify_unary_expression): New function.  Do tree combining
5101         on conversion like codes.
5102         (try_to_simplify): Call it.
5103
5104 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5105
5106         PR target/33286
5107         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
5108         (__gthread_active,__gthread_start, __gthread_active_init): New.
5109         * gthr-posix95.h: Likewise.
5110
5111 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
5112
5113         * function.h (struct function): Rename calls_unwind_init
5114         to saves_all_registers.
5115         (current_function_saves_all_registers): Renamed from
5116         current_function_calls_unwind_init.
5117         * reload1.c (reload): Set current_function_saves_all_registers.
5118         * except.c (expand_builtin_unwind_init): Likewise.
5119         * config/m68k/m68k.c (m68k_save_reg): Use
5120         current_function_saves_all_registers to save pic register.
5121
5122 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
5123
5124         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
5125         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
5126
5127         Reapply reverted changes:
5128
5129         2007-09-06  Jan Hubicka  <jh@suse.cz>
5130  
5131         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
5132         of real_2expN.
5133
5134         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5135
5136         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
5137         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
5138
5139         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
5140
5141         * optabs.c (expand_float): Convert unsigned integer as signed only
5142         if it provides sufficient accuracy; add mode argument to real_2expN.
5143         (expand_fix): Fix comment typos; extend binary float into mode
5144         wider than destination for converion to unsigned integer; add mode
5145         argument to real_2expN.
5146         * real.c (real_2expN): Add mode argument to special-case decimal
5147         float values.
5148         * real.h (real_2expN): Ditto.
5149         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
5150         real_2expN.
5151         (fixed_from_string): Ditto.
5152         (fixed_to_decimal): Ditto.
5153         (fixed_convert_from_real): Ditto.
5154         (real_convert_from_fixed): Ditto.
5155         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
5156         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
5157         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
5158         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
5159
5160 2007-09-07  Diego Novillo  <dnovillo@google.com>
5161
5162         * tree-flow.h (const_block_stmt_iterator): Remove.
5163         Update all users to use block_stmt_iterator.
5164         * tree-iterator.h (const_tree_stmt_iterator): Remove.
5165         Update all users to use tree_stmt_iterator.
5166
5167 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
5168
5169         * config/mips/mips.c (mips_set_current_function): Temporarily
5170         make this a no-op to fix bootstrap errors, pending rewrite.
5171
5172 2007-09-07  Jan Hubicka  <jh@suse.cz>
5173
5174         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
5175         in the pass.
5176
5177 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
5178
5179         PR tree-optimization/33299
5180         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
5181         uses for all relevant loop-exit phis, not just the first.
5182
5183 2007-09-07  Richard Guenther  <rguenther@suse.de>
5184
5185         PR middle-end/33330
5186         * tree-ssa-operands.c (access_can_touch_variable): An access
5187         of the form (*p)[0] can touch a variable of same size.
5188
5189 2007-09-07  Jan Hubicka  <jh@suse.cz>
5190
5191         * passes.c (init_optimization_passes): Add simple dce and addressable
5192         passes.
5193         * tree-ssa.c (execute_update_addresses_taken): New function.
5194         (pass_update_address_taken): New.
5195         * tree-ssa-dse.c (execute_simple_dse): New function.
5196         (pass_simple_dse): New.
5197         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
5198
5199 2007-09-07  Tobias Burnus  <burnus@net-b.de>
5200
5201         PR middle-end/33321
5202         * doc/invoke.texi: Fix -Wstrict-overflow= table.
5203
5204 2007-09-07  Richard Guenther  <rguenther@suse.de>
5205
5206         Revert
5207         2007-09-06  Richard Guenther  <rguenther@suse.de>
5208
5209         PR tree-optimization/32586
5210         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
5211         folding if nothing changed.
5212         (simplify_unary_expression): New function.  Do tree combining
5213         on conversion like codes.
5214         (try_to_simplify): Call it.
5215
5216 2007-09-07  Richard Guenther  <rguenther@suse.de>
5217             Uros Bizjak  <ubizjak@gmail.com>
5218
5219         PR tree-optimization/32821
5220         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
5221         NULL in the call to set_bb_stmt_list.
5222
5223 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5224
5225         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
5226         float calls here, rather than leaving some to the caller.
5227         Use call_internal_direct and call_value_internal_direct.
5228         * config/mips/mips.md (call_internal_direct): New pattern.
5229         (call_value_internal_direct): Likewise.
5230
5231 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5232
5233         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
5234         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
5235         to 0 for MIPS16.
5236         (override_options): Set mips_base_move_loop_invariants.
5237
5238 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5239
5240         * config/mips/mips.opt (mcode-readable=): Move to keep list
5241         alphabetical.
5242
5243 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
5244
5245         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
5246         and -mgpopt options.  Adjust the -G documentation to match.
5247         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
5248         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
5249         function, split out from mips_classify_symbol.  Return false for
5250         !TARGET_LOCAL_SDATA.
5251         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
5252         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
5253         (override_options): Check whether the -mgpopt setting is consistent
5254         with the other flags.
5255         (symbolic_expression_p): Delete.
5256         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
5257         and default_elf_select_rtx_section.
5258         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
5259         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
5260         external data and TARGET_EXTERN_SDATA.
5261
5262 2007-09-07  Tobias Burnus  <burnus@net-b.de>
5263
5264         PR fortran/33303
5265         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
5266
5267 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5268
5269         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
5270         FOR_BB_INSNS_SAFE instead of for loop.
5271         * cse.c (cse_extended_basic_block): Likewise.
5272         * postreload.c (reload_cse_regs_1): New variable next. Make sure
5273         that the for loop does not invoke NEXT_INSN on a deleted insn.
5274         * function.c (instantiate_virtual_regs): Likewise.
5275         * lower-subreg.c (remove_retval_note): Likewise.
5276         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
5277         FOR_BB_INSNS.
5278         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
5279         a deleted insn.
5280         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
5281         insn, if it's a jump.
5282         (try_redirect_by_replacing_jump): New variable jump_p. Call
5283         tablejump_p before delete_insn_chain.
5284         * reload1.c (reload): New variable next. Make sure that the for
5285         loop does not invoke NEXT_INSN on a deleted insn.
5286         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
5287         (delete_output_reload): New variable prev. Make sure the the for
5288         loops do not invoke PREV_INSN on a deleted insn.
5289
5290 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
5291
5292         * cgraphbuild.c (rebuild_cgraph_edges): Export.
5293         * cgraph.h (rebuild_cgraph_edges): Declare.
5294         * tree-pass.h (pass_expand_omp_ssa): New.
5295         * omp-low.c (find_omp_clause): Export.
5296         (copy_var_decl): Split from omp_copy_decl_2.
5297         (build_omp_barrier): Return the call to emit instead of emitting
5298         it directly.
5299         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
5300         build_omp_barrier.
5301         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
5302         expand_omp_for_generic, expand_omp_for_static_nochunk,
5303         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
5304         Adapted to work on SSA form.
5305         (execute_expand_omp): Do not invalidate dominance information.
5306         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
5307         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
5308         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
5309         a gimple_reg.
5310         (force_gimple_operand): Allow gimplifying code expressions without
5311         value.
5312         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
5313         * common.opt (fopenmp-ssa): New.
5314         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
5315         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
5316         * tree-cfg.c: Include tree-inline.h.
5317         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
5318         (replace_by_duplicate_decl, replace_ssa_name,
5319         mark_virtual_ops_in_region): New functions.
5320         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
5321         to work on SSA form.
5322         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
5323         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
5324         constructs.
5325
5326 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5327
5328         * tree-loop-linear.c: Include obstack.h.
5329         (linear_transform_loops): New obstack lambda_obstack.
5330         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
5331         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
5332         and free afterwards.
5333         * lambda.h (struct obstack): New forward declaration.
5334         (lambda_linear_expression_new): New parameter of type struct
5335         obstack *.
5336         (lambda_loopnest_new): Likewise.
5337         (lambda_loopnest_transform): Likewise.
5338         (lambda_body_vector_new): Likewise.
5339         (lambda_body_vector_compute_new): Likewise.
5340         (gcc_loopnest_to_lambda_loopnest): Likewise.
5341         (lambda_loopnest_to_gcc_loopnest): Likewise.
5342         * lambda-code.c: Include obstack.h.
5343         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
5344         allocation of ret.
5345         (lambda_body_vector_new): Likewise.
5346         (lambda_linear_expression_new): Likewise.
5347         (lambda_lattice_new): Likewise.
5348         (lambda_loopnest_new): Likewise.  Additionally use obstack to
5349         allocate LN_LOOPS(ret).
5350         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
5351         it to lambda_lattice_new.
5352         (lambda_body_vector_compute_new): New parameter lambda_obstack.
5353         Pass it to lambda_body_vector_new.
5354         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
5355         it to lambda_lattice_new.
5356         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
5357         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
5358         (lambda_compute_target_space): Likewise.
5359         (lambda_compute_auxillary_space): New parameter lambda_obstack.
5360         Pass it to lambda_lattice_compute_base and
5361         compute_nest_using_fourieer_motzkin.
5362         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
5363         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
5364         and lambda_lattice_compute_target_space.
5365         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
5366         Pass it to lambda_linear_expression_new.
5367         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
5368         to gcc_tree_to_linear_expression.
5369         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
5370         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
5371         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
5372         Pass it to lambda_body_vector_new and
5373         lambda_body_vector_compute_new.
5374         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
5375         (lambda-code.o): Likewise.
5376
5377 2007-09-06  Chao-ying Fu  <fu@mips.com>
5378
5379         * ginclude/stdfix.h: New file.
5380         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
5381         (convert.o): Add dependence on fixed-value.h.
5382         * c-convert.c (convert): Support FIXED_POINT_TYPE.
5383         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
5384         to define fixed-point constants.
5385         (c_cpp_builtins): Define fixed-point constants.
5386         * convert.c (fixed-value.h): New include.
5387         (convert_to_real): Update comment to include fixed-point.
5388         Support FIXED_POINT_TYPE.
5389         (convert_to_integer): Update comment to include fixed-point.
5390         Support FIXED_POINT_TYPE.
5391         (convert_to_complex): Support FIXED_POINT_TYPE.
5392         (convert_to_fixed): New function.
5393         * convert.h (convert_to_fixed): Declare.
5394         * genopinit.c: Add comment about $Q for only fixed-point modes.
5395         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
5396         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
5397         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
5398         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
5399         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
5400         usneg_optab for fixed-point modes.
5401         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
5402         modes.
5403         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
5404         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
5405         unsigned saturation optabs, when type is saturating.
5406         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
5407         (expand_fixed_convert): New function.
5408         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
5409         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
5410         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
5411         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
5412         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
5413         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
5414         functions.
5415         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
5416         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
5417         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
5418         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
5419         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
5420         satfractuns_optab.
5421         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
5422         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
5423         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
5424         fractuns, satfractuns.
5425         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
5426         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
5427         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
5428         OTI_ssmsub_widen,  OTI_usmsub_widen.
5429         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
5430         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
5431         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
5432         umsub_widen_optab, usmsub_widen_optab): Define.
5433         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
5434         COI_satfractuns.
5435         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
5436         Define.
5437         (expand_fixed_convert): Declare.
5438         * expr.c (convert_move): Support the move of fixed-point modes.
5439         (emit_move_insn_1): Handle fixed-point mode to move via integer.
5440         (categorize_ctor_elements_1): Handle FIXED_CST.
5441         (count_type_elements): Handle FIXED_POINT_TYPE.
5442         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
5443         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
5444         Support FIXED_CST.
5445         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
5446         multiply and add/subtract for fixed-point types.
5447         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
5448         mode, we jump to binop directly.
5449         Support FIXED_CONVERT_EXPR.
5450         (do_store_flag): Check FIXED_CST to put a constant second.
5451         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
5452         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
5453         (const_vector_from_tree): Support FIXED_CST.
5454         * doc/extend.texi (Fixed-Point): New node.
5455         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
5456         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
5457         satfract, fractuns, satfractuns): Document them.
5458
5459 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
5460
5461         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
5462         addresses into I registers.
5463
5464 2007-09-06  Jan Hubicka  <jh@suse.cz>
5465             Andreas Tobler  <a.tobler@schweiz.org>
5466
5467         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
5468         sharing.
5469         (machopic_legitimize_pic_address): Likewise.
5470
5471 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5472             Jan Hubicka  <jh@suse.cz>
5473
5474         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
5475         instead of ufloat_optab->handlers directly.
5476         (floatdidf2): Likewise.
5477
5478 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
5479
5480         * config/mips/mips.c:  Include diagnostic.h.
5481         (mips_set_current_function): Check errorcount and sorrycount 
5482         before generating RTL.
5483
5484 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5485
5486         PR target/33256
5487         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
5488         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
5489         (print_operand_reloc): Likewise.
5490
5491 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
5492
5493         Revert:
5494
5495         2007-09-06  Jan Hubicka  <jh@suse.cz>
5496  
5497         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
5498         real_2expN.
5499
5500         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5501
5502         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
5503         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
5504
5505         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
5506
5507         * optabs.c (expand_float): Convert unsigned integer as signed only
5508         if it provides sufficient accuracy; add mode argument to real_2expN.
5509         (expand_fix): Fix comment typos; extend binary float into mode
5510         wider than destination for converion to unsigned integer; add mode
5511         argument to real_2expN.
5512         * real.c (real_2expN): Add mode argument to special-case decimal
5513         float values.
5514         * real.h (real_2expN): Ditto.
5515         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
5516         real_2expN.
5517         (fixed_from_string): Ditto.
5518         (fixed_to_decimal): Ditto.
5519         (fixed_convert_from_real): Ditto.
5520         (real_convert_from_fixed): Ditto.
5521         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
5522         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
5523         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
5524         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
5525
5526 2007-09-06  Tom Tromey  <tromey@redhat.com>
5527
5528         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
5529         * c-pch.c (c_common_read_pch): Restore current location after
5530         reading PCH file.
5531         * tree.c (expand_location): Update.
5532         (expr_filename): Changed return type.  Unified the two cases.
5533         (expr_lineno): Likewise.
5534         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
5535         as lvalues.
5536         * toplev.c (line_table): Changed type.
5537         (general_init): Update.
5538         (realloc_for_line_map): New function.
5539         (general_init): Allocate line_table using GC.
5540         * fix-header.c (line_table): Changed type.
5541         (read_scan_file): Update.
5542         (read_scan_file): Update.
5543         * c-ppoutput.c (maybe_print_line): Update.
5544         (print_line): Update.
5545         (cb_line_change): Update.
5546         (cb_define): Update.
5547         (pp_file_change): Update.
5548         * c-opts.c (c_common_init_options): Update.
5549         (finish_options): Update.
5550         (push_command_line_include): Update.
5551         * c-lex.c (cb_line_change): Update.
5552         (cb_def_pragma): Update.
5553         (cb_define): Update.
5554         (cb_undef): Update.
5555         (c_lex_with_flags): Use cpp_get_token_with_location.
5556         * input.h (line_table): Changed type.
5557         (location_from_locus): New macro.
5558         * tree.h (EXPR_FILENAME): No longer an lvalue.
5559         (EXPR_LINENO): Likewise.
5560         (expr_locus, set_expr_locus): Declare separately for
5561         USE_MAPPED_LOCATION.
5562         (expr_filename, expr_lineno): Changed return type.
5563         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
5564         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
5565         (expand_gimple_basic_block): Likewise.
5566         * final.c (final_scan_insn): Use expanded_location.
5567
5568 2007-09-06  Richard Guenther  <rguenther@suse.de>
5569
5570         PR tree-optimization/32586
5571         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
5572         folding if nothing changed.
5573         (simplify_unary_expression): New function.  Do tree combining
5574         on conversion like codes.
5575         (try_to_simplify): Call it.
5576         * builtins.c (fold_builtin_cexp): Fold the built expressions.
5577         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
5578
5579 2007-09-06  Jan Hubicka  <jh@suse.cz>
5580
5581         PR target/33318
5582         * cse.c (fold_rtx): Avoid invalid sharing.
5583
5584 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5585
5586         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
5587         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
5588
5589 2007-09-06  Revital Eres  <eres@il.ibm.com>
5590
5591         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
5592         Fix offsettable memory reference for 750CL.
5593
5594 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
5595
5596         * reload.c (find_reloads_address_1): Try to preserve original
5597         base/index regclass of operands.
5598         * regrename.c (scan_rtx_address): Likewise.
5599         (replace_oldest_value_addr): Likewise.
5600
5601 2007-09-06  Richard Guenther  <rguenther@suse.de>
5602
5603         PR tree-optimization/33302
5604         * domwalk.c (walk_dominator_tree): The exit block is
5605         interesting even if it is not reachable.
5606
5607 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
5608
5609         PR middle-end/33306
5610         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
5611
5612 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
5613
5614         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
5615         robustness.
5616
5617 2007-09-05  Ian Lance Taylor  <iant@google.com>
5618
5619         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
5620         when printing.
5621         (dump_generic_node): Likewise.
5622         * print-rtl.c (print_decl_name): Likewise.
5623         * print-tree.c (print_node_brief): Likewise.
5624         (print_node): Likewise.
5625         * Makefile.in (RTL_BASE_H): Add alias.h.
5626         (TREE_H): Likewise.
5627
5628 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
5629
5630         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
5631         Defined.
5632         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
5633         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
5634
5635 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
5636
5637         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
5638         (tm_defines): Define UCLIBC_DEFAULT to 1.
5639         (extra_options): Add linux.opt.
5640         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
5641         (CRT_CALL_STATIC_FUNCTION): Likewise.
5642         (NO_IMPLICIT_EXTERN_C): Likewise.
5643         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
5644         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
5645         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
5646         (ENDFILE_SPEC): Don't define.
5647         (LIB_SPEC): Likewise.
5648         (CRT_CALL_STATIC_FUNCTION): Likewise.
5649         (NO_IMPLICIT_EXTERN_C): Likewise.
5650         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
5651         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
5652
5653 2007-09-06  Jan Hubicka  <jh@suse.cz>
5654
5655         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
5656         real_2expN.
5657
5658 2007-09-06  Jan Hubicka  <jh@suse.cz>
5659
5660         * opts.c (common_handle_option): Enable inlining functions for
5661         -fprofile-generate.
5662
5663 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
5664
5665         * builtin-attrs.def (ATTR_NONNULL_3): New.
5666         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
5667         ATTR_NOTHROW_NONNULL_##FA.
5668         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
5669         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
5670         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
5671         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
5672         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
5673         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
5674         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
5675         New.
5676         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
5677         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
5678         ATTR_FORMAT_NOTHROW_3_4): Remove.
5679         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
5680         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
5681         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
5682         instead of ATTR_FORMAT_*_*.
5683
5684 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
5685
5686         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
5687         parts re-used for REG_FRAME_RELATED_EXPR.
5688
5689 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
5690
5691         * optabs.c (expand_float): Convert unsigned integer as signed only
5692         if it provides sufficient accuracy; add mode argument to real_2expN.
5693         (expand_fix): Fix comment typos; extend binary float into mode
5694         wider than destination for converion to unsigned integer; add mode
5695         argument to real_2expN.
5696         * real.c (real_2expN): Add mode argument to special-case decimal
5697         float values.
5698         * real.h (real_2expN): Ditto.
5699         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
5700         real_2expN.
5701         (fixed_from_string): Ditto.
5702         (fixed_to_decimal): Ditto.
5703         (fixed_convert_from_real): Ditto.
5704         (real_convert_from_fixed): Ditto.
5705         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
5706         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
5707         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
5708         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
5709
5710 2007-09-05  Ian Lance Taylor  <iant@google.com>
5711
5712         * init-regs.c (initialize_uninitialized_regs): Call
5713         emit_insn_before rather than add_insn_before.
5714
5715 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
5716
5717         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
5718         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
5719         * tree-inline.h (copy_body_data): Add call_expr field.
5720         * tree-inline.c (expand_call_inline): Initialize call_expr.
5721         (copy_bb): Append anonymous inline fn arguments to arguments
5722         when inlining a CALL_EXPR_VA_ARG_PACK call.
5723         * builtins.c (expand_builtin): Issue an error if
5724         BUILT_IN_VA_ARG_PACK is seen during expand.
5725         (fold_call_expr, fold_builtin_call_array): Don't fold
5726         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
5727         __builtin_va_arg_pack () call as last argument.
5728         * gimplify.c (gimplify_call_expr): If last argument to a vararg
5729         function is __builtin_va_arg_pack (), decrease number of call
5730         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
5731         * expr.c (expand_expr_real_1): Issue an error if
5732         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
5733         * tree-pretty-print.c (dump_generic_node): Handle printing
5734         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
5735         * doc/extend.texi (__builtin_va_arg_pack): Document.
5736
5737 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
5738
5739         PR tree-optimization/21513
5740         * builtins.c (build_builtin_expect_predicate): New function.
5741         (fold_builtin_expect): Add argument for expected value.
5742         Distribute __builtin_expect over short-circuiting operations.
5743         Fold nested builtin_expects.
5744         (fold_builtin_2): Adjust call to fold_builtin_expect.
5745
5746 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5747
5748         PR web/32965
5749         PR tree-optimization/13756
5750         * doc/invoke.texi (Options That Control Optimization): Document
5751         -ftree-dse.
5752
5753 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
5754
5755         * gcc/config/i386/cpuid.h: New file.
5756         * gcc/config/i386/driver-i386.c: Include cpuid.h.
5757         (describe_cache): Shrink size and line strings to 100 bytes.
5758         (detect_caches_amd): Return "" for unsupported max_ext_level.
5759         Use __cpuid function.
5760         (detect_caches_intel): Return "" for unsupported max_level.
5761         Use __cpuid function.
5762         (host_detect_local_cpu): Change feature flag variables to
5763         unsigned int.  Initialize only extended feature flag variables.
5764         Use __get_cpuid_max to determine max supported cpuid level.
5765         Use __cpuid function to determine supported features.  Fix
5766         calculation of family id.  Remove is_amd and check signature
5767         directly.  Check for Geode signature.  Handle family 4 id.
5768         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
5769         cpu discovery code to lower part of the function.
5770         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
5771         for sub-architecture.
5772         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
5773         [PROCESSOR_K8]: Add k8-sse3 architecture.
5774         [PROCESSOR_NOCONA]: Remove.
5775         [PROCESSOR_GENERIC64]: Ditto.
5776         * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
5777         * gcc/config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
5778         to check for SSE and FXSAVE support.
5779         * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
5780         Add -minline-all-stringops.
5781         * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
5782         (x86_64-*-*): Ditto.
5783
5784 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
5785
5786         * config/bfin/linux-unwind.h: New file.
5787         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
5788         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
5789
5790 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5791
5792         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
5793         * stmt.c: Include alloc-pool.h.
5794         (struct case_node): Remove GTY marker.
5795         (add_case_node): New parameter case_node_pool.  Use it for
5796         allocation of r.
5797         (expand_case): New allocation pool case_node_pool.  Initialize it,
5798         pass to add_case_node and free it.
5799
5800 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
5801             David Ung  <davidu@mips.com>
5802             Nigel Stephens <nigel@mips.com>
5803
5804         Add mips16/nomips16 function attributes and -mflip-mips16 option
5805         for testing mixed-mode compilation.
5806
5807         * config/mips/mips.opt (mflip-mips16): New.
5808
5809         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
5810         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
5811
5812         * config/mips/mips.c (mips_base_target_flags): New.
5813         (mips_base_mips16): New.
5814         (mips_base_schedule_insns): New.
5815         (mips_base_reorder_blocks_and_partition): New.
5816         (mips_base_align_loops): New.
5817         (mips_base_align_jumps): New.
5818         (mips_base_align_functions): New.
5819         (mips16_flipper): New.
5820         (mips_attribute_table): Add "mips16" and "nomips16" entries.
5821         (TARGET_SET_CURRENT_FUNCTION): Define.
5822         (mips_mips16_type_p, mips_nomips16_type_p): New.
5823         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
5824         (mips_function_ok_for_sibcall): Make it deal with functions with
5825         mips16 attributes.
5826         (mips_init_split_addresses): New, split out from override_options.
5827         (mips_init_relocs): New, split out from override_options.
5828         (was_mips16_p): New.
5829         (mips_set_mips16_mode): New, split out from override_options.
5830         (mips_set_current_function): New.
5831         (override_options): Add sorry for unsupported mips16/pic
5832         combination.  Remove error for mips16/dsp combination.  Save
5833         base option settings.  
5834         (mips_file_start): Move mips16 mode setting output from here....
5835         (mips_output_function_prologue): ....to here.
5836         (mips_output_mi_thunk): Check for mips16 function.
5837         (build_mips16_function_stub): Don't set .mips16 here.
5838         (build_mips16_call_stub): Likewise.
5839         (mips_expand_builtin): Error in mips16 mode.
5840         (mips_use_mips16_mode_p): New.
5841         (mips_encode_section_info): Check for mips16 function, and set
5842         SYMBOL_REF_FLAGS accordingly.
5843
5844         * doc/extend.texi (Function Attributes): Document new
5845         mips16/nomips16 attributes.
5846         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
5847         (MIPS Options): Document -mflip-mips16.
5848
5849 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
5850
5851         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
5852         if we encounter TLS address in MIPS16 mode.
5853         (mips_legitimize_const_move): Check cannot_force_const_mem for
5854         the (const (plus symbol offset)) case; this forces invalid TLS
5855         address in MIPS16 mode to be caught by the above call to sorry.
5856         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
5857         because that now enables emutls, which is not ABI compatible
5858         with native TLS in non-MIPS16 mode.
5859
5860 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
5861
5862         Add target hook invoked when cfun changes.
5863
5864         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
5865         * target.h (struct gcc_target): Add set_current_function.
5866         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
5867         (TARGET_INITIALIZER): Add initializer for set_current_function.
5868         * tree.h (push_struct_function): New.
5869         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
5870         * function.h: Here.
5871         (set_cfun): Declare.
5872         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
5873         * function.c: Here.
5874         (push_function_context_to): Use allocate_struct_function
5875         to create null context, not init_dummy_function_start.  Use set_cfun.
5876         (pop_function_context_from): Use set_cfun.
5877         (in_dummy_function): New.
5878         (invoke_set_current_function_hook): New.
5879         (set_cfun): New.
5880         (push_cfun, pop_cfun): Use set_cfun.
5881         (push_struct_function): New.
5882         (allocate_struct_function): Call invoke_set_current_function_hook
5883         before returning.
5884         (prepare_function_start): Don't set cfun here.  Remove unused
5885         argument; fix all callers.
5886         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
5887         push_struct_function.
5888         (init_function_start): Set cfun here.
5889         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
5890         * omp-low.c (create_omp_child_function): Use push_struct_function
5891         and pop_cfun to save/restore state.
5892         (expand_omp_parallel): Remove unused saved_cfun variable.
5893         * cgraphunit.c (ipa_passes): Use set_cfun.
5894         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
5895         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
5896         * matrix-reorg.c (transform_allocation_sites): Likewise.
5897         (matrix_reorg): Use set_cfun.
5898         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
5899         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
5900         assignment to cfun; use set_cfun for the other.
5901         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
5902         (dump_function_to_file): Use push_cfun/pop_cfun here.
5903         * c-decl.c (finish_function): Use set_cfun.
5904
5905 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
5906
5907         * regrename.c (rerename_optimize): Use deferred rescanning and
5908         insert explicit calls to rescan insns when changed.
5909         
5910 2007-09-05  Jan Hubicka  <jh@suse.cz>
5911
5912         * optabs.c (libfunc_entry): Change optab to integer.
5913         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
5914         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
5915         of pointers for hashing.
5916
5917 2007-09-05  Jan Hubicka  <jh@suse.cz>
5918
5919         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
5920         verifier.
5921         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
5922         * see.c (pass_see): Likewise.
5923         * tracer.c (pass_tracer): Likewise.
5924         * postreload-gcse.c (pass_gcse2): Likewise.
5925         * postreload.c (pass_postreload_cse): Likewise.
5926         * mode-switching.c (pass_mode_switching): Likewise.
5927         * modulo-sched.c (pass_sms): Likewise.
5928         * cse.c (cse_insn): Likewise.
5929         * web.c (pass_web): Likweise.
5930         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
5931         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
5932         * loop-init.c (pass_rtl_loop_init): Likewise.
5933         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
5934         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
5935         * global.c (pass_global_alloc): Likewise.
5936         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
5937         pass_if_after_reload): Likewise.
5938         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
5939         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
5940         * regmove.c (pass_regmove): Likewise.
5941         * function.c (pass_thread_prologugues_epilogues): Likewise.
5942         * gcse.c (pass_gcse): Likewise.
5943         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
5944         * lower-subreg.c (pass_lower_subreg2): Likewise.
5945         * bt-load.c (pass_branch_target_load): Likewise.
5946         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
5947         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
5948         * combine.c (pass_combine): Likewise.
5949         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
5950         (pass_partition_blocks): Likewise.
5951         * var-tracking.c (pass_variable_track): Likewise.
5952         * reg-stack.c (pass_stack_regs_run): Likewise.
5953         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
5954         * passes.c (pass_postreload): Likewise.
5955         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
5956         * tree-pass.h (TODO_verify_rtl_sharing): New.
5957         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
5958         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
5959         TODO_set_props, TODO_df_finish, TODO_df_verify,
5960         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
5961
5962 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5963
5964         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
5965         fold_real_zero_addition_p, reorder_operands_p,
5966         div_if_zero_remainder, fold_undefer_overflow_warnings,
5967         int_binop_types_match_p, fold_convert_const_int_from_int,
5968         fold_convert_const_int_from_real,
5969         fold_convert_const_int_from_fixed,
5970         fold_convert_const_real_from_real,
5971         fold_convert_const_real_from_fixed,
5972         fold_convert_const_fixed_from_fixed,
5973         fold_convert_const_fixed_from_int,
5974         fold_convert_const_fixed_from_real, maybe_lvalue_p,
5975         fold_checksum_tree, fold_check_failed, print_fold_checksum,
5976         debug_fold_checksum, multiple_of_p): Constify.
5977         * tree-flow-inline.h (get_lineno): Likewise.
5978         * tree-flow.h (get_lineno): Likewise.
5979         * tree-object-size.c (compute_object_offset, addr_object_size,
5980         alloc_object_size, pass_through_call): Likewise.
5981         * tree-pretty-print.c (op_symbol, print_call_name,
5982         print_struct_decl, do_niy): Likewise.
5983         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
5984         debug_fold_checksum): Likewise.
5985
5986 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
5987
5988         PR middle-end/33029
5989         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
5990         note, remove the associated REG_RETVAL note.
5991
5992 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5993
5994         * config.gcc (powerpc*-*-*): Install
5995         spu2vmx.h, vec_types.h, and si2vmx.h headers.
5996         * config/rs6000/spu2vmx.h: New header.
5997         * config/rs6000/si2vmx.h: New header.
5998         * config/rs6000/vec_types.h: New header.
5999
6000 2007-09-05  Ben Elliston  <bje@au.ibm.com>
6001
6002         * varasm.c (initializer_constant_valid_p): Fix comment typo.
6003
6004 2007-09-05  Ben Elliston  <bje@au.ibm.com>
6005
6006         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
6007         not `m' for *ptrp.
6008         (__stdcx): Make asm volatile.
6009         (__stwcx, __stdcx): Return only 0 or 1.
6010
6011 2007-09-05  Jan Hubicka  <jh@suse.cz>
6012
6013         Revert:
6014
6015         2007-09-04  Jan Hubicka  <jh@suse.cz>
6016         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
6017
6018         2007-09-04  Richard Guenther  <rguenther@suse.de>
6019         * tree-ssa-operands.c (add_virtual_operand): Only mark
6020         stores as has_volatile_ops if alias information is not available.
6021
6022 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
6023
6024         * config/rs6000/tramp.asm: Include config.h.
6025         Check __PIC__ or __pic__ macro instead of SHARED.
6026
6027         PR rtl-optimization/32300
6028         * see.c (see_copy_insn): New function.
6029         (see_def_extension_not_merged, see_merge_one_use_extension,
6030         see_merge_one_def_extension): Use it.  Avoid changing
6031         PREV_INSN/NEXT_INSN chains directly, insted emit insns
6032         into sequences.  Call df_insn_delete on temporary insns
6033         that won't be emitted into the insn stream.
6034         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
6035         and run df_process_deferred_rescans () before run_fast_dce.
6036
6037         PR tree-optimization/33017
6038         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
6039         recurse for pure or const function calls.
6040
6041 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6042
6043         * c-format.c: Include alloc-pool.h.
6044         (check_format_info_main): New argument fwt_alloc.  Use allocation
6045         pool instead of GC.  Remove GC deallocation code.
6046         (check_format_arg): Create allocation pool, pass it to
6047         check_format_info_main and free it afterwards.
6048         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
6049
6050 2007-09-05  Ben Elliston  <bje@au.ibm.com>
6051
6052         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
6053         Rename count macro arugment for clarity.
6054         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
6055         (__protected_stream_set): Likewise, pass 0.
6056
6057 2007-09-04  Jan Hubicka  <jh@suse.cz>
6058
6059         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
6060
6061 2007-09-04  Jan Hubicka  <jh@suse.cz>
6062
6063         * invoke.texi (-finline-small-functions): Document.
6064         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
6065         when deciding what is inlinable.
6066         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
6067         (cgraph_decide_inlining_of_small_function): Handle new flags.
6068         (cgraph_decide_inlining_incrementally): Likewise.
6069         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
6070         * common.opt (finline-small-functions): New.
6071         * Makefile.in (build/gengtype.o-warn): Work around PR29478
6072
6073 2007-09-04  Richard Guenther  <rguenther@suse.de>
6074
6075         * tree-ssa-operands.c (add_virtual_operand): Only mark
6076         stores as has_volatile_ops if alias information is not available.
6077
6078 2007-09-04  Andrew Haley  <aph@redhat.com>
6079
6080         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
6081
6082 2007-09-04  Andrew Haley  <aph@redhat.com>
6083
6084         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
6085         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
6086         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
6087
6088 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
6089
6090         PR c++/14178
6091         * common.opt: Mention ABI version 2 in comment.
6092
6093 2007-09-04  Jan Hubicka  <jh@suse.cz>
6094
6095         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
6096         (libfunc_entry): New structure.
6097         (libfunc_hash): New hashtable.
6098         (hash_libfunc): New function.
6099         (eq_libfunc): New function.
6100         (convert_optab_libfunc): New function.
6101         (optab_libfunc): New function.
6102         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
6103         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
6104         expand_float, expand_fix, new_optab, new_convert_optab):
6105          Update for new libfunc API.
6106         (init_libfunc, init_integral_libfuncs,
6107         init_floating_libfuncs, init_interclass_conv_libfuncs
6108         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
6109         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
6110         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
6111         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
6112         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
6113         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
6114         gen_extend_conv_libfunc): New.
6115         (init_one_libfunc): Revamp for hashtables.
6116         (set_conv_libfunc): Likewise.
6117         (init_optabs): Initialize hashtable; use lazy initialization where
6118         possible.
6119         * optabs.h (optab_handlers): Move out of GGC.
6120         (optab, convert_optab): Move out of GGC; add lazy gen info.
6121         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
6122         (optab_libfunc, convert_optab_libfunc): New.
6123         * builtins.c (expand_builtin_powi): Update for new API.
6124         * expr.c (convert_move): Likewise.
6125         * expmed.c (expand_divmod): Likewise.
6126
6127 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
6128
6129         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
6130         GOT pointer only if there is a constant pool.  Use the allocated space
6131         for SPE also.
6132
6133 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
6134
6135         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
6136         typo for AltiVec.
6137
6138 2007-09-04  Revital Eres  <eres@il.ibm.com>
6139             Richard Guenther  <rguenther@suse.de>
6140             R. Clint Whaley  <whaley@cs.utsa.edu>
6141
6142         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
6143         Document new flags.
6144         * tree-tailcall.c (process_assignment): Use -fassociative-math
6145         when reodering operands of floating-point type.
6146         * fold-const.c (fold_comparison, fold_binary): Use
6147         -fassociative-math and -freciprocal-math instead of
6148         -funsafe-math-optimization flag.
6149         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
6150         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
6151         -freciprocal-math instead of -funsafe-math-optimizations.
6152         * opts.c (set_fast_math_flags): Set -freciprocal-math and
6153         -fassociative-math when -ffast-math is set.
6154         (set_unsafe_math_optimizations_flags): New Function
6155         to set -freciprocal-math and -fassociative-math when
6156         -funsafe-math-optimizations is set.
6157         (common_handle_option): Call it.
6158         * tree-vectorizer.c (vect_is_simple_reduction): Use
6159         -fassociative-math when doing reduction on floats.
6160         * loop-unroll.c (analyze_insn_to_expand_var): Use
6161         -fassociative-math when expanding an accumulator of type float.
6162         * simplify-rtx.c (simplify_binary_operation_1): Use
6163         -fassociative-math and -freciprocal-math when reordeing operands
6164         of floating-point type.
6165         * combine.c (combine_simplify_rtx): Likewise.
6166         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
6167         Likewise.
6168         * common.opt (-fassociative-math, -freciprocal-math): New flags.
6169
6170 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
6171
6172         PR c++/18608
6173         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
6174
6175 2007-09-04  Jan Hubicka  <jh@suse.cz>
6176
6177         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
6178
6179 2007-09-04  Jan Hubicka  <jh@suse.cz>
6180
6181         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
6182         and corresponding MATCH_DUP.
6183
6184 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
6185
6186         PR middle-end/33187
6187         * combine.c (subst): Do not try to simplify X if it represents load
6188         of FP constant from the constant pool via float extension.
6189
6190 2007-09-04  Ben Elliston  <bje@au.ibm.com>
6191
6192         * c-opts.c: Include "tm_p.h".
6193         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
6194
6195 2007-09-04  Richard Guenther  <rguenther@suse.de>
6196
6197         PR tree-optimization/33291
6198         * tree-pretty-print.c (dump_generic_node): Dump all
6199         qualifiers for pointer types, not only first.  Dump
6200         qualifiers for aggregate types as well.
6201         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
6202         use the canonical type for building ARRAY_REFs.
6203         * gimplify.c (canonicalize_addr_expr): Clean up.  The
6204         correct validness check is compatibility of the pointer
6205         types.  Always use the canonical type for building
6206         ARRAY_REFs and ADDR_EXPRs.
6207         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
6208         change that disabled propagation of ADDR_EXPRs into statements
6209         with volatile ops.
6210
6211 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
6212
6213         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
6214         (umulsi3_highpart): Make into expanders; existing insns are
6215         now named *[insn]_nov6.  Add stars to existing [insn]_v6
6216         counterparts' names.
6217
6218 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
6219
6220         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
6221         (unprotoize.o): Remove SHLIB_MULTILIB.
6222
6223 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
6224
6225         * doc/extend.texi: Document progmem attribute for AVR.
6226
6227 2007-09-03  Anatoly Sokolov <aesok@post.ru>
6228
6229         PR target/28902
6230         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
6231
6232 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
6233
6234         * optabs.c (expand_ffs): Initialize val and defined_at_zero
6235         to avoid warnings.
6236
6237         * optabs.c: Remove unnecessary forward declarations.
6238         (expand_unop_direct): New, broken out of expand_unop.
6239         (expand_doubleword_clz): New.
6240         (expand_ctz): Move above expand_ffs.  Use
6241         start_sequence, end_sequence, add_equal_note, and
6242         expand_unop_direct.  Add more commentary.
6243         (expand_ffs): Try both ctz optab and expand_ctz.
6244         Generate a test and branch if the hardware doesn't give us
6245         a useful value for input zero.  Style improvements similar to
6246         expand_ctz.
6247
6248         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
6249
6250 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
6251
6252         * config.gcc: Delete stanza for arm-semi-aof and
6253         armel-semi-aof targets.
6254         * config/arm/arm-protos.h
6255         * config/arm/arm.c
6256         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
6257         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
6258         delete aof_pic_label and remove mention of AOF in comments.
6259         * config/arm/arm.md: Delete patterns used only for AOF assembly.
6260         * config/arm/aof.h
6261         * config/arm/semiaof.h
6262         * config/arm/t-semi: Delete file.
6263
6264 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6265
6266         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
6267         CONST_CAST_BB): New macros for type-specific casts.
6268         (CONST_CAST): Add a TYPE parameter and define it in terms of
6269         CONST_CAST2.
6270
6271         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
6272         * c-lex.c (cb_ident, lex_string): Likewise,
6273         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
6274         * config/i386/i386.c (ix86_function_regparm,
6275         ix86_function_sseregparm): Use CONST_CAST_TREE.
6276         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
6277         CONST_CAST.
6278         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
6279         give_switch, set_multilib_dir): Likewise,
6280         * gengtype-parse.c (string_seq, typedef_name): Likewise,
6281         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
6282         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
6283         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
6284         * prefix.c (update_path): Likewise,
6285         * pretty-print.c (pp_base_destroy_prefix): Likewise,
6286         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
6287         * tree-cfg.c (tree_can_merge_blocks_p,
6288         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
6289         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
6290         * tree.c (build_string): Supply a TYPE for CONST_CAST.
6291         (attribute_list_contained): Use CONST_CAST_TREE.
6292
6293 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
6294
6295         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
6296
6297 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
6298
6299         PR middle-end/33290
6300         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
6301         before forcing them into a register.
6302
6303 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
6304
6305         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
6306         rather than define_code_macro.
6307
6308 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6309
6310         * gcc.c (xputenv): New function.
6311         (putenv_from_prefixes): Use xputenv instead of putenv.
6312         (process_command): Use xputenv instead of putenv.
6313         (set_collect_gcc_options): Use xputenv instead of putenv.
6314         (main): Use xputenv instead of putenv.
6315
6316 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
6317
6318         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
6319         availability of swap instruction.
6320         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
6321
6322 2007-09-03  Revital Eres  <eres@il.ibm.com>
6323
6324         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
6325         Documentation.
6326
6327 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
6328             Ayal Zaks  <zaks@il.ibm.com>
6329             Revital Eres  <eres@il.ibm.com>
6330
6331         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
6332         compute_split_row): New functions.
6333         (ps_unschedule_node): Remove.
6334         (normalize_sched_times): Iterate over the already scheduled
6335         insns instead of the number of nodes.
6336         (MAX_SPLIT_NUM): New definition.
6337         (sms_schedule_by_order): Change the scheduling heuristic to
6338         avoid useless increases of initiation interval ii.
6339         (get_sched_window): Add dump printouts.
6340
6341 2007-09-02  David Daney  <ddaney@avtrex.com>
6342
6343         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
6344         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
6345         (optab, insn): Add more attributes.
6346         (fetchop_bit): New code macro.
6347         (immediate_insn): New code macro attribute.
6348         (sync): Change condition to ISA_HAS_SYNC.
6349         (rdhwr): Change predicate for operand 0 to register_operand.
6350         (memory_barrier): New expand.
6351         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
6352         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
6353         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
6354         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
6355         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
6356         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
6357         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
6358         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
6359         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
6360         
6361 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
6362             Hans-Peter Nilsson  <hp@axis.com>
6363
6364         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
6365         Defined to describe availability and behavior of CLZ.
6366         * config/cris/cris.md (clzsi2): Implement using lz instruction.
6367         * config/cris/cris.opt: Tweak comment for "-metrax4".
6368         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
6369         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
6370         (count_leading_zeros): Define.
6371
6372 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6373
6374         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
6375
6376 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
6377
6378         PR middle-end/33272
6379         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
6380         decayed from array.
6381
6382 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
6383
6384         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
6385         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
6386         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
6387         sched-deps.c, sched-int.h, system.h, target.h,
6388         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
6389         tree.def: Fix comment typos.
6390
6391 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
6392
6393         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
6394         (override_options): Turn on -mstrict-align on non-ColdFire
6395         targets.
6396         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
6397
6398 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6399
6400         * c-common.c (const_strip_array_types): Delete.
6401         * c-common.h (const_strip_array_types): Likewise.
6402         * emit-rtl.c (const_next_insn, const_previous_insn,
6403         const_next_nonnote_insn, const_prev_nonnote_insn,
6404         const_next_real_insn, const_prev_real_insn,
6405         const_next_active_insn, const_prev_active_insn, const_next_label,
6406         const_prev_label): Delete.
6407         * gimple-low.c (block_may_fallthru): Use expr_last.
6408         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
6409         * rtl.h (const_previous_insn, const_next_insn,
6410         const_prev_nonnote_insn, const_next_nonnote_insn,
6411         const_prev_real_insn, const_next_real_insn,
6412         const_prev_active_insn, const_next_active_insn, const_prev_label,
6413         const_next_label): Delete.
6414         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
6415         * system.h (CONST_CAST): Update comment.
6416         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
6417         (const_first_stmt, const_last_stmt): Delete.
6418         (tree_block_ends_with_condjump_p): Use last_stmt.
6419         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
6420         * tree-iterator.c (const_expr_first, const_expr_last,
6421         const_expr_only): Delete.
6422         * tree.c (const_lookup_attribute): Likewise.
6423         (attribute_list_contained): Use lookup_attribute.
6424         * tree.h (const_lookup_attribute, const_expr_first,
6425         const_expr_last, const_expr_only): Delete.
6426
6427 2007-09-01  Richard Guenther  <rguenther@suse.de>
6428
6429         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
6430         instead of TREE_THIS_VOLATILE.
6431         * tree-ssa-operands.c (add_virtual_operand): Do not set
6432         has_volatile_ops.  Do not check s_ann for NULL.
6433         (get_indirect_ref_operands): Likewise.
6434         (get_expr_operands): Likewise.  For all reference trees
6435         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
6436         check base of reference for TREE_THIS_VOLATILE.
6437
6438 2007-09-01  Richard Guenther  <rguenther@suse.de>
6439
6440         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
6441         between integral types.  Also allow conversions between
6442         pointer types.
6443
6444 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6445
6446         * optabs.c (prepare_float_lib_cmp): Use
6447         libgcc_cmp_return_mode instead of word_mode.
6448         * config/dfp-bit.h: Likewise.
6449         * config/fp-bit.h: Likewise.
6450         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
6451         New function.
6452         (spu_libgcc_shift_count_mode): New function.
6453         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
6454         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
6455
6456 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
6457
6458         * tree-pretty-print.c: Include output.h.
6459         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
6460         HOST_WIDE_INT_PRINT_DEC.
6461         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
6462
6463 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
6464
6465         PR rtl-optimization/33224
6466         * loop-iv.c (latch_dominating_def): Check that the definition belongs
6467         to the analysed region.
6468
6469 2007-08-31  Richard Guenther  <rguenther@suse.de>
6470
6471         * function.c (allocate_struct_function): Do not set
6472         current_function_returns_pointer.
6473         * function.h (struct var_refs_queue): Remove.
6474         (struct simple_obstack_stack): Likewise.
6475         (struct function): Remove fixup_var_refs_queue member.
6476         Remove returns_pointer flag.
6477         (current_function_returns_pointer): Remove define.
6478
6479 2007-08-31  Nick Clifton  <nickc@redhat.com>
6480
6481         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
6482         secondary keys in order to obtain a stable sort.
6483
6484 2007-08-31  Nick Clifton  <nickc@redhat.com>
6485
6486         PR target/33132
6487         * config/m32r/constraints.md: Add W constraint for integer zero.
6488         * config/m32r/m32r.md (get_pc): Use W and i constraints.
6489         Fix length calculation by using alternatives.
6490
6491 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
6492
6493         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
6494         split out from expand_binop.
6495         (avoid_expensive_constant): New function.
6496         (expand_binop_directly): Remove commutative_op argument and
6497         (expand_binop_directly): Remove commutative_op argument and
6498         call cummutative_optab_p instead.  Do not change op0 or op1
6499         when swapping xop0 and xop1.  Apply avoid_expensive_constant
6500         to each argument after potential swapping.  Enforce the
6501         canonical order of commutative operands.
6502         (expand_binop): Use shift_optab_p and commutative_optab_p.
6503         Update the calls to expand_binop_directly.  Only force constants
6504         into registers when widening an operation.  Only swap operands
6505         once a direct expansion has been rejected.
6506         (expand_twoval_binop): Only force constants into registers when
6507         using a direct expansion.
6508
6509 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
6510
6511         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
6512         (sched_analyze_insn): Don't postprocess speculative dependencies when
6513         target has no scheduling.
6514         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
6515         'uninitialized' warning.
6516
6517 2007-08-31  Richard Guenther  <rguenther@suse.de>
6518
6519         * tree.c (build_complex_type): Always set TYPE_NAME for
6520         comples types.
6521
6522 2007-08-31  Olivier Hainque  <hainque@adacore.com>
6523
6524         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
6525         internal macro. Default alignment factor for csect directives, chosen
6526         to match what BIGGEST_ALIGNMENT allows.
6527         (DATA_SECTION_ASM_OP): Use it.
6528         * config/rs6000/rs6000.c
6529         (rs6000_xcoff_output_readonly_section_asm_op):
6530         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
6531         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
6532         
6533 2007-08-31  Olivier Hainque  <hainque@adacore.com>
6534
6535         * dbxout.c (dbxout_block): Move declaration within the first
6536         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
6537         block to include the definition, together with the associated
6538         helpers.
6539
6540 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
6541             Revital Eres  <eres@il.ibm.com>
6542
6543         * doc/invoke.texi (-mpaired): Document flag.
6544         * config.gcc: Include paired.h in powerpc extra_headers and
6545         750cl.h in powerpc-*-linux*paired*.
6546         * config/rs6000/rs6000.opt (-mpaired): New flag.
6547         * config/rs6000/rs6000.c (paired_init_builtins,
6548         paired_expand_builtin, paired_expand_lv_builtin,
6549         paired_expand_stv_builtin, paired_expand_predicate_builtin):
6550         New functions to support the paired single builtin functions.
6551         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
6552         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
6553         single builtins.
6554         (bdesc_paired_preds): New structure for paired predicate
6555         instructions.
6556         (rs6000_expand_builtin): Expand paired single builtins.
6557         (rs6000_init_builtins): Init paired single builtins.
6558         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
6559         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
6560         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
6561         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
6562         (rs6000_vector_mode_supported_p): Support paired vector mode.
6563         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
6564         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
6565         New.
6566         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
6567         (DATA_ALIGNMENT): Likewise.
6568         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
6569         (rs6000_builtins): Add PAIRED builtins.
6570         * config/rs6000/rs6000.md: Include paired.md.
6571         * config/rs6000/paired.h: New.
6572         * config/rs6000/paired.md: New.
6573         * config/rs6000/750cl.h: New.
6574         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
6575
6576 2007-08-30  Ollie Wild  <aaw@google.com>
6577
6578         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
6579         * gcc.c (default_compilers): Add -fno-directives-only to
6580         @assembler-with-cpp.
6581
6582 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
6583
6584         PR middle-end/33211
6585
6586         * regclass.c (initial_fixed_regs): Revert previous change and make
6587         it const again.
6588         (initial_call_used_regs): Likewise.
6589         (initial_call_really_used_regs): Delete, reverting previous addition.
6590         (initial_reg_names): Likewise.
6591         (init_reg_sets): Revert previous change.
6592         (saved_fixed_regs): New.
6593         (saved_call_used_regs): New.
6594         (saved_call_really_used_regs): New.
6595         (saved_reg_names): New.
6596         (save_register_info): New.
6597         (restore_register_info): New.
6598         (init_reg_sets_1): Replace reset of register info with call to
6599         restore_register_info.
6600         * rtl.h (save_register_info): Declare.
6601         * toplev.c (backend_init): Call save_register_info.
6602
6603 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6604
6605         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
6606         from the original statement.
6607
6608 2007-08-30  Chao-ying Fu  <fu@mips.com>
6609
6610         * c-lex.c (interpret_fixed): Declare.
6611         (interpret_float): Process _Fract and _Accum.
6612         (interpret_fixed): New function.
6613         * final.c (output_addr_const): Process CONST_FIXED.
6614         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
6615         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
6616         SS_DIV, US_DIV.
6617         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
6618         US_DIV, US_ASHIFT.
6619         (simplify_immed_subreg): Support CONST_FIXED.
6620         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
6621         (simplify_subreg): Support CONST_FIXED.
6622
6623 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6624
6625         * config/rs6000/ppu_intrinsics.h: New file.
6626         * config.gcc (powerpc*-*-* <extra_headers>): Install
6627         ppu_intrinsics.h.
6628
6629 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
6630
6631         * cfg.c (dump_flow_info): Change to also print entry and exit
6632         block info.
6633         * print-rtl.c (print_rtl_single): Allow to print rtl with
6634         -fdump-unnumbered.
6635         
6636 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
6637
6638         * df-core.h (df_dump_region): New function.
6639         * df.h (df_dump_region): New function.
6640         * loop-invariant.c (find_defs): Add call to df_dump_region.
6641         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
6642         df_dump_region.
6643         
6644 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
6645
6646         PR target/33168
6647         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
6648         true if any of the compare_section_name calls returned true,
6649         rather than if any returned false.
6650
6651 2007-08-30  Richard Guenther  <rguenther@suse.de>
6652
6653         PR tree-optimization/33199
6654         * tree-ssa-structalias.c (handle_lhs_call): New function.
6655         (find_func_aliases): In non-IPA mode make sure that for
6656         calls that return a pointer we add a constraint for the
6657         result to point to anything.
6658
6659 2007-08-30  Richard Guenther  <rguenther@suse.de>
6660
6661         * doc/invoke.texi (-mveclibabi): Document new target option.
6662         * config/i386/i386.opt (-mveclibabi): New target option.
6663         * config/i386/i386.c (ix86_veclib_handler): Handler for
6664         vectorization library support.
6665         (override_options): Handle the -mveclibabi option, initialize
6666         the vectorization library handler.
6667         (ix86_builtin_vectorized_function): As fallback call the
6668         vectorization library handler, if set.
6669         (ix86_veclibabi_acml): New static function for ACML ABI style
6670         vectorization support.
6671
6672 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
6673
6674         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
6675         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
6676         SImode and update m.  Don't run gen_lowpart_common on arbitrary
6677         memory address, force it to register first.
6678
6679         PR middle-end/32758
6680         * dce.c (dce_process_block): Don't delete setters of
6681         artificially used registers.
6682
6683 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6684
6685         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
6686         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
6687         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
6688
6689 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6690
6691         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
6692         pattern.
6693         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
6694         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
6695
6696 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6697
6698         * system.h: Activate -Wcast-qual as warning-only.
6699
6700 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
6701
6702         PR target/33168
6703         * config/rs6000/rs6000.c (compare_section_name): New function.
6704         (rs6000_elf_in_small_data_p): Compare section prefixes instead
6705         of full name.
6706
6707 2007-08-29  Olivier Hainque  <hainque@adacore.com>
6708
6709         * xcoffout.c: #include debug.h.
6710         * Makefile.in (xcoffout.o): Add debug.h dependency.
6711
6712 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
6713
6714         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
6715         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
6716
6717 2007-08-29  Richard Guenther  <rguenther@suse.de>
6718
6719         * tree-pretty-print.c (dump_generic_node): Print
6720         label DECL_UID as D.%u.
6721         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
6722
6723 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6724
6725         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
6726         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
6727
6728 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
6729
6730         PR c++/33194
6731         * tree.c (build_type_attribute_qual_variant): Set canonical types
6732         on the final, unqualified attribute variant before building the
6733         qualified version.
6734
6735 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6736
6737         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
6738         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
6739
6740 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6741
6742         Revert
6743         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6744         * config/bfin/bfin.md (composev2hi): Put operands into vector
6745         with correct order.
6746
6747 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6748
6749         * config/bfin/bfin.md (composev2hi): Put operands into vector
6750         with correct order.
6751
6752 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
6753
6754         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
6755         attribute when appropriate.
6756         (bfin_handle_l1_text_attribute): New.
6757         (bfin_handle_l1_data_attribute): New.
6758         (bfin_attribute_table): Add attributes: l1_text, l1_data,
6759         l1_data_A and l1_data_B.
6760         * doc/extend.texi (node Function Attributes): Document l1_text
6761         function attribute.
6762         (Variable Attributes): Add Blackfin subsection. Document l1_data,
6763         l1_data_A and l1_data_B variable attributes.
6764
6765 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
6766
6767         * config/bfin/bfin.opt (minline-plt): Add.
6768         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
6769         call to global functions.
6770         * doc/invoke.texi (Option Summary): Mention -minline-plt.
6771         (Blackfin Options): Document -minline-plt.
6772
6773 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
6774
6775         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
6776         given a non-function.
6777         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
6778
6779 2007-08-28  DJ Delorie  <dj@redhat.com>
6780
6781         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
6782
6783 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6784
6785         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
6786
6787 2007-08-28  Richard Guenther  <rguenther@suse.de>
6788
6789         * tree.h (struct tree_function_decl): Increase size of
6790         function_code bitfield.
6791
6792 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
6793             Kazu Hirata  <kazu@codesourcery.com>
6794
6795         * gcc/config/m68k/linux.h
6796         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
6797         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
6798         (m68k_return_in_memory): New.
6799         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
6800         New.
6801
6802 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
6803
6804         PR target/32661
6805         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
6806         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
6807         operand) when top VEC_SELECT extracts scalar element.
6808         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
6809         (*vec_extract_v4sf_mem): Ditto.
6810
6811 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
6812
6813         PR middle-end/32370
6814         * passes.c (init_optimization_passes): Move pass_df_finish
6815         after pass_postreload sublist.
6816
6817         PR rtl-optimization/33148
6818         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
6819         (neg (lt X 0)) if X has scalar int mode.
6820
6821         PR debug/32914
6822         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
6823         initializer, use build_vector_from_ctor if possible to create
6824         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
6825         even after this, return NULL.
6826
6827 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6828
6829         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
6830
6831 2007-08-28  Richard Guenther  <rguenther@suse.de>
6832
6833         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
6834         (struct tree_function_decl): Make function_code a bitfield.
6835         Add disregard_inline_limits flag.
6836         * cgraphunit.c (cgraph_process_new_functions): Check
6837         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
6838         (cgraph_preserve_function_body_p): Likewise.
6839         * ipa-inline.c (compute_inline_parameters): Likewise.
6840         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
6841         for GNU C extern inline functions.
6842         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
6843         * tree-inline.c (disregard_inline_limits_p): Remove.
6844         * tree-inline.h (disregard_inline_limits_p): Likewise.
6845         * c-common.c (handle_always_inline_attribute): Set
6846         DECL_DISREGARD_INLINE_LIMITS.
6847         * langhooks.c (add_builtin_function): Verify the function code
6848         fits in the bitfield.
6849
6850 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
6851             Vladimir Yanovsky  <yanov@il.ibm.com>
6852             Revital Eres  <eres@il.ibm.com>
6853             Andrey Belevantsev  <abel@ispras.ru>
6854
6855         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
6856         is set.
6857         * modulo-sched.c: Add documentation regarding do-loop.
6858         (doloop_register_get): Change number of arguments to support
6859         the new do-loop pattern and check whether COUNT_REG has no other
6860         occurences in the loop besides in the control part.
6861         (duplicate_insns_of_cycles): Do not duplicate the insn which
6862         changes count_reg as it is already adjusted.
6863         (generate_prolog_epilog): New argument to support the new
6864         do-loop pattern.  Change the subtract instruction to use
6865         expand_simple_binop.  Call duplicate_insns_of_cycles with new
6866         argument.
6867         (sms_schedule): Call doloop_register_get and
6868         generate_prolog_epilog with new argument.  Do not handle loops
6869         with single sets insns with subreg in their lhs.
6870         * loop-doloop.c (doloop_optimize): Support for another do-loop
6871         pattern.
6872         (doloop_condition_get): Gets an instruction instead of a pattern
6873         and change the return condition when the do-loop pattern is
6874         not parallel.
6875         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
6876         deps when considering to not create edges.
6877
6878 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
6879
6880         * doc/extend.texi (gnu_inline funtion attribute): Document C++
6881         behavior.
6882
6883 2007-08-27  Jason Merrill  <jason@redhat.com>
6884
6885         PR c++/31337
6886         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
6887         zero-sized types after calling gimplify_modify_expr_rhs.
6888
6889 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
6890
6891         * regclass.c (init_reg_autoinc): Fix typo.
6892
6893 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
6894         
6895         Fix PR tree-optimization/33173
6896         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
6897
6898 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
6899
6900         PR target/31385
6901         * config/i386/i386.h (VALID_DFP_MODE_P): New.
6902         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
6903         GPR.
6904
6905 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
6906             David Ung  <davidu@mips.com>
6907             Nigel Stephens <nigel@mips.com>
6908
6909         Separate target-specific initialization from general
6910         back-end initialization.
6911
6912         * toplev.c (init_alignments): New, split out from...
6913         (process_options): ...here.
6914         (backend_init_target): New, split out from...
6915         (backend_init): ...here.
6916         (lang_dependent_init_target): New, split out from...
6917         (lang_dependent_init): ...here.
6918         (target_reinit): New.
6919         * toplev.h (target_reinit): Declare.
6920         * expr.c (init_expr_target): Renamed from init_expr_once, since it
6921         now can be called more than once.  Update comments.
6922         * expr.h (init_expr_target): Likewise.
6923         * alias.c (init_alias_target): Renamed from init_alias_once, since it
6924         now can be called more than once.  Explicitly zero
6925         static_reg_base_value.
6926         * emit-rtl.c (init_emit_regs): New, split out from...
6927         (init_emit_once): Here.
6928         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
6929         non-const, so that changes from command-line arguments can overwrite
6930         values provided by the static initializers.
6931         (initial_call_really_used_regs): New, used similarly to the above.
6932         (initial_reg_names): Likewise.
6933         (last_mode_for_init_move_cost): Promoted function-local static to
6934         file-scope static to make it accessible outside init_move_cost.
6935         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
6936         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
6937         reg_names since it is needed for parsing command-line options.
6938         (init_move_cost): Use last_mode_for_init_move_cost instead of
6939         function-local static.
6940         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
6941         call_really_used_regs now.  Reinitialize reg_names.  Also
6942         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
6943         reg_class_superunion.  Clear losing_caller_save_reg_set.
6944         Preserve global registers if called more than once.  Reset
6945         move cost, may_move_in_cost, may_move_out_cost, and
6946         last_mode_for_init_move_cost.
6947         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
6948         can now be invoked more than once.  Update comments.
6949         (init_regs): Update comments.
6950         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
6951         and initial_call_really_used_regs, instead of the non-initial 
6952         variables.  This allows us to save the command-line register settings
6953         after target reinitialization.
6954         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
6955         * rtl.h (init_emit_regs): Declare.
6956         (init_reg_modes_target, init_alias_target): Renamed as described
6957         above.
6958         * reload1.c (init_reload): Update comments.
6959         * optabs.c (init_optabs): Likewise.
6960         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
6961         
6962 2007-08-26  Chao-ying Fu  <fu@mips.com>
6963
6964         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
6965         __typeof().
6966
6967 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6968
6969         * alias.c (memory_modified_1, memory_modified_in_insn_p):
6970         Constify.
6971         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
6972         Likewise.
6973         * bb-reorder.c (copy_bb_p): Likewise.
6974         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
6975         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
6976         block_ends_with_condjump_p): Likewise.
6977         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
6978         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
6979         block_ends_with_condjump_p): Likewise.
6980         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
6981         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
6982         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
6983         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
6984         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
6985         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
6986         debug_true_const_tree instad of debug_true_tree.
6987         * debug.c (do_nothing_debug_hooks): Likewise.
6988         * debug.h (ignore_block, debug_true_const_tree): Constify.
6989         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
6990         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
6991         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
6992         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
6993         dbx_reg_number, is_based_loc, field_type,
6994         simple_type_align_in_bits, simple_decl_align_in_bits,
6995         simple_type_size_in_bits, field_byte_offset, insert_float,
6996         type_tag, member_declared_type, is_redundant_typedef,
6997         secname_for_decl, is_inlined_entry_point): Likewise.
6998         * emit-rtl.c (const_next_insn, const_previous_insn,
6999         const_next_nonnote_insn, const_prev_nonnote_insn,
7000         const_next_real_insn, const_prev_real_insn,
7001         const_next_active_insn, const_prev_active_insn, const_next_label,
7002         const_prev_label): Likewise.
7003         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
7004         Likewise.
7005         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
7006         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
7007         sched_insn_is_legitimate_for_speculation_p): Likewise.
7008         * jump.c (reversed_comparison_code_parts,
7009         reversed_comparison_code, reversed_comparison, condjump_label):
7010         Likewise.
7011         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
7012         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
7013         Likewise.
7014         * rtl.h (const_previous_insn, const_next_insn,
7015         const_prev_nonnote_insn, const_next_nonnote_insn,
7016         const_prev_real_insn, const_next_real_insn,
7017         const_prev_active_insn, const_next_active_insn, const_prev_label,
7018         const_next_label, modified_between_p, modified_in_p,
7019         const_note_storeskeep_with_call_p, condjump_label,
7020         reversed_comparison, reversed_comparison_code,
7021         reversed_comparison_code_parts, memory_modified_in_insn_p,
7022         stack_regs_mentioned): Likewise.
7023         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
7024         keep_with_call_p): Likewise.
7025         * sched-deps.c (deps_may_trap_p, sched_get_condition,
7026         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
7027         sd_lists_size, sd_lists_empty_p): Likewise.
7028         * sched-int.h (sched_insns_conditions_mutex_p,
7029         haifa_classify_insn, no_real_insns_p,
7030         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
7031         sd_lists_size, sd_lists_empty_p): Likewise.
7032         * sdbout.c (sdb_debug_hooks): Likewise.
7033         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
7034         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
7035         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
7036         Likewise.
7037         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
7038         tree_can_throw_internal): Likewise.
7039         * tree-flow-inline.h (phi_nodes): Likewise.
7040         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
7041         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
7042         * tree-gimple.c (const_get_call_expr_in): Likewise.
7043         * tree-gimple.h (const_get_call_expr_in): Likewise.
7044         * tree.c (const_lookup_attribute, attribute_list_equal,
7045         attribute_list_contained): Likewise.
7046         * tree.h (attribute_list_equal, attribute_list_contained,
7047         const_lookup_attribute): Likewise.
7048         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
7049
7050 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
7051
7052         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
7053         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
7054
7055 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
7056
7057         PR target/32991
7058         * config/alpha/constraints.md: Delete "svn:mime-type" property
7059         with svn propdel "svn:mime-type".
7060
7061 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
7062
7063         PR middle-end/33181
7064         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
7065         non NOTE insn doesn't cross basic block.
7066         (noce_try_abs): Likewise.
7067         (noce_process_if_block): Likewise.
7068
7069 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
7070
7071         PR target/33151
7072         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
7073         operand without auto-inc-dec.
7074         * config/rs6000/rs6000.md (floatsidf2_internal): Use
7075         offsettable_mem_operand.
7076         (floatunssidf2_internal): Same.
7077         (fix_truncdfsi2_internal): Same.
7078         (floatsidf_ppc64): Same.
7079         (floatunssidf_ppc64): Same.
7080         (fix_trunctfsi2_internal): Same.
7081
7082 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
7083
7084         PR bootstrap/30620
7085         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
7086         pass defines needed for version.c.
7087
7088 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
7089
7090         * configure.ac (--debug-prefix-map check): Change assembler
7091         version presumed to have feature to 2.18.
7092         * configure: Regenerate.
7093
7094 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7095
7096         * c-common.c (vector_types_convertible_p,
7097         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
7098         self_promoting_args_p): Constify.
7099         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
7100         c_promoting_integer_type_p, self_promoting_args_p,
7101         anon_aggr_type_p, vector_types_convertible_p): Likewise.
7102         * c-decl.c (anon_aggr_type_p): Likewise.
7103         * * c-dump.c (dump_stmt): Likewise.
7104         * c-objc-common.c (has_c_linkage): Likewise.
7105         * c-tree.h (same_translation_unit_p): Likewise.
7106         * c-typeck.c (null_pointer_constant_p,
7107         tagged_types_tu_compatible_p, function_types_compatible_p,
7108         type_lists_compatible_p, lvalue_or_else, lvalue_p,
7109         comptypes_internal, struct tagged_tu_seen_cache,
7110         same_translation_unit_p, alloc_tagged_tu_seen_cache,
7111         c_size_in_bytes): Likewise.
7112         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
7113         hash_ptr, eq_ptr): Likewise.
7114         * langhooks-def.h (lhd_decl_ok_for_sibcall,
7115         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
7116         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
7117         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
7118         Likewise.
7119         * optabs.c (optab_for_tree_code): Likewise.
7120         * optabs.h (optab_for_tree_code): Likewise.
7121         * rtl.h (simplify_rtx): Likewise.
7122         * simplify-rtx.c (simplify_rtx): Likewise.
7123         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
7124         dump_flag, dump_node): Likewise.
7125         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
7126         queue_and_dump_type, dump_flag): Likewise.
7127         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
7128         * tree-pass.h (dump_node): Likewise.
7129         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
7130         supportable_narrowing_operation): Likewise.
7131         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
7132         supportable_narrowing_operation): Likewise.
7133         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
7134         is_negative_overflow_infinity, is_positive_overflow_infinity,
7135         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
7136         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
7137         update_value_range, add_equivalence, ssa_name_nonnegative_p,
7138         ssa_name_nonzero_p, fp_predicate): Likewise.
7139         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
7140         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
7141         ssa_name_nonnegative_p): Likewise.
7142
7143 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
7144
7145         * config.gcc : Add x86_64-elf target.
7146
7147 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
7148
7149         * expr.c (store_expr): Fix order of store_by_pieces arguments.
7150
7151 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
7152             Nigel Stephens <nigel@mips.com>
7153
7154         PR target/11787
7155
7156         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
7157         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
7158         * expr.c (SET_BY_PIECES_P): Define.
7159         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
7160         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
7161         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
7162         store_by_pieces.
7163         * expr.h (SET_RATIO): Define.
7164         (can_store_by_pieces, store_by_pieces): Update prototypes.
7165         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
7166         can_store_by_pieces/store_by_pieces.
7167         (expand_builtin_memcpy_args): Likewise.
7168         (expand_builtin_strncpy): Likewise.
7169         (expand_builtin_memset_args): Likewise.  Also remove special case
7170         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
7171         decide what to do instead.
7172         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
7173         to can_store_by_pieces.
7174
7175         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
7176         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
7177
7178         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
7179         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
7180         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
7181         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
7182         (STORE_BY_PIECES_P): Define.
7183
7184 2007-08-24  Tom Tromey  <tromey@redhat.com>
7185
7186         * varpool.c (varpool_last_needed_node): Fix comment typo.
7187         * c-decl.c (duplicate_decls): Fix comment typo.
7188         (clone_underlying_type): Update comment.
7189
7190 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7191
7192         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
7193         alpha_in_small_data_p, alpha_split_complex_arg,
7194         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
7195         Constify.
7196         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
7197         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
7198         Likewise.
7199         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
7200         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
7201         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
7202         * config/darwin.c (darwin_binds_local_p): Likewise.
7203         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
7204         Likewise.
7205         * config/i386/i386-protos.h (i386_pe_binds_local_p,
7206         i386_pe_valid_dllimport_attribute_p): Likewise.
7207         * config/i386/i386.c (ix86_function_regparm,
7208         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
7209         x86_can_output_mi_thunk, ix86_mangle_type,
7210         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
7211         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
7212         i386_pe_binds_local_p): Likewise.
7213         * config/ia64/ia64.c
7214         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
7215         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
7216         ia64_invalid_conversion, ia64_invalid_unary_op,
7217         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
7218         Likewise.
7219         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
7220         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
7221         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
7222         * config/mips/mips.c (mips_use_blocks_for_constant_p,
7223         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
7224         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7225         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
7226         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
7227         * config/pa/pa.c (pa_commutative_p): Likewise.
7228         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
7229         Likewise.
7230         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
7231         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
7232         rs6000_use_blocks_for_constant_p,
7233         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
7234         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7235         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
7236         * config/s390/s390.c (s390_mangle_type,
7237         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
7238         Likewise.
7239         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7240         th_in_small_data_p): Likewise.
7241         * config/sh/sh.c (sh_ms_bitfield_layout_p,
7242         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
7243         Likewise.
7244         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
7245         sparc_mangle_type): Likewise.
7246         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
7247         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
7248         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
7249         Likewise.
7250         * hooks.c (hook_bool_mode_const_rtx_false,
7251         hook_bool_mode_const_rtx_true,
7252         hook_bool_const_tree_hwi_hwi_const_tree_false,
7253         hook_bool_const_tree_hwi_hwi_const_tree_true,
7254         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
7255         hook_constcharptr_const_tree_null,
7256         hook_constcharptr_const_rtx_null,
7257         hook_constcharptr_const_tree_const_tree_null,
7258         hook_constcharptr_int_const_tree_null,
7259         hook_constcharptr_int_const_tree_const_tree_null): New.
7260         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
7261         hook_bool_tree_hwi_hwi_tree_false,
7262         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
7263         hook_int_tree_tree_1, hook_constcharptr_tree_null,
7264         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
7265         hook_constcharptr_int_tree_null,
7266         hook_constcharptr_int_tree_tree_null): Delete.
7267         (default_can_output_mi_thunk_no_vcall): Constify.
7268         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
7269         hook_bool_tree_hwi_hwi_tree_false,
7270         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
7271         hook_int_tree_tree_1, hook_constcharptr_tree_null,
7272         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
7273         hook_constcharptr_int_tree_null,
7274         hook_constcharptr_int_tree_tree_null): Delete.
7275         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
7276         hook_bool_const_tree_hwi_hwi_const_tree_false,
7277         hook_bool_const_tree_hwi_hwi_const_tree_true,
7278         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
7279         hook_constcharptr_const_tree_null,
7280         hook_constcharptr_const_rtx_null,
7281         hook_constcharptr_const_tree_const_tree_null,
7282         hook_constcharptr_int_const_tree_null,
7283         hook_constcharptr_int_const_tree_const_tree_null): New.
7284         (default_can_output_mi_thunk_no_vcall): Constify.
7285         * integrate.c (function_attribute_inlinable_p): Likewise.
7286         * integrate.h (function_attribute_inlinable_p): Likewise.
7287         * jump.c (rtx_renumbered_equal_p): Likewise.
7288         * output.h (decl_readonly_section, categorize_decl_for_section,
7289         default_use_anchors_for_symbol_p, default_binds_local_p,
7290         default_binds_local_p_1): Likewise.
7291         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
7292         Likewise.
7293         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
7294         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
7295         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
7296         TARGET_COMP_TYPE_ATTRIBUTES,
7297         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
7298         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
7299         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
7300         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
7301         TARGET_DWARF_CALLING_CONVENTION): Likewise.
7302         * target.h (can_output_mi_thunk, needs_block_p,
7303         first_cycle_multipass_dfa_lookahead_guard_spec,
7304         vector_alignment_reachable, comp_type_attributes,
7305         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
7306         commutative_p, use_blocks_for_constant_p,
7307         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
7308         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
7309         invalid_within_doloop, valid_dllimport_attribute_p,
7310         split_complex_arg, invalid_arg_for_unprototyped_fn,
7311         invalid_conversion, invalid_unary_op, invalid_binary_op):
7312         Likewise.
7313         * targhooks.c (default_invalid_within_doloop,
7314         hook_invalid_arg_for_unprototyped_fn,
7315         default_builtin_vector_alignment_reachable): Likewise.
7316         (hook_bool_rtx_commutative_p): Delete.
7317         (hook_bool_const_rtx_commutative_p): New.
7318         * targhooks.h (default_invalid_within_doloop,
7319         default_builtin_vector_alignment_reachable,
7320         hook_invalid_arg_for_unprototyped_fn): Constify.
7321         (hook_bool_rtx_commutative_p): Delete.
7322         (hook_bool_const_rtx_commutative_p): New.
7323         * varasm.c (bss_initializer_p, decl_default_tls_model,
7324         categorize_decl_for_section, decl_readonly_section,
7325         default_use_anchors_for_symbol_p, default_binds_local_p,
7326         default_binds_local_p_1): Constify.
7327
7328 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7329
7330         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
7331         __NO_BUILTIN if -fno-builtin.
7332
7333 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7334
7335         * config/bfin/bfin.c (print_operand): Report error instead of
7336         ICE for wrong operand.
7337
7338 2007-08-24  Michael Matz  <matz@suse.de>
7339
7340         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
7341
7342 2007-08-24  Richard Guenther  <rguenther@suse.de>
7343
7344         PR middle-end/33166
7345         * tree-ssa.c (useless_type_conversion_p): Split into a
7346         recursive and a non-recursive part.
7347         (useless_type_conversion_p_1): New function.
7348         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
7349         from maybe_fold_offset_to_reference is trivially convertible
7350         to the desired type before doing the simplification.
7351
7352 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
7353
7354         * expr.c (store_expr): Optimize initialization of an array
7355         with STRING_CST.
7356         * expr.h (builtin_strncpy_read_str): New prototype.
7357         * builtins.c (builtin_strncpy_read_str): Remove prototype.
7358         No longer static.
7359
7360 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
7361
7362         PR middle-end/33157
7363         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
7364         field when initializing if_info structure.
7365
7366 2007-08-24  Richard Guenther  <rguenther@suse.de>
7367
7368         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
7369         dependencies.
7370         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
7371         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
7372         * tree-inline.c (inlinable_function_p): Fold in common parts of
7373         the cannot_inline_tree_fn langhook.
7374         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
7375         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
7376         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
7377         cannot_inline_tree_fn langhook.
7378         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
7379         cannot_inline_tree_fn member.
7380
7381 2007-08-24  Richard Guenther  <rguenther@suse.de>
7382
7383         * expr.c (get_inner_reference): Do computation of bitoffset
7384         from offset in a way we can detect overflow reliably.
7385
7386 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7387
7388         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
7389
7390 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
7391
7392         * config/bfin/bfin.opt (mfast-fp): Add.
7393         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
7394         libbffastfp override libgcc if -mfast-fp.
7395         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
7396         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
7397         (Blackfin Options): Document -mfast-fp.
7398
7399 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
7400
7401         PR tree-optimization/32573
7402         PR middle-end/32946
7403         * tree-data-ref.c (initialize_data_dependence_relation): Clear
7404         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
7405         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
7406         (build_classic_dist_vector): Return false rather than true if
7407         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
7408         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
7409         returned false.  Don't call save_dist_v before calling
7410         build_classic_dist_vector_1.
7411         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
7412         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
7413         DDR_DIR_VECTS vectors.
7414
7415 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
7416
7417         * configure.ac (leb128): Modify sed statement to work with any
7418         binutils version string.
7419         * configure: Regenerate
7420
7421 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7422
7423         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
7424         Wrap in RTX_CODE macro guard.
7425         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
7426         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
7427         arm_mark_dllimport, arm_pe_encode_section_info,
7428         arm_pe_unique_section): Use ISO-C function declarations.
7429         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
7430         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
7431         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
7432         Likewise.
7433         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
7434         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
7435         defining.
7436         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
7437         warnings.
7438         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
7439         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
7440         (register_move_cost): Use ISO-C function declarations.
7441         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
7442         * config/score/score-protos.h (score_declare_object): Add
7443         ATTRIBUTE_PRINTF_4.
7444         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
7445         warnings.
7446         * final.c (profile_function): Avoid empty if-bodies.
7447         
7448         
7449         * calls.c (must_pass_in_stack_var_size,
7450         must_pass_in_stack_var_size_or_pad): Constify.
7451         * config/alpha/alpha-protos.h (function_value): Likewise.
7452         * config/alpha/alpha.c (alpha_return_in_memory,
7453         alpha_pass_by_reference, function_value,
7454         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
7455         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
7456         Likewise.
7457         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
7458         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7459         TARGET_PROMOTE_PROTOTYPES): Likewise.
7460         * config/arm/arm-protos.h (arm_return_in_memory,
7461         arm_pad_arg_upward, arm_function_value): Likewise.
7462         * config/arm/arm.c (arm_pass_by_reference,
7463         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
7464         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7465         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
7466         Likewise.
7467         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
7468         * config/avr/avr-protos.h (avr_function_value): Likewise.
7469         * config/avr/avr.c (avr_return_in_memory,
7470         gas_output_limited_string, gas_output_ascii, avr_function_value,
7471         avr_return_in_memory): Likewise.
7472         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
7473         * config/bfin/bfin.c (bfin_pass_by_reference,
7474         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
7475         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
7476         Likewise.
7477         * config/cris/cris.c (cris_pass_by_reference,
7478         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
7479         * config/crx/crx.c (crx_return_in_memory): Likewise.
7480         * config/darwin.c (function_base, machopic_function_base_name):
7481         Likewise.
7482         * config/fr30/fr30.c (fr30_must_pass_in_stack,
7483         TARGET_PROMOTE_PROTOTYPES): Likewise.
7484         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
7485         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
7486         * config/i386/i386-protos.h (ix86_return_in_memory,
7487         ix86_sol10_return_in_memory): Likewise.
7488         * config/i386/i386.c (ix86_function_value,
7489         ix86_function_sseregparm, ix86_must_pass_in_stack,
7490         type_natural_mode, classify_argument, examine_argument,
7491         construct_container, ix86_pass_by_reference, function_value_32,
7492         function_value_64, ix86_function_value_1, return_in_memory_32,
7493         return_in_memory_64, return_in_memory_ms_64,
7494         ix86_return_in_memory, ix86_sol10_return_in_memory,
7495         TARGET_PROMOTE_PROTOTYPES): Likewise.
7496         * config/ia64/ia64-protos.h (ia64_function_value,
7497         ia64_hpux_function_arg_padding): Likewise.
7498         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
7499         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
7500         ia64_hpux_function_arg_padding): Likewise.
7501         * config/iq2000/iq2000-protos.h (function_arg,
7502         iq2000_function_value): Likewise.
7503         * config/iq2000/iq2000.c (iq2000_return_in_memory,
7504         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
7505         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
7506         function_arg, iq2000_function_value): Likewise.
7507         * config/m32c/m32c-protos.h (m32c_function_value,
7508         m32c_promote_function_return): Likewise.
7509         * config/m32c/m32c.c (m32c_pass_by_reference,
7510         m32c_promote_prototypes, m32c_promote_function_return,
7511         m32c_function_value): Likewise.
7512         * config/m32r/m32r.c (m32r_return_in_memory,
7513         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
7514         m32r_in_small_data_p): Likewise.
7515         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
7516         Likewise.
7517         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
7518         m68hc11_function_arg_padding): Likewise.
7519         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
7520         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
7521         m68k_function_value): Likewise.
7522         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
7523         mcore_function_value): Likewise.
7524         * config/mcore/mcore.c (handle_structs_in_regs,
7525         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
7526         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
7527         mcore_num_arg_regs, mcore_function_value): Likewise.
7528         * config/mips/mips-protos.h (mips_pad_arg_upward,
7529         mips_function_value): Likewise.
7530         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
7531         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
7532         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7533         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
7534         mips_function_value): Likewise.
7535         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
7536         Likewise.
7537         * config/mmix/mmix.c (mmix_pass_by_reference,
7538         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
7539         mmix_encode_section_info): Likewise.
7540         * config/mn10300/mn10300-protos.h (mn10300_function_value):
7541         Likewise.
7542         * config/mn10300/mn10300.c (mn10300_return_in_memory,
7543         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
7544         mn10300_function_value): Likewise.
7545         * config/mt/mt-protos.h (mt_function_value): Likewise.
7546         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
7547         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
7548         * config/pa/pa-protos.h (function_arg_padding, function_value,
7549         pa_return_in_memory): Likewise.
7550         * config/pa/pa.c (pa_pass_by_reference,
7551         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
7552         function_arg_padding, function_value, pa_return_in_memory):
7553         Likewise.
7554         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
7555         * config/rs6000/rs6000-protos.h (rs6000_function_value,
7556         function_arg_padding): Likewise.
7557         * config/rs6000/rs6000.c (rs6000_return_in_memory,
7558         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
7559         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
7560         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7561         function_arg_padding, altivec_expand_dst_builtin,
7562         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
7563         altivec_init_builtins, rs6000_common_init_builtins,
7564         rs6000_function_value): Likewise.
7565         * s390/s390-protos.h (s390_function_value): Likewise.
7566         * config/s390/s390.c (s390_function_arg_size,
7567         s390_pass_by_reference, s390_return_in_memory,
7568         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
7569         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
7570         * config/score/score-protos.h (score_function_value): Likewise.
7571         * config/score/score.c (score_arg_partial_bytes,
7572         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7573         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
7574         score_pass_by_reference, score_add_offset, score_function_value):
7575         Likewise.
7576         * config/sh/sh-protos.h (sh_attr_renesas_p,
7577         sh_promote_prototypes): Likewise.
7578         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
7579         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
7580         sh_attr_renesas_p): Likewise.
7581         * config/sparc/sparc-protos.h (function_value,
7582         function_arg_padding): Likewise.
7583         * config/sparc/sparc.c (sparc_promote_prototypes,
7584         sparc_return_in_memory, sparc_pass_by_reference,
7585         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
7586         function_arg_record_value_2, function_arg_record_value_1,
7587         function_arg_record_value, function_arg_record_value,
7588         function_arg_padding, function_value): Likewise.
7589         * config/spu/spu-protos.h (spu_function_value): Likewise.
7590         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
7591         spu_function_value): Likewise.
7592         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
7593         Likewise.
7594         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
7595         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
7596         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
7597         Likewise.
7598         * config/v850/v850.c (v850_return_in_memory,
7599         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
7600         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
7601         * config/xtensa/xtensa.c (xtensa_return_in_msb,
7602         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
7603         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
7604         Likewise.
7605         * explow.c (promote_mode, hard_function_value): Likewise.
7606         * expr.h (hard_function_value, promote_mode): Likewise.
7607         * function.c (aggregate_value_p): Likewise.
7608         * hooks.c (hook_bool_const_tree_true): New.
7609         * hooks.h (hook_bool_const_tree_true): New.
7610         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
7611         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
7612         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
7613         TARGET_RETURN_IN_MSB): Likewise.
7614         * target.h (promote_function_args, promote_function_return,
7615         promote_prototypes, return_in_memory, return_in_msb,
7616         pass_by_reference, must_pass_in_stack, callee_copies,
7617         function_value): Likewise.
7618         * targhooks.c (default_return_in_memory,
7619         hook_pass_by_reference_must_pass_in_stack,
7620         hook_callee_copies_named,
7621         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
7622         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
7623         default_function_value): Likewise. 
7624         * targhooks.h (default_return_in_memory,
7625         hook_pass_by_reference_must_pass_in_stack,
7626         hook_callee_copies_named,
7627         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
7628         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
7629         default_function_value): Likewise.
7630         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
7631         (equiv_class_label_hash, equiv_class_label_eq): Constify.
7632         * tree-vectorizer.c (bb_in_loop_p): Likewise.
7633         * tree.c (needs_to_live_in_memory): Likewise.
7634         * tree.h (struct tree_type, needs_to_live_in_memory,
7635         aggregate_value_p, must_pass_in_stack_var_size,
7636         must_pass_in_stack_var_size_or_pad): Likewise.
7637         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
7638         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
7639         lookup_filename): Likewise.
7640
7641 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
7642
7643         PR target/17390
7644         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
7645         fake fcomi i387 instruction for !TARGET_CMOVE.
7646         (ix86_expand_branch): Expand natural sequence with one jump for
7647         all targets, not only TARGET_CMOVE.
7648         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
7649         pattern to implement fake fcomi sequence.  Split instruction after
7650         reload to correct compare sequences.
7651         (*cmpfp_xf_cc): Ditto.
7652         (*cmpfp_<mode>_cc): Ditto.
7653         (*cmpfp_u_cc): Ditto.
7654         (*cmpfp_<mode>_cc): Ditto.
7655
7656 2007-08-23  Richard Guenther  <rguenther@suse.de>
7657
7658         * tree-pretty-print.c (dump_generic_node): Annotate
7659         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
7660
7661 2007-08-23  Richard Guenther  <rguenther@suse.de>
7662
7663         * builtins.c (expand_builtin_mathfn): Wrap argument in
7664         save_expr directly instead of re-building the call.
7665         (expand_builtin_mathfn_2): Likewise.
7666         (expand_builtin_mathfn_3): Likewise.
7667         (expand_builtin_interclass_mathfn): Likewise.
7668         (expand_builtin_int_roundingfn): Set arg.
7669         (expand_builtin_int_roundingfn_2): Likewise.
7670
7671 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
7672
7673         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
7674         *sse_nand<mode>3, *sse_xor<mode>3): New.
7675
7676 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
7677
7678         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
7679         * config/i386/i386.c (print_operand): Handle ';' code.  Output
7680         semicolon for TARGET_MACHO.
7681         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
7682         emit semicolon after 'lock' prefix.
7683         (sync_double_compare_and_swap<mode>): Ditto.
7684         (*sync_double_compare_and_swapdi_pic): Ditto.
7685         (*sync_compare_and_swap_cc<mode>): Ditto.
7686         (sync_double_compare_and_swap_cc<mode>): Ditto.
7687         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
7688         (sync_old_add<mode>): Ditto.
7689         (sync_add<mode>): Ditto.
7690         (sync_sub<mode>): Ditto.
7691         (sync_ior<mode>): Ditto.
7692         (sync_and<mode>): Ditto.
7693         (sync_xor<mode>): Ditto.
7694
7695 2007-08-22  Chao-ying Fu  <fu@mips.com>
7696
7697         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
7698         in DEF_RTL_EXPR.
7699         (copy_rtx): Handle CONST_FIXED.
7700         (rtx_equal_p): Likewise.
7701         * rtl.h (fixed_value.h): New include.
7702         (rtx_def): Add a new field of fixed_value to u.
7703         (XCNMPFV): Define for accessing fixed_value.
7704         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
7705         Define.
7706         * rtl.def (CONST_FIXED): New constant.
7707         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
7708         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
7709         US_ASHIFT): New codes.
7710         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
7711         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
7712         unsigned_fract_convert, unsigned_sat_fract): Document them.
7713         * varasm.c (assemble_integer): Extend to support fixed-point constants
7714         by using different machine classes.
7715         (decode_addr_const): Handle FIXED_CST.
7716         (const_hash_1): Likewise.
7717         (compare_constant): Likewise.
7718         (copy_constant): Likewise.
7719         (const_rtx_hash_1): Handle CONST_FIXED.
7720         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
7721         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7722         MODE_VECTOR_UACCUM.
7723         (initializer_constant_valid_p): Handle FIXED_CST.
7724         (output_constant): Support FIXED_POINT_TYPE.
7725         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
7726         * cse.c (hash_rtx): Support CONST_FIXED.
7727         (exp_equiv_p): Likewise.
7728         (cannon_reg): Likewise.
7729         (fold_rtx): Likewise.
7730         (equiv_constant): Likewise.
7731         (cse_process_notes_1): Likewise.
7732         (count_reg_usage): Likewise.
7733         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
7734         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
7735         (wrap_constant): Check CONST_FIXED.
7736         (cselib_hash_rtx): Support CONST_FIXED.
7737         (cselib_subst_to_values): Likewise.
7738         * df-scan.c (df_uses_record): Likewise.
7739         * gcse.c (want_to_gcse_p): Likewise.
7740         (oprs_unchanged_p): Likewise.
7741         (oprs_not_set_p): Likewise.
7742         (compute_transp): Likewise.
7743         (extract_mentioned_regs_helper): Likewise.
7744         * genemit.c (gen_exp): Likewise.
7745         * local-alloc.c (equiv_init_varies_p): Likewise.
7746         (contains_replace_regs): Likewise.
7747         (memref_referenced_p): Likewise.
7748         * loop-invariant.c (check_maybe_invariant): Likewise.
7749         (hash_invariant_expr_1): Likewise.
7750         (invariant_expr_equal_p): Likewise.
7751         * postreload-gcse.c (oprs_unchanged_p): Likewise.
7752         * regclass.c (reg_scan_mark_refs): Likewise.
7753         * regrename.c (scan_rtx): Likewise.
7754         * resource.c (mark_referenced_resources): Likewise.
7755         (mark_set_resources): Likewise.
7756         * rtlanal.c (rtx_unstable_p): Likewise.
7757         (rtx_varies_p): Likewise.
7758         (count_occurrences): Likewise.
7759         (reg_mentioned_p): Likewise.
7760         (modified_between_p): Likewise.
7761         (modified_in_p): Likewise.
7762         (volatile_insn_p): Likewise.
7763         (volatile_refs_p): Likewise.
7764         (side_effects_p): Likewise.
7765         (may_trap_p_1): Likewise.
7766         (inequality_comparisons_p): Likewise.
7767         (computed_jump_p_1): Likewise.
7768         (commutative_operand_precedence): Likewise.
7769         * sched-deps.c (sched_analyze_2): Likewise.
7770         * sched-vis.c (print_value): Likewise.
7771         * reload.c (operands_match_p): Likewise.
7772         (subst_reg_equivs): Likewise.
7773         * reload1.c (eliminate_regs_1): Likewise.
7774         (elimination_effects): Likewise.
7775         (scan_paradoxical_subregs): Likewise.
7776         * alias.c (rtx_equal_for_memref_p): Likewise.
7777         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
7778         * emit-rtl.c (const_fixed_htab): New hash table.
7779         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
7780         Declare.
7781         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
7782         const_fixed_from_fixed_value): New functions.
7783         (verify_rtx_sharing): Handle CONST_FIXED.
7784         (copy_rtx_if_shared_1): Likewise.
7785         (reset_used_flags): Likewise.
7786         (set_used_flags): Likewise.
7787         (copy_insn_1): Likewise.
7788         (init_emit_once): Create const_fixed_htab.
7789         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
7790
7791 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
7792
7793         PR tree-optimization/32949
7794         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
7795         before failing for ivs with non-constant step.
7796
7797 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
7798
7799         * doc/md.texi (Iterators): Renamed from Macros.  All contents
7800         changed to reflect rename of respectively define_code_macro and
7801         define_mode_macro to define_code_iterator and define_mode_iterator.
7802         (Mode Iterators, Code Iterators): Similar.
7803         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
7804         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
7805         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
7806         (initialize_iterators, find_iterator, check_code_iterator)
7807         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
7808         (read_mapping, read_rtx_1): Similar.
7809         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
7810         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
7811         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
7812         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
7813         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
7814         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
7815         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
7816         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
7817         config/rs6000/sync.md, config/rs6000/rs6000.md,
7818         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
7819         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
7820         config/vax/vax.md, config/bfin/bfin.md: Similar.
7821
7822 2007-08-22  David Daney  <ddaney@avtrex.com>
7823
7824         * doc/install.texi (Testing): Mention testing on a simulator.
7825
7826 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
7827
7828         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
7829
7830         * doc/libgcc.texi (Decimal float library routines): Fix formatting
7831         and rearrange floating point conversion functions into different
7832         categories.
7833
7834 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
7835
7836         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
7837         dfa_post_advance_cycle): New scheduler hooks.
7838         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
7839         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
7840         new hooks.
7841         (TARGET_SCHED): Use them.
7842         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
7843         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
7844         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
7845
7846         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
7847         function to facilitate debugging.
7848         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
7849         (output_insn_has_dfa_reservation_p): New static function to output
7850         insn_has_dfa_reservation_p ().
7851         (write_automata): Use it.
7852         * genattr.c (main): Output declaration for
7853         insn_has_dfa_reservation_p ().
7854
7855 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
7856             Richard Guenther <rguenther@suse.de>
7857         
7858         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
7859         * simplify_rtx (simplify_binary_operation_1): Likewise.
7860                 
7861 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7862
7863         PR rtl-optimization/32557
7864         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
7865         of REGNO (mws->mw_reg).
7866
7867 2007-08-22  Richard Guenther  <rguenther@suse.de>
7868
7869         PR middle-end/33007
7870         * builtins.c (expand_builtin_int_roundingfn): Replace call
7871         argument wrapped with SAVE_EXPR directly.
7872         (expand_builtin_int_roundingfn_2): Likewise.
7873
7874 2007-08-22  Richard Guenther  <rguenther@suse.de>
7875
7876         * tree-inline.c (inlinable_function_p): Restore disregarding
7877         inline limits for GNU extern inline functions.
7878
7879 2007-08-22  Richard Guenther  <rguenther@suse.de>
7880
7881         PR middle-end/32563
7882         * tree.c (host_integerp): Treat sizetype as signed as it is
7883         sign-extended.
7884
7885 2007-08-21  Ian Lance Taylor  <iant@google.com>
7886
7887         PR tree-optimization/33134
7888         * tree-vrp.c (adjust_range_with_scev): Call
7889         set_value_range_to_value.
7890
7891 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
7892
7893         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
7894         prototype.
7895         
7896 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
7897
7898         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
7899         whitespace.
7900
7901 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
7902
7903         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
7904         cases to set eight bytes at a time.
7905         (expand_block_move): Likewise.
7906         
7907 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
7908
7909         PR debug/32610
7910         * dwarf2out.c (gen_decl_die): Don't call
7911         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
7912
7913 2007-08-21  Paul Brook  <paul@codesourcery.com>
7914             Nathan Sidwell  <nathan@codesourcery.com>
7915             Mark Mitchell  <mark@codesourcery.com>
7916             Joseph Myers  <joseph@codesourcery.com>
7917
7918         * configure.ac: Add --with-pkgversion and --with-bugurl.
7919         * configure: Regenerate.
7920         * doc/install.texi: Document them.
7921         * version.c (version_string): Remove VERSUFFIX.
7922         (VERSUFFIX): Remove.
7923         (pkgversion_string): New.
7924         (bug_report_url): Do not hard-code initializer.
7925         * version.h (pkgversion_string): Declare.
7926         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
7927         Define.
7928         (version.o): Define PKGVERSION and BUGURL.
7929         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
7930         (%.pod): Define BUGURL.
7931         * gcc.c (process_command, main): Use pkgversion_string.
7932         * toplev.c (compile_file, print_version): Likewise.
7933         * protoize.c (main): Likewise.
7934         * gcov.c (print_version): Likewise.  Update copyright date.
7935         * gcov-dump.c (print_version): Likewise.  Update copyright date.
7936         * mips-tdump.c (main): Likewise.  Update copyright date.
7937         * mips-tfile.c (main): Likewise.  Update copyright date.
7938         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
7939         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
7940         shorten description.
7941         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
7942         * doc/gccint.texi: Likewise.
7943         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
7944         Update copyright date.
7945
7946 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
7947
7948         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
7949         (ix86_expand_strlensi_unroll_1): Ditto.
7950         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
7951         (ix86_expand_carry_flag_compare): Update comment.
7952
7953 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
7954
7955         PR middle-end/32912
7956         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
7957         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
7958
7959 2007-08-21  Richard Guenther  <rguenther@suse.de>
7960
7961         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
7962
7963 2007-08-21  Richard Guenther  <rguenther@suse.de>
7964
7965         PR middle-end/33122
7966         * fold-const.c (fold_binary): Remove index +p PTR folding.
7967         Fix types of POINTER_PLUS_EXPR generated by folding of
7968         (PTR +p B) +p A.
7969
7970 2007-08-20  Chao-ying Fu  <fu@mips.com>
7971
7972         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
7973         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
7974         RID_ONEWAY, so that it can be checked in declspecs_add_type.
7975         (c_common_fixed_point_type_for_size): Declare.
7976         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
7977         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
7978         (c_token_starts_declspecs): Likewise.
7979         (c_parser_declspecs): Likewise.
7980         (c_parser_attributes): Likewise.
7981         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
7982         (c_declspecs): Add saturating_p.
7983         * c-decl.c (build_null_declspecs): Initialize saturating_p.
7984         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
7985         _Sat.  Handle RID_SAT.
7986         Avoid using void, bool, char, int, float, double, _Decimal32,
7987         _Decimal64, _Decimal128, and complex with _Sat.
7988         Handle RID_FRACT and RID_ACCUM.
7989         Make sure _Sat is used with _Fract or _Accum.
7990         (finish_declspecs): Handle cts_fract and cts_accum.
7991         * c-common.c (fixed-value.h): New include.
7992         (constant_expression_warning): Handle FIXED_CST.
7993         (overflow_warning): Likewise.
7994         (warnings_for_convert_and_check): Likewise.
7995         (c_common_fixed_point_type_for_size): New.
7996         (c_common_type_for_mode): Handle fixed-point modes to
7997         return various saturating/non-saturating, signed/unsigned types.
7998         (c_common_signed_or_unsigned_type): Support fixed-point types.
7999         (shorten_compare): Check fixed-point zero.
8000         Handle FIXED_POINT_TYPE.
8001         (c_common_truthvalue_conversion): Handle FIXED_CST.
8002         Handle FIXED_POINT_TYPE.
8003         (c_common_nodes_and_builtins): Record builtin types for fixed-point
8004         types.
8005         (handle_mode_attribute): Handle fixed-point modes.  Need to check
8006         if the signness of base type and fixed-point modes are consistent.
8007         (handle_vector_size_attribute): Handle fixed-point modes.
8008         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
8009         (warn_for_div_by_zero): Check fixed-point zero.
8010         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
8011         a common fixed-point type based on fbit, ibit, sign, and saturation.
8012         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
8013         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
8014         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
8015         (convert_for_assignment): Support FIXED_POINT_TYPE.
8016         (digest_init): Handle FIXED_POINT_TYPE.
8017         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
8018         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
8019         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
8020         GE_EXPR, LT_EXPR, GT_EXPR.
8021         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
8022         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
8023         * target.h (gcc_target): Add fixed_point_supported_p.
8024         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
8025         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
8026         (default_fixed_point_supported_p): Define.
8027         * targhooks.h (default_fixed_point_supported_p): Declare.
8028         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
8029         * doc/install.texi (Configuration): Add --enable-fixed-point.
8030         * configure.ac (--enable-fixed-point): New to enable fixed-point
8031         arithmetic extension to C.  For mips targets, we enable it by default.
8032         * configure, config.in: Regenerate.
8033
8034 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
8035
8036         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
8037
8038 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
8039
8040         * dwarf2out.c (text_section_used): Move declaration outside ifdef
8041         DWARF2_DEBUGGING_INFO.
8042         (cold_text_section_used): Same.
8043         (cold_text_section): Same.
8044
8045 2007-08-20  Richard Guenther  <rguenther@suse.de>
8046
8047         * c-typeck.c (convert_for_assignment): Use the type of
8048         the member for the initialization.
8049
8050 2007-08-20  Richard Guenther  <rguenther@suse.de>
8051
8052         * c-objc-common.c (c_disregard_inline_limits): Remove.
8053         * c-objc-common.h (c_disregard_inline_limits): Likewise.
8054         * cgraphunit.c (cgraph_process_new_functions): Call
8055         disregard_inline_limits_p.
8056         (cgraph_preserve_function_body_p): Likewise.
8057         * ipa-inline.c (compute_inline_parameters): Likewise.
8058         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
8059         Remove.
8060         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
8061         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
8062         disregard_inline_limits langhook.
8063         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
8064         Remove.
8065         * langhooks.h (lang_hooks_for_tree_inlining): Remove
8066         disregard_inline_limits langhook.
8067         * tree-inline.c (disregard_inline_limits_p): New function.
8068         * tree-inline.h (disregard_inline_limits_p): Declare.
8069
8070 2007-08-20  Richard Guenther  <rguenther@suse.de>
8071
8072         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
8073         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
8074         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
8075         auto_var_in_fn_p langhook.
8076         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
8077         move ...
8078         * tree.c (auto_var_in_fn_p): ... here.
8079         (find_var_from_fn): Call auto_var_in_fn_p directly.
8080         * langhooks.h (lang_hooks_for_tree_inlining): Remove
8081         auto_var_in_fn_p langhook.
8082         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
8083         (copy_body_r): Likewise.
8084         (self_inlining_addr_expr): Likewise.
8085         * tree.h (auto_var_in_fn_p): Declare.
8086
8087 2007-08-20  Richard Guenther  <rguenther@suse.de>
8088
8089         * tree.c (WALK_SUBTREE): Call walk_tree_1.
8090         (walk_type_fields): Take lh parameter.
8091         (walk_tree): Rename to ...
8092         (walk_tree_1): ... this.  Do not call the walk_subtrees
8093         langhook but the now passed callback.  Pass lh on recursion.
8094         (walk_tree_without_duplicates): Rename to ...
8095         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
8096         and call walk_tree_1.
8097         * tree.h (walk_tree_lh): New typedef.
8098         (walk_tree_1): Declare.
8099         (walk_tree_without_duplicates_1): Likewise.
8100         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
8101         (walk_tree_without_duplicates): New define to
8102         walk_tree_without_duplicates_1 with NULL lh parameter.
8103         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
8104         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
8105         langhook.
8106         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
8107         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
8108         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
8109         initializer.
8110
8111 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8112
8113         PR middle-end/30564
8114         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
8115         code in front of the compacting of basic blocks.
8116         Move the folding of statements inbetween the cgraph checking
8117         and compacting of basic blocks.
8118
8119 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8120            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
8121
8122         PR target/32522
8123         * config/alpha/alpha.c (va_list_skip_additions): Check for
8124         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
8125         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
8126         PLUS_EXPR when checking ap.__base.
8127         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
8128         when doing addition on pointer types.  Use size_int instead of
8129         build_int_cst.
8130         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
8131         ptr_type in the second operand.
8132
8133 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
8134
8135         PR target/33115
8136         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
8137
8138 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8139
8140         PR middle-end/32940
8141         * cfgexpand.c  (expand_one_register_var): Mark pointer
8142         DECL_ARTIFICIAL as REG_POINTER also.
8143         * stmt.c (expand_decl): Likewise.
8144
8145 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
8146
8147         Fix PR 32772
8148         Fix PR 32716
8149         Fix PR 32328
8150         Fix PR 32303
8151
8152         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
8153         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
8154         on_worklist argument and avoid adding things to worklist multiple
8155         times.
8156         (add_to_worklist): Ditto.
8157         (mark_aliases_call_clobbered): Mark entire structure clobbered if
8158         single SFT is clobbered.
8159         (set_initial_properties): Ditto.
8160         (compute_call_clobbered): Update for changes to function
8161         arguments.
8162         (create_overlap_variables_for): Always create SFT for offset 0.
8163         (create_structure_vars): Handle PHI's, since we are in SSA form at
8164         this point.
8165         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
8166         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
8167         TARGET_MEM_REF.
8168         (add_vars_for_offset): Figure out aliases from access + points-to.
8169         (add_virtual_operand): Use add_vars-for_offset.
8170         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
8171         (add_call_clobber_ops): Remove makes_clobbering_call set.
8172         (get_expr_operands): Always pass through the INDIRECT_REF
8173         reference.
8174         * tree-ssa-structalias.c (struct constraint_graph): Remove
8175         variables member.
8176         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
8177         address_taken, pt_used, number_incoming.
8178         (FIRST_ADDR_NODE): Removed.
8179         (merge_graph_nodes): Remove broken code for the moment.
8180         (init_graph): New function.
8181         (build_pred_graph): Remove code to init_graph.
8182         Add location equivalence support.
8183         (struct scc_info): Rename roots to deleted.
8184         (scc_visit): Ditto.
8185         (init_scc_info): Ditto
8186         (init_topo_info): Use graph->size.
8187         (compute_topo_order): Ditto.
8188         (do_da_constraint): Removed.
8189         (do_sd_constraint): Remove calls to find().
8190         set_union_with_increment should always get 0 as last arg here.
8191         (do_complex_constraint): Replace do_da_constraint with assert.
8192         Stop calling find.
8193         (struct equiv_class_label): New.
8194         (pointer_equiv_class_table): Ditto.
8195         (location_equiv_class_table): Ditto.
8196         (equiv_class_label_hash): Ditto.
8197         (equiv_class_label_eq): Ditto
8198         (equiv_class_lookup): Ditto.
8199         (equiv_class_ladd): Ditto.
8200         (pointer_equiv_class): Ditto.
8201         (location_equiv_class): Ditto.
8202         (condense_visit): Rename and rewrite from label_visit to do only
8203         SCC related stuff for HU.
8204         (label_visit): Do HU work for HU.
8205         (perform_var_substitution): Update to do HU and location
8206         equivalence.
8207         (free_var_substitution_info): Update to free HU and location
8208         equivalence structures.  */
8209         (find_equivalent_node): Update for pointer but not location
8210         equivalence.
8211         (unite_pointer_equivalences): New function.
8212         (move_complex_constraints): Rewrite to only do moving.
8213         (rewrite_constraints): Split out of move_complex_constraints.
8214         (solve_graph): Use graph->size.
8215         (process_constraint_1): Add from_call argument, use it.
8216         Split *a = &b into two constraints.
8217         (process_constraint): Use new process_constraint_1.
8218         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
8219         (get_constraint_for): Handle non-pointer integers properly.
8220         Remove code that used to handle structures.
8221         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
8222         with unknown addends.
8223         (handle_rhs_call): New function.
8224         (find_func_aliases): Use handle_rhs_call.
8225         (set_uids_in_ptset): Add an assert.
8226         (set_used_smts): Fix bug in not considering unified vars.
8227         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
8228         (compute_points_to_sets): Update for other function changes.
8229         (delete_points_to_sets): Ditto.
8230         (ipa_pta_execute): Ditto.
8231         (pass_ipa_pta): We need to update SSA after ipa_pta.
8232         
8233 2007-08-19  Jan Hubicka  <jh@suse.cz>
8234
8235         * i386.md: Replace "rim" and "mri" constraints by "g".
8236
8237 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
8238
8239         * dwarf2out.c (text_section_used, cold_text_section_used,
8240         cold_text_section, dwarf2out_note_section_used): New.
8241         (dwarf2out_init): Initialize cold_text_section.
8242         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
8243         dwarf2out_note_section_used.
8244         (size_of_aranges): Only count entry for text section if it was
8245         used.  Count entry for cold text section if it was used.
8246         (output_aranges): Only output entries for text section and cold
8247         text section if they were used.
8248
8249 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
8250
8251         * tree-pretty-print.c (debug_generic_expr): Add a comment about
8252         the function.
8253         (debug_generic_stmt): Likewise.
8254         (debug_tree_chain): Likewise.
8255
8256 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
8257
8258         * tree-data-refs.c (split_constant_offset): Expose.
8259         * tree-data-refs.h (split_constant_offset): Add declaration.
8260
8261         * tree-vectorizer.h (dr_alignment_support): Renamed
8262         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
8263         Added a new value dr_explicit_realign.
8264         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
8265         dr_offset, dr_step, and dr_aligned_to, along with new access
8266         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
8267         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
8268         STMT_VINFO_DR_ALIGNED_TO.
8269
8270         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
8271         documentation.
8272         In case of outer-loop vectorization with non-fixed misalignment - use
8273         the dr_explicit_realign scheme instead of the optimized realignment
8274         scheme.
8275         (new_stmt_vec_info): Initialize new fields.
8276
8277         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
8278         'nested_in_vect_loop' case. Change verbosity level.
8279         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
8280         Don't fail on zero step in the outer-loop for loads.
8281         (vect_analyze_data_refs): Call split_constant_offset to calculate
8282         base, offset and init relative to the outer-loop.
8283
8284         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
8285         BSI function argument with a new function argument - at_loop.
8286         Simplify the condition that determines STEP. Takes additional argument
8287         INV_P. Support outer-loop vectorization (handle the
8288         nested_in_vect_loop case), including zero step in the outer-loop. Call
8289         vect_create_addr_base_for_vector_ref with additional argument.
8290         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
8291         Updated function documentation. Handle the 'nested_in_vect_loop' case.
8292         Fixed and simplified calculation of step.
8293         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
8294         of bsi, and with additional argument. Call bump_vector_ptr with
8295         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
8296         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
8297         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
8298         when the realignment setup needs to take place inside the loop.
8299         Support the dr_explicit_realign scheme. Allow generating the optimized
8300         realignment scheme for outer-loop vectorization. Added documentation.
8301         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
8302         the 'nested_in_vect_loop' case, including loads that are invariant in
8303         the outer-loop and the realignment schemes. Handle the case when the
8304         realignment setup needs to take place inside the loop. Call
8305         vect_setup_realignment with additional arguments.  Call
8306         vect_create_data_ref_ptr with additional argument and with loop instead
8307         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
8308         (vect_gen_niters_for_prolog_loop): Call
8309         vect_create_addr_base_for_vector_ref with additional arguments.
8310         (vect_create_cond_for_align_checks): Likewise.
8311         (bump_vector_ptr): Updated to support the new dr_explicit_realign
8312         scheme: takes additional argument bump; argument ptr_incr is now
8313         optional; updated documentation.
8314         (vect_init_vector): Takes additional argument (bsi). Use it, if
8315         available, to insert the vector initialization.
8316         (get_initial_def_for_induction): Pass additional argument in call to
8317         vect_init_vector.
8318         (vect_get_vec_def_for_operand): Likewise.
8319         (vect_setup_realignment): Likewise.
8320         (vectorizable_load): Likewise.
8321
8322 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
8323
8324         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
8325         as argument instead of struct loop.
8326         (nested_in_vect_loop_p): New function.
8327         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
8328         vect_used_in_outer.
8329         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
8330         from other phis in the loop.
8331         (destroy_loop_vec_info): Add additional argument to declaration.
8332
8333         * tree-vectorizer.c (supportable_widening_operation): Also check if
8334         nested_in_vect_loop_p (don't allow changing the order in this case).
8335         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
8336         of struct loop. Call nested_in_vect_loop_p and don't require
8337         flag_unsafe_math_optimizations if it returns true.
8338         (new_stmt_vec_info): When setting def_type for phis differentiate 
8339         loop-header phis from other phis.
8340         (bb_in_loop_p): New function.
8341         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
8342         just update their loop_vinfo.  Order of BB traversal now matters -
8343         call dfs_enumerate_from with bb_in_loop_p.
8344         (destroy_loop_vec_info): Takes additional argument to control whether
8345         stmt_vinfo of the loop stmts should be destroyed as well.
8346         (vect_is_simple_reduction): Allow the "non-reduction" use of a
8347         reduction stmt to be defines by a non loop-header phi.
8348         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
8349
8350         * tree-vect-transform.c (vectorizable_reduction): Call
8351         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
8352         (vectorizable_call): Likewise.
8353         (vectorizable_conversion): Likewise.
8354         (vectorizable_operation): Likewise.
8355         (vectorizable_type_promotion): Likewise.
8356         (vectorizable_type_demotion): Likewise.
8357         (vectorizable_store): Likewise.
8358         (vectorizable_live_operation): Likewise.
8359         (vectorizable_reduction): Likewise. Also pass loop_info to
8360         vect_is_simple_reduction instead of loop.
8361         (vect_init_vector): Call nested_in_vect_loop_p.
8362         (get_initial_def_for_reduction): Likewise.
8363         (vect_create_epilog_for_reduction): Likewise.
8364         (vect_init_vector): Check which loop to work with, in case there's an
8365         inner-loop.
8366         (get_initial_def_for_inducion): Extend to handle outer-loop
8367         vectorization. Fix indentation.
8368         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
8369         In the case vect_induction_def get the vector def from the induction
8370         phi node, instead of calling get_initial_def_for_inducion.
8371         (get_initial_def_for_reduction): Extend to handle outer-loop 
8372         vectorization.
8373         (vect_create_epilog_for_reduction): Extend to handle outer-loop
8374         vectorization.
8375         (vect_transform_loop): Change assert to just skip this case.  Add a
8376         dump printout.
8377         (vect_finish_stmt_generation): Add a couple asserts.
8378
8379         (vect_estimate_min_profitable_iters): Multiply
8380         cost of inner-loop stmts (in outer-loop vectorization) by estimated
8381         inner-loop bound.
8382         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
8383         this is an inner-loop reduction in outer-loop vectorization.
8384
8385         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
8386         Same code as what used to be vect_analyze_scalar_cycles, only with
8387         additional argument loop, and loop_info passed to
8388         vect_is_simple_reduction instead of loop.
8389         (vect_analyze_scalar_cycles): Code factored out into
8390         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
8391         Updated documentation.
8392         (analyze_operations): Check for inner-loop loop-closed exit-phis during
8393         outer-loop vectorization that are live or not used in the outerloop,
8394         cause this requires special handling.
8395         (vect_enhance_data_refs_alignment): Don't consider versioning for
8396         nested-loops.
8397         (vect_analyze_data_refs): Check that there are no datarefs in the
8398         inner-loop.
8399         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
8400         and vect_used_in_outer_by_reduction cases.
8401         (process_use): Also consider the case of outer-loop stmt defining an
8402         inner-loop stmt and vice versa.
8403         (vect_analyze_loop_1): New function.
8404         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
8405         loops.  Call vect_analyze_loop_1.
8406         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
8407         been vectorized.  Call destroy_loop_vec_info with additional argument.
8408
8409         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
8410         in the inner-loop when doing outer-loop vectorization. Add
8411         documentation and printout.
8412         (vect_recog_dot_prod_pattern): Likewise. Also add check for
8413         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
8414
8415 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
8416
8417         * tree-affine.h (print_aff): New prototype.
8418         (debug_aff): Likewise.
8419         * tree-affine.c (print_aff): New function.
8420         (debug_aff): Likewise.
8421
8422 2007-08-18  Paul Brook  <paul@codesourcery.com>
8423             Joseph Myers  <joseph@codesourcery.com>
8424
8425         * common.opt (-fdebug-prefix-map=): New option.
8426         * opts.c: Include debug.h.
8427         (common_handle_option): Handle -fdebug-prefix-map.
8428         * final.c: Include ggc.h.
8429         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
8430         remap_debug_filename): New.
8431         * Makefile.in (final.o, opts.o): Update dependencies.
8432         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
8433         * configure.ac: Check for assembler --debug-prefix-map support.
8434         * configure, config.in: Regenerate.
8435         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
8436         (ASM_DEBUG_SPEC): Include ASM_MAP.
8437         * doc/install.texi (--with-debug-prefix-map): Document.
8438         * doc/invoke.texi (-fdebug-prefix-map): Document.
8439         * dbxout.c (dbxout_init, dbxout_start_source_file,
8440         dbxout_source_file): Call remap_debug_filename.
8441         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
8442         dwarf2out_start_source_file, dwarf2out_finish): Call
8443         remap_debug_filename.
8444         (file_table_relative_p): Do not check d->emitted_number.
8445         * toplev.c (output_file_directive): Call remap_debug_filename.
8446         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
8447         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
8448
8449 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8450
8451         * loop-invariant.c (find_invariants_to_move): Add missing macro
8452         argument.
8453
8454 2007-08-17  Tom Tromey  <tromey@redhat.com>
8455
8456         * tree.h (struct tree_label_decl): Removed old "java" fields.
8457
8458 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
8459             Nigel Stephens  <nigel@mips.com>
8460
8461         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
8462         Treat -mno-data-in-code and -mcode-xonly as aliases for
8463         -mcode-readable=no and -mcode-readable=pcrel respectively.
8464         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
8465         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
8466         (MULTILIB_DIRNAMES): Update accordingly.
8467
8468 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
8469
8470         * Makefile.in (version.o): Depend on $(REVISION) only if
8471         REVISION_s is defined.
8472
8473 2007-08-17  Sa Liu  <saliu@de.ibm.com>
8474             Ulrich Weigand  <uweigand@de.ibm.com>
8475
8476         PR middle-end/32970
8477         * tree.c (reconstruct_complex_type): For a pointer to a vector,
8478         use build_qualified_type to retain qualifiers of the base type.
8479
8480 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
8481
8482         * config/score/score.md : Update pattern tablejump.
8483         * config/score/score.c : Update score_initialize_trampoline 
8484         function.
8485         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
8486         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
8487         * doc/contrib.texi: Add my entry.
8488
8489 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
8490
8491         * Makefile.in (REVISION): New.
8492         (REVISION_c): New.
8493         (REVISION_s): New.
8494         (version.o): Also depend on $(REVISION). Add
8495         -DREVISION=$(REVISION_s).
8496
8497         * version.c (version_string): Add REVISION.
8498
8499 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
8500
8501         * tree-eh.c (lower_try_finally_onedest): Reset the locus
8502         of GOTO that's relocated to a different block.
8503
8504 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8505
8506         * c-common.c (const_strip_array_types): New.
8507         * c-common.h (lang_missing_noreturn_ok_p): Delete.
8508         (const_strip_array_types): New.
8509         * c-objc-common.c (c_disregard_inline_limits,
8510         c_warn_unused_global_decl): Constify.
8511         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
8512         c_vla_type_p, c_incomplete_type_error): Likewise.
8513         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
8514         * hooks.c (hook_bool_const_tree_false): New.
8515         * hooks.h (hook_bool_const_tree_false): Likewise.
8516         * langhooks-def.h (lhd_warn_unused_global_decl,
8517         lhd_incomplete_type_error, lhd_expr_size,
8518         lhd_tree_inlining_disregard_inline_limits,
8519         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
8520         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
8521         * langhooks.c (lhd_warn_unused_global_decl,
8522         lhd_incomplete_type_error,
8523         lhd_tree_inlining_disregard_inline_limits,
8524         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
8525         lhd_expr_size): Likewise.
8526         * langhooks.h (lang_hooks_for_tree_inlining,
8527         lang_hooks_for_tree_dump, lang_hooks_for_types,
8528         lang_hooks_for_decls, lang_hooks): Likewise.
8529         * pointer-set.c (pointer_set_t, pointer_set_create,
8530         pointer_set_contains, insert_aux, pointer_set_insert,
8531         pointer_set_traverse, pointer_map_t, pointer_map_create,
8532         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
8533         Likewise.
8534         * pointer-set.h (pointer_set_contains, pointer_set_insert,
8535         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
8536         pointer_map_traverse): Likewise.
8537         * predict.c (assert_is_empty): Likewise.
8538         * tree-affine.c (free_name_expansion): Likewise.
8539         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
8540         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
8541         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
8542
8543 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
8544
8545         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
8546         field.
8547         (destroy_loop_vec_info): Add call to VEC_free.
8548         * tree-vectorizer.h (may_alias_ddrs): Define.
8549         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
8550         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
8551         Change reporting to dump.
8552         (vect_is_duplicate_ddr): New.
8553         (vect_mark_for_runtime_alias_test): New.
8554         (vect_analyze_data_ref_dependences) Add call to
8555         vect_mark_for_runtime_alias_test.
8556         (vect_enhance_data_refs_alignment): Define local variable
8557         vect_versioning_for_alias_required, don't perform
8558         peeling for alignment if versioning for alias is
8559         required.
8560         (vect_enhance_data_refs_alignment): Use
8561         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
8562         PARAM_VECT_MAX_VERSION_CHECKS.
8563         * tree-vect-transform.c
8564         (vect_create_cond_for_alias_checks): New.
8565         (vect_transform_loop): Add call to
8566         vect_create_cond_for_alias_checks.
8567         (vect_vfa_segment_size): New.
8568         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
8569         Rename.
8570         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
8571         * gcc/doc/invoke.texi
8572         (vect-max-version-for-alignment-checks): Document.
8573         (vect-max-version-for-alias-checks): Document.
8574         (vect-max-version-checks): Remove.
8575      
8576 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
8577
8578         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
8579         the same line as the instruction for all asm dialects.
8580         (*rep_movsi): Ditto.
8581         (*rep_movsi_rex64): Ditto.
8582         (*rep_movqi): Ditto.
8583         (*rep_movqi_rex64): Ditto.
8584         (*rep_stosdi_rex64): Ditto.
8585         (*rep_stossi): Ditto.
8586         (*rep_stossi_rex64): Ditto.
8587         (*rep_stosqi): Ditto.
8588         (*rep_stosqi_rex64): Ditto.
8589         (*cmpstrnqi_nz_1): Ditto.
8590         (*cmpstrnqi_nz_rex_1): Ditto.
8591         (*cmpstrnqi_1): Ditto.
8592         (*cmpstrnqi_rex_1): Ditto.
8593         (*strlenqi_1): Ditto.
8594         (*strlenqi_rex_1): Ditto.
8595         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
8596         prefix on the same line as the instruction for all asm dialects.
8597         (sync_double_compare_and_swap<mode>): Ditto.
8598         (*sync_double_compare_and_swapdi_pic): Ditto.
8599         (*sync_compare_and_swap_cc<mode>): Ditto.
8600         (sync_double_compare_and_swap_cc<mode>): Ditto.
8601         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
8602         (sync_old_add<mode>): Ditto.
8603         (sync_add<mode>): Ditto.
8604         (sync_sub<mode>): Ditto.
8605         (sync_ior<mode>): Ditto.
8606         (sync_and<mode>): Ditto.
8607         (sync_xor<mode>): Ditto.
8608
8609 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
8610
8611         PR middle-end/32897
8612         * reload.c (find_reloads): Check that the memory returned by
8613         find_reloads_toplev was not the result of forcing a constant
8614         to memory.
8615         (find_reloads_toplev): Always use simplify_gen_subreg to get
8616         the subreg of a constant.  If the result is also a constant,
8617         but not a legitimate one, force it into the constant pool
8618         and reload its address.
8619
8620 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
8621
8622         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
8623         POPCOUNT.
8624
8625 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
8626
8627         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
8628         directive for the current vector ABI.
8629
8630 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
8631
8632         PR target/32963
8633         * caller-save.c (reg_save_code): Set invalide status on restore code.
8634         
8635 2007-08-15  Diego Novillo  <dnovillo@google.com>
8636
8637         * tree-ssa-alias.c (compute_memory_partitions): Use
8638         alias_bitmap_obstack to allocate bitmaps.
8639         (reset_alias_info): Factor out of init_alias_info.
8640         Mark all name tags not associated to an SSA name for renaming.
8641         (init_alias_info): Call it.
8642         (create_name_tags): Tidy.  Add comments.
8643         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
8644
8645 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
8646
8647         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
8648         scheduler dependencies.
8649
8650 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8651
8652         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
8653         "register_operand".
8654         (*iorsi_1_zext): Likewise.
8655         (*iorsi_1_zext_imm): Likewise.
8656         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
8657         with "rm"/"xm" constraint.
8658         (sse2_vmsqrtv2df2): Likewise.
8659
8660 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
8661
8662         PR middle-end/33074
8663         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
8664         REG_LIBCALL note.
8665
8666 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
8667
8668         * tree-pass.h (PROP_pta): Removed.
8669         (TODO_rebuild_alias): New.
8670         (pass_may_alias): Removed.
8671         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
8672         aliasing if we changed something.
8673         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
8674         SSA internally.
8675         (pass_may_alias): Removed.
8676         (create_structure_vars): Return TODO_rebuild_alias.
8677         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
8678         * tree-sra.c (tree_sra): Only rebuild aliasing if something
8679         changed.
8680         (tree_sra_early): We never affect aliasing right now.
8681         * tree-flow.h (compute_may_aliases): New prototype.
8682         * passes.c: Remove pass_may_alias from the passes.
8683         (execute_function_todo): Support TODO_rebuild_alias.    
8684
8685 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
8686
8687         * i386.c: (legitimize_address): Move dllimported variable check
8688         infront of legitimizing pic address of CONST symbols.
8689
8690 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
8691
8692         PR tree-optimization/32941
8693         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
8694         (goto_queue_cmp): Remove.
8695         (find_goto_replacement): Change search method.
8696         (maybe_record_in_goto_queue): Add assert.
8697         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
8698         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
8699
8700 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8701
8702         * alias.c (component_uses_parent_alias_set): Constify.
8703         * alias.h (component_uses_parent_alias_set): Likewise.
8704         * cfgrtl.c (print_rtl_with_bb): Likewise.
8705         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
8706         mpz_get_double_int): Likewise.
8707         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
8708         mpz_get_double_int): Likewise.
8709         * expr.c (is_aligning_offset, undefined_operand_subword_p,
8710         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
8711         Likewise.
8712         * expr.h (safe_from_p): Likewise.
8713         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
8714         Likewise.
8715         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
8716         zero_sized_type, goa_lhs_expr_p): Likewise.
8717         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
8718         * rtl.h (print_rtl_with_bb): Likewise.
8719         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
8720         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
8721         * tree-flow-inline.h (bb_stmt_list): Constify.
8722         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
8723         cbsi_stmt): New.
8724         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
8725         const_first_stmt, const_last_stmt): New.
8726         (block_may_fallthru, empty_block_p): Constify.
8727         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
8728         EXPR_ONLY_BODY): New.
8729         (expr_first, expr_last, expr_only): Use macro for body.
8730         (const_expr_first, const_expr_last, const_expr_only): New.
8731         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
8732         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
8733         ctsi_prev, ctsi_stmt): New.
8734         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
8735         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
8736         * tree-ssa-loop-niter.c (loop_only_exit_p,
8737         derive_constant_upper_bound): Likewise.
8738         * tree-ssa-phiopt.c (empty_block_p): Likewise.
8739         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
8740         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
8741         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
8742         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
8743         * tree.c (get_type_static_bounds): Likewise.
8744         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
8745         (get_type_static_bounds): Constify.
8746
8747 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8748
8749         PR target/30315
8750         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
8751         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
8752         (*<addsub><mode>3_cc_overflow): New.
8753         (*add<mode>3_cconly_overflow): New.
8754         (*sub<mode>3_cconly_overflow): New.
8755         (*<addsub>si3_zext_cc_overflow): New.
8756         * config/i386/predicates.md (fcmov_comparison_operator): Accept
8757         CCCmode for LTU, GTU, LEU and GEU.
8758         (ix86_comparison_operator): Likewise.
8759         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
8760         * config/i386/i386.c (put_condition_code): Support CCCmode.
8761         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
8762         or MINUS expressions.
8763
8764 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
8765
8766         PR c/30428
8767         * c-typeck.c (build_binary_op): Disallow vector float types with
8768         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
8769
8770 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
8771
8772         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
8773         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
8774         (dep_def): New typedef.
8775         (init_dep_1, sd_debug_dep): Declare functions.
8776         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
8777         (debug_dep_links): Remove.
8778         (struct _deps_list): New field 'n_links'.
8779         (DEPS_LIST_N_LINKS): New macro.
8780         (FOR_EACH_DEP_LINK): Remove.
8781         (create_deps_list, free_deps_list, delete_deps_list): Remove
8782         declaration.
8783         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
8784         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
8785         (copy_deps_list_change_con, move_dep_link): Ditto.
8786         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
8787         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
8788         'dep_count'.
8789         (INSN_BACK_DEPS): Remove.
8790         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
8791         New macros.
8792         (INSN_DEP_COUNT): Remove.
8793         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
8794         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
8795         Declare global variables.
8796         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
8797         (add_forw_dep, compute_forward_dependences): Remove declarations.
8798         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
8799         (add_back_forw_dep, delete_back_forw_dep): Ditto.
8800         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
8801         functions.
8802         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
8803         New constants.
8804         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
8805         (sd_list_types_def): New typedef.
8806         (sd_next_list): Declare function.
8807         (struct _sd_iterator): New type.
8808         (sd_iterator_def): New typedef.
8809         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
8810         functions.
8811         (FOR_EACH_DEP): New cycle wrapper.
8812         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
8813         Declare functions.
8814         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
8815         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
8816         Ditto.
8817
8818         * sched-deps.c (init_dep_1): Make global.
8819         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
8820         constants.
8821         (dump_dep): New static function.
8822         (dump_dep_flags): New static variable.
8823         (sd_debug_dep): New function.
8824         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
8825         the list.
8826         (move_dep_link): Use remove_from_deps_list (), instead of
8827         detach_dep_link ().
8828         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
8829         (dep_link_is_detached_p): New static function.
8830         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
8831         instead.
8832         (dn_pool, dl_pool): New alloc_pools.
8833         (dn_pool_diff, dl_pool_diff): New static variables.
8834         (create_dep_node, delete_dep_node): New static function.
8835         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
8836         (deps_list_empty_p): Make it static.  Use 'n_links' field.
8837         (deps_pools_are_empty_p): New static function.
8838         (alloc_deps_list, delete_deps_list): Remove.
8839         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
8840         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
8841         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
8842         (forward_dependency_cache): Remove.
8843         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
8844         'back' from the names.  Change signature to use dep_t instead of
8845         equivalent quad.
8846         (add_back_dep): Ditto.  Make global.
8847         (check_dep_status): Rename to check_dep ().
8848         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
8849         New functions.
8850         (sd_finish_insn): Ditto.
8851         (sd_find_dep_between_no_cache): New static function.
8852         (sd_find_dep_between): New function.
8853         (ask_dependency_caches, set_dependency_caches): New static functions.
8854         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
8855         (add_or_update_dep_1): Separate pieces of functionality into
8856         ask_dependency_caches (), update_dependency_caches (),
8857         change_spec_dep_to_hard (), update_dep ().
8858         (get_back_and_forw_lists): New static function.
8859         (sd_add_dep): Separate setting of dependency caches into
8860         set_dependency_caches ().
8861         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
8862         New functions.
8863         (sd_delete_dep): Ditto.
8864         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
8865         (dump_lists): New static function.
8866         (sd_debug_lists): New debug function.
8867         (delete_all_dependences, fixup_sched_groups): Update to use
8868         sd_* infrastructure.
8869         (sched_analyze_2): Create data-speculative dependency only if
8870         data-speculation is enabled.
8871         (sched_analyze_insn): If insn cannot be speculative, make all its
8872         dependencies non-speculative.
8873         (sched_analyze): Use sd_init_insn ().
8874         (add_forw_dep, compute_forward_dependencies): Remove.
8875         (delete_dep_nodes_in_back_deps): New static function.
8876         (sched_free_deps): New function.
8877         (init_dependency_caches): Init alloc_pools.
8878         (extend_depedency_caches): Update after removing of
8879         forward_dependency_cache.
8880         (free_dependency_caches): Ditto.  Free alloc_pools.
8881         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
8882         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
8883         Ditto.
8884         (add_back_forw_dep, delete_back_forw_dep): Ditto.
8885         (add_dependence): Use init_dep ().
8886         (get_dep_weak_1): New static function.
8887         (get_dep_weak): Move logic to get_dep_weak_1 ().
8888         (dump_ds): New static function moved from haifa-sched.c:
8889         debug_spec_status ().
8890         (debug_ds): New debug function.
8891         (check_dep_status): Rename to check_dep ().  Update to check whole
8892         dependencies.
8893
8894         * haifa-sched.c (spec_info): Make global.
8895         (added_recovery_block_p): Rename to
8896         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
8897         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
8898         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
8899         to use new interfaces.
8900         (ok_for_early_queue_removal): Ditto.
8901         (schedule_block): Initialize logical uids of insns emitted by the
8902         target.
8903         (sched_init): Initialize new variable.
8904         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
8905         interfaces.
8906         (extend_global): Initialize insn data.
8907         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
8908         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
8909         new interfaces.
8910         (add_to_speculative_block): Update to use new interfaces.
8911         (create_recovery_block): Set new variables.
8912         (create_check_block_twin, fix_recovery_deps): Update to use new
8913         interfaces.
8914         (sched_insn_is_legitimate_for_speculation_p): New function.
8915         (speculate_insn): Move checking logic to
8916         sched_insn_is_legitimate_for_speculation_p ().
8917         (sched_remove_insn): Finalize sched-deps information of instruction.
8918         (clear_priorities, add_jump_dependencies): Update to use new
8919         interfaces.
8920         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
8921         
8922         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
8923         to use new interfaces.
8924         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
8925         (new_ready): Try to use control speculation only if it is available.
8926         (add_branch_dependences): Update to use new interfaces.
8927         (compute_block_backward_dependences): Rename to
8928         compute_block_dependences ().  Call
8929         targetm.sched.dependencies_evaluation_hook ().
8930         (free_block_dependencies): New static function.
8931         (debug_dependencies): Update to use new interfaces.
8932         (schedule_region): Remove separate computation of forward dependencies.
8933         Move call of targetm.sched.dependencies_evaluation_hook () to
8934         compute_block_dependences ().  Free dependencies at the end of
8935         scheduling the region.
8936
8937         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
8938         new interfaces.
8939         (add_deps_for_risky_insns): Ditto.
8940         (schedule_ebb): Remove separate computation of forward dependencies.
8941         Free dependencies at the end of scheduling the ebb.
8942
8943         * ddg.c (create_ddg_dependence): Update to use new interfaces.
8944         (build_intra_loop_deps): Ditto.  Remove separate computation of
8945         forward dependencies.  Free sched-deps dependencies.
8946
8947         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
8948         to use new interfaces.
8949         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
8950
8951         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
8952         new interfaces.
8953         (is_costly_group): Ditto.
8954
8955 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8956
8957         * alias.c (rtx_equal_for_memref_p): Constify.
8958         * basic-block.h (const_edge, const_basic_block): New.
8959         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
8960         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
8961         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
8962         probably_never_executed_bb_p, edge_probability_reliable_p,
8963         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
8964         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
8965         Likewise.
8966         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
8967         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
8968         Likewise.
8969         * cfganal.c (flow_active_insn_p, forwarder_block_p,
8970         flow_nodes_print, dfs_enumerate_from): Likewise.
8971         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
8972         control_flow_insn_p, count_basic_blocks): Likewise.
8973         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
8974         get_loop_body_with_size, loop_exit_edge_p): Likewise.
8975         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
8976         average_num_loop_insns, loop_exit_edge_p,
8977         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
8978         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
8979         average_num_loop_insns, seq_cost): Likewise.
8980         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
8981         * dominance.c (dominated_by_p): Likewise.
8982         * emit-rtl.c (validate_subreg): Likewise.
8983         * except.c (can_throw_internal, can_throw_external): Likewise.
8984         * except.h (can_throw_internal, can_throw_external): Likewise.
8985         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
8986         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
8987         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
8988         simple_mem, store_ops_ok, load_kills_store, find_loads,
8989         store_killed_in_insn, store_killed_after, store_killed_before,
8990         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
8991         Likewise.
8992         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
8993         noce_mem_write_may_trap_or_fault_p): Likewise.
8994         * pointer-set.c (pointer_set_contains, pointer_map_contains):
8995         Likewise.
8996         * pointer-set.h (pointer_set_contains, pointer_map_contains):
8997         Likewise.
8998         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
8999         probably_cold_bb_p, probably_never_executed_bb_p,
9000         edge_probability_reliable_p, br_prob_note_reliable_p,
9001         can_predict_insn_p): Likewise.
9002         * regclass.c (reg_set_to_hard_reg_set): Likewise.
9003         * resource.c (return_insn_p): Likewise.
9004         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
9005         Likewise.
9006         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
9007         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
9008         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
9009         verify_gimple_modify_stmt): Likewise.
9010         * tree-chrec.c (is_not_constant_evolution,
9011         is_multivariate_chrec_rec, is_multivariate_chrec,
9012         chrec_contains_symbols, chrec_contains_undetermined,
9013         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
9014         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
9015         eq_evolutions_p, scev_direction): Likewise.
9016         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
9017         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
9018         chrec_contains_symbols_defined_in_loop,
9019         chrec_contains_undetermined, tree_contains_chrecs,
9020         evolution_function_is_affine_multivariate_p,
9021         evolution_function_is_univariate_p, chrec_zerop,
9022         evolution_function_is_constant_p, evolution_function_is_affine_p,
9023         evolution_function_is_affine_or_constant_p,
9024         tree_does_not_contain_chrecs, chrec_type): Likewise.
9025         * tree-data-ref.c (tree_fold_divides_p,
9026         object_address_invariant_in_loop_p, dr_may_alias_p,
9027         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
9028         same_access_functions, constant_access_functions,
9029         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
9030         Likewise.
9031         * tree-flow.h (scev_direction): Likewise.
9032         * tree-gimple.c (is_gimple_stmt): Likewise.
9033         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
9034         Likewise.
9035         * tree-pretty-print.c (op_prio): Likewise.
9036         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
9037         analyzable_condition, backedge_phi_arg_p): Likewise.
9038         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
9039         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
9040         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
9041         Likewise.
9042
9043 2007-08-13  Dan Hipschman  <dsh@google.com>
9044
9045         PR c/32953
9046         * c-format.c (check_format_arg): Move check for zero-length
9047         format strings below the check for unterminated strings.
9048
9049 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
9050
9051         PR C/30427
9052         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
9053         types.
9054
9055 2007-08-13  Nick Clifton  <nickc@redhat.com>
9056
9057         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
9058
9059 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
9060
9061         PR fortran/32860
9062         * c-format.c (gcc_gfc_length_specs): New array.
9063         (gcc_gfc_char_table): Add unsigned specifier, and references to
9064         the l length modifier.
9065         (format_types_orig): Use the new gcc_gfc_length_specs.
9066
9067 2007-08-12  Sa Liu  <saliu@de.ibm.com>
9068
9069         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
9070         and with REG_RETVAL note after split.
9071
9072 2007-08-11  David Daney  <ddaney@avtrex.com>
9073
9074         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
9075         as ATTRIBUTE_UNUSED.
9076
9077 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
9078             Segher Boessenkool  <segher@kernel.crashing.org>
9079
9080         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
9081         HAVE_LOCAL_CPU_DETECT not defined.
9082
9083 2007-08-11  Jan Hubicka  <jh@suse.cz>
9084
9085         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
9086         (cgraph_process_new_functions): Honor previous value of
9087         disregard_inline_limits.
9088         * ipa-inline.c (compute_inline_parameters): Likewise.
9089
9090 2007-08-11  Ian Lance Taylor  <iant@google.com>
9091
9092         * alias.h (alias_set_type): Define new type.
9093         (ALIAS_SET_MEMORY_BARRIER): Use it.
9094         * rtl.h: Include alias.h.
9095         (struct mem_attrs): Use alias_set_type.
9096         * tree.h: Include alias.h
9097         (struct tree_type): Use alias_set_type.
9098         (struct tree_struct_field_tag): Likewise.
9099         (struct tree_decl_common): Likewise.
9100         * alias.c (struct alias_set_entry): Use alias_set_type.
9101         (get_alias_set_entry, alias_set_subset_of): Likewise.
9102         (alias_sets_conflict_p): Likewise.
9103         (alias_sets_must_conflict_p): Likewise.
9104         (objects_must_conflict_p): Likewise.
9105         (get_alias_set, new_alias_set): Likewise.
9106         (record_alias_subset, record_component_aliases): Likewise.
9107         (varargs_set, frame_set): Change to alias_set_type.
9108         (get_varargs_alias_set): Use alias_set_type.
9109         (get_frame_alias_set): Likewise.
9110         * builtins.c (setjmp_alias_set): Change to alias_set_type.
9111         * dse.c (struct store_info): Use alias_set_type.
9112         (struct read_info, struct clear_alias_mode_holder): Likewise.
9113         (clear_alias_set_lookup, canon_address): Likewise.
9114         (record_store, check_mem_read_rtx): Likewise.
9115         (dse_record_singleton_alias_set): Likewise.
9116         (dse_invalidate_singleton_alias_set): Likewise.
9117         * emit-rtl.c (get_mem_attrs): Likewise.
9118         (set_mem_attributes_minus_bitpos): Likewise.
9119         (set_mem_alias_set): Likewise.
9120         * expr.c (store_constructor_field, store_field): Likewise.
9121         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
9122         * langhooks.c (lhd_get_alias_set): Likewise.
9123         * langhooks-def.h (lhd_get_alias_set): Likewise.
9124         * reload1.c (alter_reg): Likewise.
9125         * tree-flow.h (struct fieldoff): Likewise.
9126         * tree-ssa-alias.c (struct alias_map_d): Likewise.
9127         (may_alias_p, get_smt_for, create_sft): Likewise.
9128         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
9129         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
9130         (merge_smts_into): Likewise.
9131         * varasm.c (const_alias_set): Likewise.
9132         * c-common.c (strict_aliasing_warning): Likewise.
9133         (c_common_get_alias_set): Likewise.
9134         * dse.h (dse_record_singleton_alias_set): Update declaration.
9135         (dse_invalidate_singleton_alias_set): Likewise.
9136         * emit-rtl.h (set_mem_alias_set): Likewise.
9137         * c-common.h (c_common_get_alias_set): Likewise.
9138         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
9139         * print-tree.c (print_node): Likewise.
9140         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
9141         alias_set_type.
9142         (alpha_setup_incoming_varargs): Use alias_set_type.
9143         * config/i386/i386.c (setup_incoming_varargs_64): Use
9144         alias_set_type.
9145         (setup_incoming_varargs_ms_64): Likewise.
9146         (ix86_GOT_alias_set): Likewise.
9147         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
9148         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
9149         (set): Change to alias_set_type.
9150         (get_TOC_alias_set): Use alias_set_type.
9151         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
9152         declaration.
9153         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
9154         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
9155         alias_set_type.
9156         (struct_value_alias_set): Likewise.
9157         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
9158
9159 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
9160
9161         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
9162         * config/vxworks.h (TARGET_VXWORKS): Override.
9163         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
9164         "mips" if TARGET_VXWORKS.
9165
9166 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
9167
9168         * calls.c (avoid_likely_spilled_reg): New function.
9169         (expand_call): Use it.
9170
9171 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9172
9173         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
9174
9175 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
9176
9177         * config/mips/predicates.md (const_call_insn_operand): Invoke
9178         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
9179
9180 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
9181
9182         PR target/33042
9183         * config/rs6000/driver-rs6000.c: Include link.h.
9184         Use ElfW instead of wordsize-specif typedef.
9185
9186 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9187
9188         * system.h (CONST_CAST): New.
9189         * c-decl.c (c_make_fname_decl): Use it.
9190         * c-lex.c (cb_ident, lex_string): Likewise.
9191         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
9192         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
9193         give_switch, set_multilib_dir): Likewise.
9194         * gengtype-parse.c (string_seq, typedef_name): Likewise.
9195         * passes.c (execute_one_pass): Likewise.
9196         * prefix.c (update_path): Likewise.
9197         * pretty-print.c (pp_base_destroy_prefix): Likewise.
9198         * tree.c (build_string): Likewise.
9199
9200 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
9201
9202         * tree-flow-inline.h (is_exec_stmt): Remove.
9203         (is_label_stmt): Remove.
9204         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
9205         is_label_stmt.
9206
9207 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
9208
9209         * lower-subreg.c (resolve_shift_zext): Don't adjust
9210         src_reg_num for wordmode operands.
9211
9212 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
9213             David Ung  <davidu@mips.com>
9214
9215         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
9216         (TARGET_SCHED_REORDER2): Define.
9217         (mips_maybe_swap_ready): New.
9218         (mips_last_74k_agen_insn): New.
9219         (mips_74k_agen_init): New.
9220         (mips_74k_agen_reorder): New function to group loads and stores
9221         in the ready queue.
9222         (mips_sched_init): New.  
9223         (mips_sched_reorder): Don't do initialization here.  Call
9224         mips_74k_agen_reorder.
9225         (mips_variable_issue): Call mips_74k_agen_init.
9226
9227 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
9228
9229         * tree-flow-inline.h (get_filename): Remove.
9230
9231 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
9232
9233         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
9234         argument.
9235         (mips_fetch_insns): Delete in favor of...
9236         (mips_load_store_insns): ...this new function.
9237         * config/mips/mips.c (mips_address_insns): Add a boolean argument
9238         to say whether multiword moves _might_ be split.
9239         (mips_fetch_insns): Delete in favor of...
9240         (mips_load_store_insns): ...this new function.
9241         (mips_rtx_costs): Update the call to mips_address_insns.
9242         (mips_address_cost): Likewise.
9243         * config/mips/mips.md (length): Use mips_load_store_insns instead
9244         of mips_fetch_insns.
9245         * config/mips/constraints.md (R): Use mips_address_insns rather
9246         than mips_fetch_insns.  Assume that the move never needs to be split.
9247
9248 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
9249
9250         * config/mips/mips.opt (mhard-float, msoft-float): Make these
9251         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
9252         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
9253         * config/mips/mips.h (mips16_hard_float): Delete.
9254         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
9255         definitions, and replace with....
9256         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
9257         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
9258         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
9259         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
9260         (override_options): Replace MASK_SOFT_FLOAT references with
9261         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
9262         and mips16_hard_float when TARGET_MIPS16.
9263         
9264 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9265
9266         PR c/32796
9267         * c-typeck.c (build_binary_op): Check for non pointer types before
9268         calling int_fits_type_p.
9269
9270 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9271
9272         PR middle-end/32813
9273         * fold-const.c (omit_one_operand): Return only the ommitted expression
9274         if the result is an empty statement.
9275         (pedantic_omit_one_operand): Likewise.
9276
9277 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
9278
9279         * c-typeck.c (readonly_error): Improve error for assignment.
9280         
9281         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
9282         expression. 
9283         (pp_c_expression): Ditto.
9284
9285 2007-08-09  Simon Baldwin  <simonb@google.com>
9286
9287         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
9288         break that was preventing simplify_associative_operation() for xor.
9289
9290 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
9291             Nigel Stephens  <nigel@mips.com>
9292
9293         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
9294         Document change in interpretation of value from boolean to
9295         tri-state integer.
9296         * optabs.c (expand_ffs, expand_ctz): New functions to compute
9297         ffs and ctz using clz.
9298         (expand_unop): Call them.
9299         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
9300         result value.
9301         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
9302         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
9303         enable the new ffs expansion on this target.
9304
9305 2007-08-09  Jan Hubicka  <jh@suse.cz>
9306
9307         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
9308         (expand_ternary_op): Likewise.
9309         (expand_vec_shift_expr): Likewise.
9310         (expand_binop_directly): Likewise.
9311         (expand_binop): Likewise.
9312         (sign_expand_binop): Likewise.
9313         (expand_twoval_unop): Likewise.
9314         (expand_twoval_binop): Likewise.
9315         (expand_twoval_binop_libfunc): Likewise.
9316         (widen_clz): Likewise.
9317         (widen_bswap): Likewise.
9318         (expand_parity): Likewise.
9319         (expand_unop): Likewise.
9320         (expand_abs_nojump): Likewise.
9321         (expand_copysign): Likewise.
9322         (emit_no_conflict_block): Likewise.
9323         (emit_libcall_block): Likewise.
9324         (can_compare_p): Likewise.
9325         (prepare_cmp_insn): Likewise.
9326         (emit_cmp_and_jump_insn_1): Likewise.
9327         (prepare_float_lib_cmp): Likewise.
9328         (emit_conditional_add): Likewise.
9329         (gen_add2_insn): Likewise.
9330         (have_add2_insn): Likewise.
9331         (gen_sub2_insn): Likewise.
9332         (have_sub2_insn): Likewise.
9333         (can_extend_p): Likewise.
9334         (can_fix_p): Likewise.
9335         (can_float_p): Likewise.
9336         (expand_float): Likewise.
9337         (expand_fix): Likewise.
9338         (expand_sfix_optab): Likewise.
9339         (new_optab): Likewise.
9340         (new_convert_optab): Likewise.
9341         (init_libfuncs): Likewise.
9342         (init_interclass_conv_libfuncs): Likewise.
9343         (init_intraclass_conv_libfuncs): Likewise.
9344         (set_conv_libfunc): Likewise.
9345         (init_optabs): Likewise.
9346         (debug_optab_libfuncs): Likewise.
9347         (gen_cond_trap): Likewise.
9348         * optabs.h (optab_handler, convert_optab_hanlder): New.
9349         * genopinit.c: Update optabs generation table.
9350         * reload.c (find_reloads_address_1): Use optabs accestors.
9351         * builtins.c (expand_builtin_mathfn): Likewise.
9352         (expand_builtin_mathfn_2): Likewise.
9353         (expand_builtin_mathfn_3): Likewise.
9354         (expand_builtin_interclass_mathfn): Likewise.
9355         (expand_builtin_sincos): Likewise.
9356         (expand_builtin_cexpi): Likewise.
9357         (expand_builtin_powi): Likewise.
9358         (expand_builtin_strlen): Likewise.
9359         * dojump.c (do_jump): Likewise.
9360         * expr.c (convert_move): Likewise.
9361         (move_by_pieces): Likewise.
9362         (move_by_pieces_ninsns): Likewise.
9363         (can_store_by_pieces): Likewise.
9364         (store_by_pieces_1): Likewise.
9365         (emit_move_via_integer): Likewise.
9366         (emit_move_complex): Likewise.
9367         (emit_move_ccmode): Likewise.
9368         (emit_move_insn_1): Likewise.
9369         (emit_single_push_insn): Likewise.
9370         (store_constructor): Likewise.
9371         (expand_expr_real_1): Likewise.
9372         (do_store_flag): Likewise.
9373         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
9374         (enumerate_modes): Likewise.
9375         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
9376         (supportable_widening_operation): Likewise.
9377         (supportable_narrowing_operation): Likewise.
9378         * expmed.c (store_bit_field_1): Likewise.
9379         (extract_bit_field_1): Likewise.
9380         (expand_mult_highpart_optab): Likewise.
9381         (expand_smod_pow2): Likewise.
9382         (expand_divmod): Likewise.
9383         (emit_store_flag): Likewise.
9384         * tree-vect-patterns.c
9385         (vect_pattern_recog_1): Likewise.
9386         * tree-ssa-loop-prefetch.c
9387         (nontemporal_store_p): Likewise.
9388         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
9389         (vect_create_epilog_for_reduction): Likewise.
9390         (vectorizable_reduction): Likewise.
9391         (vectorizable_operation): Likewise.
9392         (vect_strided_store_supported): Likewise.
9393         (vectorizable_store): Likewise.
9394         (vect_strided_load_supported): Likewise.
9395         (vectorizable_load): Likewise.
9396         * combine.c (simplify_comparison): Likewise.
9397         * tree-vect-generic.c
9398         (type_for_widest_vector_mode): Likewise.
9399         (expand_vector_operations_1): Likewise.
9400         * config/spu/spu.c (spu_expand_mov): Likewise.
9401         (spu_emit_vector_compare): Likewise.
9402         * config/rs6000/rs6000.c
9403         (rs6000_emit_vector_compare): Likewise.
9404         * stmt.c (add_case_node): Likewise.
9405         * reload1.c (gen_reload):
9406
9407 2007-08-09  Michael Matz  <matz@suse.de>
9408
9409         * tree.h (fixed_zerop): Declare as taking a const_tree.
9410         * tree.c (fixed_zerop): Take a const_tree.
9411
9412 2007-08-09  Ira Rosen  <irar@il.ibm.com>
9413
9414         * tree-vect-transform.c (vectorizable_store): Remove call to
9415         copy_virtual_operands() and call mark_symbols_for_renaming() for
9416         the created vector store.
9417         (vect_setup_realignment): Don't call copy_virtual_operands() and
9418         update_vuses_to_preheader(). 
9419         (vectorizable_load): Don't call copy_virtual_operands(). 
9420         (update_vuses_to_preheader): Remove.
9421
9422 2007-08-08  Chao-ying Fu  <fu@mips.com>
9423
9424         * tree.def (FIXED_POINT_TYPE): New type.
9425         (FIXED_CST): New constant.
9426         (FIXED_CONVERT_EXPR): New expr.
9427         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
9428         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
9429         * tree.h (struct tree_base): Add saturating_flag.
9430         Remove one bit of spare for saturating_flag.
9431         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
9432         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
9433         FIXED_POINT_TYPE_P): Define.
9434         (TYPE_SATURATING): Define.
9435         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
9436         (struct tree_fixed_cst): New.
9437         (TYPE_IBIT, TYPE_FBIT): Define.
9438         (tree_node): Add fixed_cst.
9439         (enum tree_index): Add new enumeration values of
9440         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
9441         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
9442         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
9443         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
9444         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
9445         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
9446         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
9447         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
9448         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
9449         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
9450         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
9451         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
9452         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
9453         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
9454         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
9455         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
9456         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
9457         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
9458         (sat_short_fract_type_node, sat_fract_type_node,
9459         sat_long_fract_type_node, sat_long_long_fract_type_node,
9460         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
9461         sat_unsigned_long_fract_type_node,
9462         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
9463         fract_type_node, long_fract_type_node, long_long_fract_type_node,
9464         unsigned_short_fract_type_node, unsigned_fract_type_node,
9465         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
9466         sat_short_accum_type_node, sat_accum_type_node,
9467         sat_long_accum_type_node, sat_long_long_accum_type_node,
9468         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
9469         sat_unsigned_long_accum_type_node,
9470         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
9471         accum_type_node, long_accum_type_node, long_long_accum_type_node,
9472         unsigned_short_accum_type_node, unsigned_accum_type_node,
9473         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
9474         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
9475         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
9476         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
9477         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
9478         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
9479         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
9480         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
9481         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
9482         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
9483         sat_uda_type_node, sat_uta_type_node): New macro.
9484         (make_fract_type, make_accum_type): Declare.
9485         (make_signed_fract_type, make_unsigned_fract_type,
9486         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
9487         make_signed_accum_type, make_unsigned_accum_type,
9488         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
9489         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
9490         make_or_reuse_sat_signed_fract_type,
9491         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
9492         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
9493         make_or_reuse_sat_unsigned_accum_type): New macro.
9494         (fixed_zerop): Declare.
9495         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
9496         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
9497         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
9498         LONG_LONG_ACCUM_TYPE_SIZE): Define.
9499         * treestruct.def: Add TS_FIXED_CST.
9500         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
9501         (tree.o): Likewise.
9502         (tree-dump.o): Likewise.
9503         (print-tree.o): Likewise.
9504         (tree-pretty-print.o): Likewise.
9505         (fold-const.o): Likewise.
9506         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
9507         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
9508         (is_gimple_min_invariant): Handle FIXED_CST.
9509         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
9510         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
9511         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
9512         (layout_type): Handle FIXED_POINT_TYPE.
9513         (make_fract_type, make_accum_type): New functions.
9514         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
9515         * tree-dump.c (fixed-value.h): New include.
9516         (dump_fixed): New function.
9517         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
9518         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
9519         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
9520         * tree-pretty-print.c (fixed-value.h): New include.
9521         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
9522         FIXED_CONVERT_EXPR.
9523         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
9524         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
9525         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
9526         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
9527         for non-saturating fixed-point types.
9528         (reassociate_bb): Likewise.
9529         * emit-rtl.c (fixed-value.h): New include.
9530         (fconst0, fconst1): New array.
9531         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
9532         * tree-vect-generic.c expand_vector_operation): Support
9533         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
9534         MODE_VECTOR_UACCUM.
9535         (type_for_widest_vector_mode): Add one parameter for the 
9536         saturating flag.
9537         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
9538         vector mode.
9539         Pass the satp parameter to type_for_mode for fixed-point types.
9540         (expand_vector_operations_1): Pass the saturating flag to
9541         type_for_widest_vector_mode.
9542         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
9543         and MODE_VECTOR_UACCUM.
9544         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
9545         (vectorizable_condition): Likewise.
9546         * tree.c (fixed-value.h): New include.
9547         (tree_code_size): Support FIXED_CST.
9548         (build_fixed): New function.
9549         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
9550         (fixed_zerop): New function.
9551         (tree_node_structure): Support FIXED_CST.
9552         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
9553         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
9554         (type_hash_eq): Handle FIXED_POINT_TYPE.
9555         (simple_cst_equal): Support FIXED_CST.
9556         (iterative_hash_expr): Handle FIXED_CST.
9557         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
9558         (get_narrower): Likewise.
9559         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
9560         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
9561         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
9562         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
9563         nodes.
9564         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
9565         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
9566         (initializer_zerop): Support FIXED_CST.
9567         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
9568         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
9569         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
9570         (is_base_type): Handle FIXED_POINT_TYPE.
9571         (add_type_attribute): Handle FIXED_POINT_TYPE.
9572         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
9573         * print-tree.c (fixed-value.h): New include.
9574         (print_node_brief): Support FIXED_CST.
9575         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
9576         * c-pretty-print.c (fixed-value.h): New include.
9577         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
9578         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
9579         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
9580         Support fixed-point types for inner items in VECTOR_TYPE.
9581         (pp_c_direct_declarator): Likewise.
9582         (pp_c_declarator): Likewise.
9583         (pp_c_fixed_constant): New function.
9584         (pp_c_constant): Handle FIXED_CST.
9585         (pp_c_primary_expression): Likewise.
9586         (pp_c_expression): Likewise.
9587         * fold-const.c (fixed-value.h): New include.
9588         (negate_expr_p): Return true for FIXED_CST.
9589         (fold_negate_expr): Support FIXED_CST.
9590         (split_tree): Support FIXED_CST.
9591         (const_binop): Support FIXED_CST.
9592         (fold_convert_const_int_from_fixed): New function to convert from
9593         fixed to int.
9594         (fold_convert_const_real_from_fixed): New function to convert from
9595         fixed to real.
9596         (fold_convert_const_fixed_from_fixed): New function to convert from
9597         fixed to another fixed.
9598         (fold_convert_const_fixed_from_int): New function to convert from
9599         int to fixed.
9600         (fold_convert_const_fixed_from_real): New function to convert from
9601         real to fixed.
9602         (fold_convert_const): Support conversions from fixed to int, from
9603         fixed to real, from fixed to fixed, from int to fixed, and from real
9604         to fixed.
9605         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
9606         (operand_equal_p): Support FIXED_CST.
9607         (make_range): For fixed-point modes, we need to pass the
9608         saturating flag as the 2nd parameter.
9609         (tree_swap_operands_p): Handle FIXED_CST.
9610         (fold_plusminus_mult_expr): For fract modes, we cannot generate
9611         constant 1.
9612         (fold_unary): Support FIXED_CONVERT_EXPR.
9613         (fold_binary): Handle FIXED_CST.
9614         Make sure the type is not saturating, before associating operations.
9615         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
9616         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
9617         (fold_negate_const): Support FIXED_CST.
9618         (fold_relational_const): Support FIXED_CST.
9619         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
9620         (gimplify_expr): Handle FIXED_CST.
9621         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
9622         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
9623         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
9624         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
9625         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
9626         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
9627         LONG_LONG_ACCUM_TYPE_SIZE.
9628         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
9629         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
9630         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
9631         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
9632         MODE_ACCUM, and MODE_UACCUM.
9633         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
9634         fixed-point types to disable reduction.
9635         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
9636
9637 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
9638
9639         * config/rs6000/x-rs6000: New file.
9640         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
9641         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
9642         (EXTRA_SPEC_FUNCTIONS): Define.
9643         (HAVE_LOCAL_CPU_DETECT): Define.
9644         (CC1_CPU_SPEC): Define.
9645         * config/rs6000/driver-rs6000.c: New file.
9646         * config/rs6000/aix.h (CC1_SPEC): Define.
9647         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
9648         * config.host: Add x-rs6000 to host_xmake_file if host and target
9649         are rs6000 or powerpc.
9650
9651 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
9652
9653         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
9654
9655 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9656             Sandra Loosemore  <sandra@codesourcery.com>
9657             Chao-ying Fu  <fu@mips.com>
9658             Nigel Stephens  <nigel@mips.com>
9659             David Ung  <davidu@mips.com>
9660
9661         * doc/invoke.texi (-mcode-readable): Document.
9662         * config/mips/mips.opt (mcode-readable): New option.
9663         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
9664         * config/mips/mips.h (mips_code_readable_setting): New enum.
9665         (mips_code_readable): Declare.
9666         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
9667         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
9668         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
9669         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
9670         boiler-plate comments.
9671         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
9672         * config/mips/mips.c (mips_code_readable): New variable.
9673         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
9674         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
9675         context and -mcode-readable setting to restrict the use of
9676         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
9677         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
9678         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
9679         (mips_blocks_for_constant_p): Only return false for
9680         TARGET_MIPS16_PCREL_LOADS.
9681         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
9682         for MIPS16.  Handle SYMBOL_32_HIGH.
9683         (mips_const_insns): Allow HIGHs for MIPS16 too.
9684         (mips_unspec_address_offset): New function, split out from...
9685         (mips_unspec_address): ...here.
9686         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
9687         16-bit symbolic constants.  Assert approropiate conditions for
9688         using the "la" and "dla" macros.
9689         (mips_handle_option): Handle -mcode-readable=.
9690         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
9691         Set up mips_lo_relocs[SYMBOL_32_HIGH].
9692         (mips_strip_unspec_address): New function, split out from...
9693         (print_operand_reloc): ...here.
9694         (print_operand): Pass constants through mips_strip_unspec_address.
9695         (print_operand_address): Likewise.
9696         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
9697         (mips_select_rtx_section): Remove MIPS16 handling.
9698         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
9699         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
9700         (mips16_lay_out_constants): Do nothing unless
9701         TARGET_MIPS16_PCREL_LOADS.
9702         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
9703         * config/mips/mips.md: Split HIGHs for MIPS16.
9704         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
9705
9706 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9707
9708         * config/mips/mips-protos.h (mips_emit_move): Declare.
9709         * config/mips/mips.c (mips_emit_move): New function.
9710         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
9711         (mips_legitimize_const_move): Likewise.
9712         (mips_legitimize_move): Likewise.
9713         (mips_split_64bit_move): Likewise.
9714         (mips_restore_gp): Likewise.
9715         (mips_load_call_address): Likewise.
9716         (mips_emit_fcc_reload): Likewise.
9717         (mips_set_return_address): Likewise.
9718         (mips_block_move_straight): Likewise.
9719         (mips_block_move_loop): Likewise.
9720         (mips_setup_incoming_varargs): Likewise.
9721         (mips_save_reg): Likewise.
9722         (mips_expand_prologue): Likewise.
9723         (mips_restore_reg): Likewise.
9724         (mips_expand_epilogue): Likewise.
9725         (mips_output_mi_thunk): Likewise.
9726         (build_mips16_call_stub): Likewise.
9727         (mips_builtin_branch_and_move): Likewise.
9728         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
9729         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
9730         (fixuns_truncdfdi2): Likewise.
9731         (fixuns_truncsfsi2): Likewise.
9732         (fixuns_truncsfdi2): Likewise.
9733         (loadgp_absolute): Likewise.
9734         (builtin_setjmp_setup): Likewise.
9735         (builtin_longjmp): Likewise.
9736         (untyped_call): Likewise.
9737
9738 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9739
9740         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
9741         an "rtx *" argument.  Return a bool.
9742         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
9743         values and return true if they can be split.  Take the same kind of
9744         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
9745         and store the lo_sum there if nonnull.  Use the symbol type to
9746         determine whether a $gp or HIGH is needed.
9747         (mips_legitimize_address): Update call to mips_split_symbol and
9748         simplify accordingly.
9749         (mips_legitimize_const_move): Likewise.
9750         * config/mips/mips.md: In the combine define_split,
9751         check mips_split_symbol instead of splittable_symbolic_operand.
9752         Update use of mips_split_symbol in the generator code.
9753         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
9754
9755 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9756
9757         * config/mips/mips.c (mips_symbolic_address_p): Delete.
9758         (mips_symbol_insns_1): New function, split out from...
9759         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
9760         and stores separately from load addresses.
9761         (mips_classify_address): Replace uses of mips_symbolic_address_p
9762         with uses of mips_symbol_insns.
9763         (mips_address_insns): Update calls to mips_symbol_insns.
9764         (mips_const_insns): Likewise.
9765         (mips_legitimize_address): Likewise.
9766
9767 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9768
9769         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
9770         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
9771         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
9772         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
9773         non-call contexts if TARGET_MIPS16.
9774         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
9775         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
9776         code for SYMBOL_ABSOLUTE.
9777         (mips_symbol_insns): Likewise.
9778
9779 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9780
9781         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
9782         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
9783         (mips_symbolic_constant_p): Likewise.  Update the call to
9784         mips_classify_symbol.
9785         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
9786         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
9787         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
9788         (print_operand_reloc): Add a context argument.  Update the call to
9789         mips_symbolic_constant_p.
9790         (print_operand): Update the calls to print_operand_reloc.
9791         (print_operand_address): Use print_operand_reloc rather than
9792         print_operand.
9793         (mips_rewrite_small_data_p): Add a context argument.  Update the call
9794         to mips_symbolic_constant_p.
9795         (mips_small_data_pattern_1): Make DATA the containing mem.
9796         Update the call to mips_rewrite_small_data_p.
9797         (mips_rewrite_small_data_1): Likewise.
9798         (mips_use_anchors_for_symbol_p): Update the call to
9799         mips_symbolic_constant_p.
9800         * config/mips/predicates.md (const_call_insn_operand): Likewise.
9801         (splittable_symbolic_operand): Likewise.
9802         (move_operand): Likewise.
9803         (absolute_symbolic_operand): Likewise.
9804         (got_disp_operand): Likewise.
9805         (got_page_ofst_operand): Likewise.
9806
9807 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
9808
9809         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
9810         (SYMBOL_ABSOLUTE): ...this.
9811         (SYMBOL_SMALL_DATA): Rename to...
9812         (SYMBOL_GP_RELATIVE): ...this.
9813         (SYMBOL_CONSTANT_POOL): Rename to...
9814         (SYMBOL_PC_RELATIVE): ...this.
9815         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
9816         (mips_symbolic_address_p, mips_symbol_insns, override_options)
9817         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
9818         after above changes.
9819         * config/mips/predicates.md (const_call_insn_operand): Likewise.
9820         (general_symbolic_operand): Rename to...
9821         (absolute_symbolic_operand): ...this.
9822         * config/mips/mips.md: Update after above changes.
9823
9824 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
9825             Revital Eres  <eres@il.ibm.com>
9826
9827         * ddg.c (print_ddg): Add dump information.
9828         * modulo-sched.c (print_node_sched_params): Add parameter and
9829         verbosity.
9830         (calculate_maxii): Remove function.
9831         (undo_generate_reg_moves): Likewise.
9832         (undo_permute_partial_schedule): Likewise.
9833         (kernel_number_of_cycles): Likewise.
9834         (MAXII_FACTOR): New definition to calculate the upper bound of II.
9835         (sms_schedule): Use it.  Remove profitability checks.
9836         (sms_schedule_by_order): Fix order of nodes within the cycle.
9837
9838 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
9839
9840         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
9841         -profile option, add pie support.
9842         (ENDFILE_SPEC): New spec.
9843         * config/gnu.h (LIB_SPEC): Add -profile option.
9844
9845 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
9846
9847         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
9848         * config/gnu.h (LIB_SPEC): Likewise.
9849
9850 2007-08-07  Yaz Saito  <saito@google.com>
9851             Ian Lance Taylor  <iant@google.com>
9852
9853         * common.opt (finstrument-functions-exclude-function-list): New
9854         option.
9855         (finstrument-functions-exclude-file-list): New option.
9856         * opts.c (char_p): Define and DEF_VEC.
9857         (flag_instrument_functions_exclude_functions): New static
9858         variable.
9859         (flag_instrument_functions_exclude_files): New static variable.
9860         (add_instrument_functions_exclude_list): New static function.
9861         (flag_instrument_functions_exclude_p): New function.
9862         (common_handle_option): Handle new options.
9863         * flags.h (flag_instrument_functions_exclude_p): Declare.
9864         * gimplify.c (gimplify_function_tree): Call
9865         flag_instrument_functions_exclude_p.
9866         * doc/invoke.texi (Option Summary): Mention new options.
9867         (Code Gen Options): Document new options.
9868
9869 2007-08-07  Ian Lance Taylor  <iant@google.com>
9870
9871         PR rtl-optimization/32776
9872         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
9873         (resolve_use): Likewise.
9874         (decompose_multiword_subregs): Remove "changed" local variable.
9875
9876 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
9877
9878         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
9879         * configure: Regenerate.
9880         * config.in: Regenerate.
9881         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
9882         spec string.
9883
9884 2007-08-07  Ian Lance Taylor  <iant@google.com>
9885
9886         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
9887         note, just delete the insn.
9888
9889 2007-08-07  Andreas Schwab  <schwab@suse.de>
9890
9891         PR bootstrap/32973
9892         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
9893         struct definition.
9894
9895 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
9896
9897         * lower-subreg.c (resolve_subreg_use): Remove assertion.
9898         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
9899         (decompose_multiword_subregs): Use the functions above to decompose
9900         multiword shifts and zero-extends.
9901
9902 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9903
9904         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
9905         "assemble" descriptions which were swapped.
9906
9907 2007-08-06  Chao-ying Fu  <fu@mips.com>
9908
9909         * fixed-value.h: New file.
9910         * fixed-value.c: New file.
9911         * Makefile.in (OBJS-common): Add fixed-value.o.
9912         (fixed-value.o): New rule.
9913         (GTFILES): Add fixed-value.h.
9914         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
9915         to compare a.low and b.low.
9916         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
9917
9918 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9919             Daniel Jacobowitz  <dan@codesourcery.com>
9920
9921         PR target/31868
9922         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
9923         tmake_file.
9924         (x86_64-*-netbsd*): Likewise.
9925         (x86_64-*-linux*): Likewise.
9926         (x86_64-*-kfreebsd*-gnu): Likewise.
9927         (x86_64-*-knetbsd*-gnu): Likewise.
9928         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
9929
9930         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
9931
9932         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
9933         Add -fno-asynchronous-unwind-tables.
9934
9935         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
9936         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
9937         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
9938         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
9939         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
9940
9941 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
9942
9943         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
9944         (TARGET_C_MODE_FOR_SUFFIX): New.
9945
9946 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
9947
9948         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
9949
9950 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
9951
9952         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
9953
9954 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9955
9956         * config/i386/i386.md: Check TARGET_ macros and optimize_size
9957         before checking function returns in conditional expressions.
9958
9959 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
9960
9961         PR pch/13676
9962         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
9963
9964 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9965
9966         PR middle-end/32988
9967         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
9968         for INTEGRAL_TYPE_P.
9969
9970 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
9971
9972         * configure.ac: Remove --enable-checking=df from default settings.
9973         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
9974         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
9975         if the parameter is true.
9976         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
9977         DF_VERIFY_SCHEDULED flag is true.
9978         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
9979         (df_finish_pass): Adjust prototype.
9980         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
9981         true.
9982
9983         * see.c (pass_see): Add TODO_df_verify.
9984         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
9985         * global.c (rest_of_handle_global_alloc): Schedule verification
9986         after the pass.
9987         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
9988         before the pass.
9989         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
9990         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
9991         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
9992
9993         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
9994         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
9995         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
9996
9997 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
9998             Revital Eres <eres@il.ibm.com>
9999
10000         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
10001         flag.
10002         * ddg.c (create_ddg_dependence): Rename to...
10003         (create_ddg_dep_from_intra_loop_link): This.  Do not check
10004         for interloop edges.  Do not create anti dependence edge when
10005         a true dependence edge exists in the opposite direction and
10006         -fmodulo-sched-allow-regmoves is set.
10007         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
10008         (add_cross_iteration_register_deps): Create anti dependence edge
10009         when -fno-modulo-sched-allow-regmoves is set.
10010         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
10011
10012 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
10013
10014         * config/arm/arm.md (movsi): Add braces.
10015
10016 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10017
10018         PR middle-end/32780
10019         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
10020         operands for the folding of "A - (A & B)" into "~B & A"; cast them
10021         to type.
10022
10023 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
10024
10025         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
10026         state accessor functions.
10027         * cfgloopmanip.c (remove_path, create_preheaders,
10028         force_single_succ_latches, fix_loop_structure): Ditto.
10029         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
10030         tree_duplicate_loop_to_header_edge): Ditto.
10031         * cfgloopanal.c (mark_irreducible_loops): Ditto.
10032         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
10033         Ditto.
10034         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
10035         cleanup_tree_cfg): Ditto.
10036         * tree-cfg.c (tree_merge_blocks): Ditto.
10037         * cfgloop.c (rescan_loop_exit, record_loop_exits,
10038         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
10039         loop_preheader_edge, single_exit): Ditto.
10040         (flow_loops_find): Do not clear loops->state.
10041         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
10042         loops_state_clear): New functions.
10043
10044 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10045
10046         PR middle-end/32399
10047         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
10048         when adding to the base and convert ELT to sizetype instead of type.
10049
10050 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10051
10052         PR middle-end/32304
10053         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
10054         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
10055
10056 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10057
10058         PR middle-end/32935
10059         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
10060          correct type the negate expression.
10061
10062 2007-08-03  Jan Hubicka  <jh@suse.cz>
10063
10064         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
10065         stack boundary.
10066
10067 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
10068
10069         * config/rs6000/rs6000.c (struct processor_cost): Change
10070         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
10071         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
10072         information.
10073         (rios1_costs, rios2_cost): Correct cache line size.
10074         (rs6000_override_options): Set l2-cache-size parameter.
10075
10076 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10077             Diego Novillo  <dnovillo@google.com>
10078
10079         PR 31521
10080         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
10081         if the range includes 0.
10082
10083 2007-08-03  Ben Elliston  <bje@au.ibm.com>
10084
10085         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
10086         mode to unspec expressions to silence a warning from the generator
10087         programs.
10088         
10089 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
10090
10091         * config/ia64/constraints.md ("U"): Make constraint vector only.
10092
10093 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
10094
10095         PR middle-end/25446
10096         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
10097         always_inline attribute on the function decl.
10098
10099 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
10100
10101         PR middle-end/25445
10102         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
10103         if we are compiling with -fPIC.
10104
10105 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
10106             Nigel Stephens  <nigel@mips.com>
10107
10108         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
10109         Define for MIPS32 and MIPS64.
10110
10111 2007-08-02  Nick Clifton  <nickc@redhat.com>
10112
10113         * config/host-hpux.c: Change copyright header to refer to version
10114         3 of the GNU General Public License and to point readers at the
10115         COPYING3 file and the FSF's license web page.
10116         * config/alpha/predicates.md, config/alpha/vms-ld.c,
10117         config/alpha/linux.h, config/alpha/alpha.opt,
10118         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
10119         config/alpha/vms-unwind.h, config/alpha/ev4.md,
10120         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
10121         config/alpha/alpha.h, config/alpha/sync.md,
10122         config/alpha/openbsd.h, config/alpha/alpha.md,
10123         config/alpha/alpha-modes.def, config/alpha/ev5.md,
10124         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
10125         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
10126         config/alpha/constraints.md, config/alpha/osf.h,
10127         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
10128         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
10129         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
10130         config/frv/frv-asm.h, config/frv/frv-protos.h,
10131         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
10132         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
10133         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
10134         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
10135         config/s390/s390.opt, config/s390/s390-modes.def,
10136         config/s390/fixdfdi.h, config/s390/constraints.md,
10137         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
10138         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
10139         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
10140         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
10141         config/m32c/prologue.md, config/m32c/m32c.abi,
10142         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
10143         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
10144         config/m32c/t-m32c, config/m32c/m32c-modes.def,
10145         config/m32c/jump.md, config/m32c/shift.md,
10146         config/m32c/m32c-protos.h, config/libgloss.h,
10147         config/spu/spu-protos.h, config/spu/predicates.md,
10148         config/spu/spu-builtins.h, config/spu/spu.c,
10149         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
10150         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
10151         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
10152         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
10153         config/sparc/hypersparc.md, config/sparc/predicates.md,
10154         config/sparc/linux.h, config/sparc/sp64-elf.h,
10155         config/sparc/supersparc.md, config/sparc/cypress.md,
10156         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
10157         config/sparc/niagara.md, config/sparc/sparc.md,
10158         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
10159         config/sparc/sparc.opt, config/sparc/sync.md,
10160         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
10161         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
10162         config/sparc/sparc.c, config/sparc/little-endian.opt,
10163         config/sparc/sysv4-only.h, config/sparc/sparc.h,
10164         config/sparc/linux64.h, config/sparc/freebsd.h,
10165         config/sparc/sol2.h, config/sparc/rtemself.h,
10166         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
10167         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
10168         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
10169         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
10170         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
10171         config/m32r/linux.h, config/m32r/constraints.md,
10172         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
10173         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
10174         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
10175         config/i386/i386.md, config/i386/netware-crt0.c,
10176         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
10177         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
10178         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
10179         config/i386/sol2.h, config/i386/constraints.md,
10180         config/i386/netware-libgcc.c, config/i386/sysv5.h,
10181         config/i386/predicates.md, config/i386/geode.md,
10182         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
10183         config/i386/freebsd64.h, config/i386/vxworksae.h,
10184         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
10185         config/i386/rtemself.h, config/i386/netbsd-elf.h,
10186         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
10187         config/i386/netware.h, config/i386/i386-modes.def,
10188         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
10189         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
10190         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
10191         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
10192         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
10193         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
10194         config/i386/xm-mingw32.h, config/i386/linux64.h,
10195         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
10196         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
10197         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
10198         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
10199         config/i386/cygwin2.c, config/i386/i386-protos.h,
10200         config/i386/sync.md, config/i386/openbsd.h,
10201         config/i386/host-mingw32.c, config/i386/i386-aout.h,
10202         config/i386/nto.h, config/i386/biarch64.h,
10203         config/i386/i386-coff.h, config/i386/freebsd.h,
10204         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
10205         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
10206         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
10207         config/darwin-protos.h, config/linux.opt, config/sol2.c,
10208         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
10209         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
10210         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
10211         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
10212         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
10213         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
10214         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
10215         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
10216         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
10217         config/sh/superh64.h, config/sh/rtemself.h,
10218         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
10219         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
10220         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
10221         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
10222         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
10223         config/avr/predicates.md, config/avr/constraints.md,
10224         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
10225         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
10226         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
10227         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
10228         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
10229         config/c4x/c4x-modes.def, config/c4x/rtems.h,
10230         config/c4x/predicates.md, config/c4x/c4x.h,
10231         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
10232         config/xtensa/predicates.md, config/xtensa/xtensa.c,
10233         config/xtensa/linux.h, config/xtensa/xtensa.h,
10234         config/xtensa/elf.h, config/xtensa/xtensa.md,
10235         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
10236         config/xtensa/xtensa-protos.h, config/dbx.h,
10237         config/stormy16/predicates.md, config/stormy16/stormy16.md,
10238         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
10239         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
10240         config/host-solaris.c, config/fr30/fr30.h,
10241         config/fr30/predicates.md, config/fr30/fr30-protos.h,
10242         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
10243         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
10244         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
10245         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
10246         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
10247         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
10248         config/host-linux.c, config/interix3.h, config/cris/cris.c,
10249         config/cris/predicates.md, config/cris/linux.h,
10250         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
10251         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
10252         config/cris/aout.opt, config/cris/cris-protos.h,
10253         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
10254         config/iq2000/iq2000.h, config/iq2000/predicates.md,
10255         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
10256         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
10257         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
10258         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
10259         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
10260         config/chorus.h, config/mn10300/mn10300.c,
10261         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
10262         config/mn10300/mn10300.h, config/mn10300/linux.h,
10263         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
10264         config/mn10300/mn10300.md, config/ia64/predicates.md,
10265         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
10266         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
10267         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
10268         config/ia64/freebsd.h, config/ia64/ia64.md,
10269         config/ia64/ia64-modes.def, config/ia64/constraints.md,
10270         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
10271         config/gofast.h, config/rtems.h, config/sol2-10.h,
10272         config/m68k/predicates.md, config/m68k/m68k.md,
10273         config/m68k/linux.h, config/m68k/m68k-modes.def,
10274         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
10275         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
10276         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
10277         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
10278         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
10279         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
10280         config/m68k/constraints.md, config/m68k/rtemself.h,
10281         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
10282         config/m68k/uclinux.h, config/rs6000/power4.md,
10283         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
10284         config/rs6000/linux.h, config/rs6000/eabi.h,
10285         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
10286         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
10287         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
10288         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
10289         config/rs6000/windiss.h, config/rs6000/603.md,
10290         config/rs6000/aix41.h, config/rs6000/cell.md,
10291         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
10292         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
10293         config/rs6000/darwin.md, config/rs6000/darwin64.h,
10294         config/rs6000/default64.h, config/rs6000/7xx.md,
10295         config/rs6000/darwin.opt, config/rs6000/spe.md,
10296         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
10297         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
10298         config/rs6000/7450.md, config/rs6000/linux64.h,
10299         config/rs6000/constraints.md, config/rs6000/440.md,
10300         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
10301         config/rs6000/rs6000.c, config/rs6000/aix52.h,
10302         config/rs6000/rs6000.h, config/rs6000/power6.md,
10303         config/rs6000/predicates.md, config/rs6000/altivec.md,
10304         config/rs6000/aix64.opt, config/rs6000/rios1.md,
10305         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
10306         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
10307         config/rs6000/darwin7.h, config/rs6000/dfp.md,
10308         config/rs6000/linux64.opt, config/rs6000/sync.md,
10309         config/rs6000/vxworksae.h, config/rs6000/power5.md,
10310         config/rs6000/lynx.h, config/rs6000/biarch64.h,
10311         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
10312         config/rs6000/eabispe.h, config/rs6000/e500.h,
10313         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
10314         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
10315         config/rs6000/aix.h, config/rs6000/vxworks.h,
10316         config/rs6000/40x.md, config/rs6000/aix51.h,
10317         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
10318         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
10319         config/arc/arc.h, config/mcore/mcore-elf.h,
10320         config/mcore/mcore-protos.h, config/mcore/predicates.md,
10321         config/mcore/mcore.md, config/mcore/mcore.c,
10322         config/mcore/mcore.opt, config/mcore/mcore.h,
10323         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
10324         config/score/predicates.md, config/score/score-version.h,
10325         config/score/score-protos.h, config/score/misc.md,
10326         config/score/elf.h, config/score/score.c, config/score/mac.md,
10327         config/score/score7.md, config/score/score.h,
10328         config/score/score-conv.h, config/score/score-mdaux.c,
10329         config/score/score.md, config/score/score.opt,
10330         config/score/score-modes.def, config/score/score-mdaux.h,
10331         config/score/mul-div.S, config/arm/uclinux-elf.h,
10332         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
10333         config/arm/symbian.h, config/arm/linux-elf.h,
10334         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
10335         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
10336         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
10337         config/arm/strongarm-pe.h, config/arm/arm.h,
10338         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
10339         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
10340         config/arm/arm-modes.def, config/arm/linux-eabi.h,
10341         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
10342         config/arm/arm-cores.def, config/arm/arm-protos.h,
10343         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
10344         config/arm/wince-pe.h, config/arm/neon.md,
10345         config/arm/constraints.md, config/arm/neon.ml,
10346         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
10347         config/arm/arm.opt, config/arm/arm926ejs.md,
10348         config/arm/predicates.md, config/arm/iwmmxt.md,
10349         config/arm/arm_neon.h, config/arm/unknown-elf.h,
10350         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
10351         config/arm/neon-testgen.ml, config/arm/arm.md,
10352         config/arm/xscale-coff.h, config/arm/pe.c,
10353         config/arm/arm-generic.md, config/arm/pe.h,
10354         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
10355         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
10356         config/arm/strongarm-elf.h, config/arm/cirrus.md,
10357         config/arm/netbsd-elf.h, config/arm/vxworks.h,
10358         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
10359         config/pa/predicates.md, config/pa/pa64-hpux.h,
10360         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
10361         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
10362         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
10363         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
10364         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
10365         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
10366         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
10367         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
10368         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
10369         config/pa/pa64-regs.h, config/pa/pa-modes.def,
10370         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
10371         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
10372         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
10373         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
10374         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
10375         config/mips/linux64.h, config/mips/elforion.h,
10376         config/mips/constraints.md, config/mips/generic.md,
10377         config/mips/predicates.md, config/mips/4300.md,
10378         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
10379         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
10380         config/mips/5k.md, config/mips/vr4120-div.S,
10381         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
10382         config/mips/mips-protos.h, config/mips/6000.md,
10383         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
10384         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
10385         config/mips/mips-modes.def, config/mips/vr.h,
10386         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
10387         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
10388         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
10389         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
10390         config/vax/openbsd1.h, config/vax/netbsd.h,
10391         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
10392         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
10393         config/h8300/rtems.h, config/h8300/predicates.md,
10394         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
10395         config/h8300/h8300.md, config/h8300/h8300.opt,
10396         config/h8300/coff.h, config/h8300/h8300-protos.h,
10397         config/v850/v850.md, config/v850/predicates.md,
10398         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
10399         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
10400         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
10401         config/mmix/mmix.h, config/mmix/predicates.md,
10402         config/mmix/mmix-protos.h, config/mmix/mmix.md,
10403         config/mmix/mmix.c, config/mmix/mmix.opt,
10404         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
10405         config/bfin/rtems.h, config/bfin/bfin-modes.def,
10406         config/bfin/predicates.md, config/bfin/bfin-protos.h,
10407         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
10408         Likewise.
10409
10410 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
10411
10412         * emit-rtl.c (reset_used_decls): Rename to...
10413         (set_used_decls): ...this.  Set the used flag rather than clearing it.
10414         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
10415         DECL_RTLs rather than resetting them.
10416
10417 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
10418
10419         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
10420
10421 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
10422
10423         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
10424         argument to find_reloads_address.
10425
10426 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
10427
10428         PR tree-optimization/32919
10429         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
10430         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
10431         (coalesce_ssa_name): Call it.
10432
10433 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
10434             David Ung  <davidu@mips.com>
10435
10436         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
10437         (__mips16_unorddf2, __mips16_floatunsidf): New.
10438         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
10439         above functions.
10440         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
10441
10442 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
10443
10444         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
10445         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
10446         * tree.h (OMP_SECTIONS_CONTROL): New macro.
10447         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
10448         * omp-low.c (get_ws_args_for, determine_parallel_type,
10449         expand_omp_for_generic, expand_omp_for_static_nochunk,
10450         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
10451         Work with more precise CFG.
10452         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
10453         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
10454         OMP_CONTINUE.
10455         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
10456         * gimple-low.c (lower_stmt): Ditto.
10457         * tree-inline.c (estimate_num_insns_1): Ditto.
10458         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
10459         (OMP_SECTIONS_SWITCH): New.
10460         * tree-cfgcleanup.c (cleanup_omp_return): New.
10461         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
10462         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
10463         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
10464         (tree_redirect_edge_and_branch): Handle omp constructs.
10465
10466         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
10467         with three arguments.
10468
10469 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
10470
10471         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
10472         in loop closed ssa.
10473
10474 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
10475
10476         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
10477         the loop structures may need fixing.
10478         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
10479         New functions.
10480         (cleanup_tree_cfg_loop): Removed.
10481         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
10482         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
10483         instead of running cleanup_tree_cfg_loop.
10484         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
10485         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
10486         (tree_predictive_commoning): Declaration changed.
10487         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
10488
10489 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
10490
10491         * doc/invoke.texi (l1-cache-size): Update documentation.
10492         (l2-cache-size): Document.
10493         * params.h (L2_CACHE_SIZE): New macro.
10494         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
10495         that L1_CACHE_SIZE is in kB now.
10496         (L2_CACHE_SIZE_BYTES): New macro.
10497         (tree_ssa_prefetch_arrays): Show size in kB.
10498         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
10499         and l2_cache_size fields.
10500         * config/i386/driver-i386.c (describe_cache): Detect cache size
10501         in kB.
10502         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
10503         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
10504         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
10505         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
10506         (override_options): Set l1-cache-size and l2-cache-size to default
10507         values if not specified otherwise.
10508         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
10509         (PARAM_L2_CACHE_SIZE): New.
10510
10511 2007-08-01  Nigel Stephens  <nigel@mips.com>
10512             David Ung  <davidu@mips.com>
10513             Thiemo Seufer  <ths@mips.com>
10514             Chris Dearman  <chris@mips.com>
10515             Richard Sandiford  <richard@codesourcery.com>
10516
10517         * config.gcc (mips*-sde-elf*): New stanza.
10518         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
10519         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
10520         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
10521         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
10522         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
10523         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
10524         to tmake_file.
10525         * config/mips/sde.h: New file.
10526         * config/mips/t-libgcc-mips16: Likewise.
10527         * config/mips/t-sde: Likewise.
10528         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
10529         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
10530         _MIPS_FPSET and _MIPS_SZINT.
10531         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
10532         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
10533         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
10534         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
10535         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10536         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10537         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
10538         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
10539         _MIPS_SZPTR and _MIPS_FPSET.
10540         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
10541         architecture is specified.
10542         (MIPS_32BIT_OPTION_SPEC): New macro.
10543
10544 2007-07-31  Dan Hipschman  <dsh@google.com>
10545
10546         * gcc.c (end_going_arg): New function.
10547         (do_spec_2): Use it.
10548         (do_spec_1): Use it.
10549
10550 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10551
10552         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
10553         only if ENABLE_CHECKING is defined.
10554
10555 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
10556
10557         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
10558         df_ru_add_problem, df_ru_get_bb_info): Removed.
10559         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
10560         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
10561         df_ru_free_bb_info, df_ru_alloc,
10562         df_ru_bb_local_compute_process_def,
10563         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
10564         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
10565         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
10566         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
10567         df_ru_add_problem): Removed.
10568
10569 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10570
10571         PR target/32847
10572         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
10573         (casesi32p, casesi64p): Likewise.
10574         (casesi): Adjust for above.
10575
10576 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
10577
10578         * mode-switching.c (create_pre_exit): Don't search past calls.
10579
10580 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
10581
10582         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
10583
10584 2007-07-31  Revital Eres  <eres@il.ibm.com>
10585
10586         * ddg.c (add_deps_for_def): Rename to...
10587         (add_cross_iteration_register_deps): This.  Change implementation
10588         to use only reaching def and def-use chains to construct the
10589         inter loop dependencies.
10590         (add_deps_for_use): Remove function.
10591         (build_inter_loop_deps): Call add_cross_iteration_register_deps
10592         function to build the inter loop dependencies.
10593         * modulo-sched.c (sms_schedule): Build only
10594         reaching def and def-use chains for the propose of the ddg
10595         construction.
10596
10597 2007-07-31  Julian Brown  <julian@codesourcery.com>
10598
10599         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
10600         New define_insns. Use correct RTL.
10601         (vec_set<mode>): Write as expander.
10602
10603 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
10604
10605         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
10606         to an unallocated space.
10607
10608 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
10609
10610         * tree-data-ref.c
10611         (split_constant_offset): Enable split_constant_offset to extract
10612         constants from other statements.
10613         * tree-vect-transform.c
10614         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
10615         to a temp var. Force base_offset to be simple.
10616
10617 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
10618
10619         * df-scan.c (df_scan_verify): Remove artificial limit on
10620         the number of blocks for verification.
10621         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
10622         df_simulate_defs): Avoid unnecessary insn checking for defs.
10623
10624 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
10625
10626         * config/m68k/lb1sf68.asm (FUNC): New macro.
10627         (__mulsi3): Use it.
10628         (__udivsi3): Likewise.
10629         (__divsi3): Likewise.
10630         (__umodsi3): Likewise.
10631         (__modsi3): Likewise.
10632         (__subdf3): Likewise.
10633         (__adddf3): Likewise.
10634         (__muldf3): Likewise.
10635         (__divdf3): Likewise.
10636         (__negdf2): Likewise.
10637         (__cmpdf2): Likewise.
10638         (__subsf3): Likewise.
10639         (__addsf3): Likewise.
10640         (__mulsf3): Likewise.
10641         (__divsf3): Likewise.
10642         (__negsf2): Likewise.
10643         (__cmpsf2): Likewise.
10644         (__eqdf2): Likewise.
10645         (__nedf2): Likewise.
10646         (__gtdf2): Likewise.
10647         (__gedf2): Likewise.
10648         (__ltdf2): Likewise.
10649         (__ledf2): Likewise.
10650         (__eqsf2): Likewise.
10651         (__nesf2): Likewise.
10652         (__gtsf2): Likewise.
10653         (__gesf2): Likewise.
10654         (__ltsf2): Likewise.
10655         (__lesf2): Likewise.
10656
10657 2007-07-30  Ollie Wild  <aaw@google.com>
10658
10659         * c-ppoutput.c (print_lines_directives_only): New function.
10660         (scan_translation_unit_directives_only): New function.
10661         (preprocess_file): Add call to scan_translation_unit_directives_only.
10662         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
10663         (sanitize_cpp_opts): Add default flag_dump_macros setting for
10664         -fdirectives-only.  Add errors for -fdirectives-only conflict with
10665         -Wunused-macros and -traditional.
10666         (finish_options): Add builtin macro initialization for
10667         -fdirectives-only + -fpreprocessed.
10668         * c.opt (fdirectives-only): New.
10669         * doc/cppopts.texi (fdirectives-only): New.
10670
10671 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10672
10673         * alias.c (record_set, memory_modified_1): Constify.
10674         * bt-load.c (note_btr_set): Likewise.
10675         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
10676         * combine.c (set_nonzero_bits_and_sign_copies,
10677         expand_field_assignment, record_dead_and_set_regs_1,
10678         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
10679         likely_spilled_retval_1): Likewise.
10680         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
10681         frv_io_handle_set): Likewise.
10682         * config/mips/mips.c (mips_sim_record_set,
10683         vr4130_true_reg_dependence_p_1): Likewise.
10684         * config/mt/mt.c (insn_dependent_p_1): Likewise.
10685         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
10686         * config/sh/sh.c (flow_dependent_p_1): Likewise.
10687         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
10688         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
10689         * ddg.c (mark_mem_store): Likewise.
10690         * df-problems.c (df_urec_mark_reg_change): Likewise.
10691         * function.c (update_epilogue_consts): Likewise.
10692         * gcse.c (record_set_info, record_last_set_info,
10693         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
10694         reg_clear_last_set): Likewise.
10695         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
10696         Likewise.
10697         * jump.c (reversed_comparison_code_parts): Likewise.
10698         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
10699         reg_is_set): Likewise.
10700         * loop-iv.c (mark_altered): Likewise.
10701         * mode-switching.c (reg_becomes_live): Likewise.
10702         * optabs.c (no_conflict_move_test): Likewise.
10703         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
10704         Likewise.
10705         * postreload.c (reload_combine_note_store, move2add_note_store):
10706         Likewise.
10707         * regmove.c (flags_set_1): Likewise.
10708         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
10709         Likewise.
10710         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
10711         Likewise. 
10712         * resource.c (update_live_status): Likewise.
10713         * rtl.h (set_of, note_stores): Likewise.
10714         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
10715         note_stores, parms_set): Likewise.
10716         * sched-rgn.c (sets_likely_spilled_1): Likewise.
10717         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
10718         Likewise. 
10719         * var-tracking.c (count_stores, add_stores): Likewise.
10720
10721 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10722
10723         * alias.c (mems_in_disjoint_alias_sets_p,
10724         fixed_scalar_and_varying_struct_p, aliases_everything_p,
10725         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
10726         write_dependence_p, mems_in_disjoint_alias_sets_p,
10727         read_dependence, true_dependence, canon_true_dependence,
10728         anti_dependence, output_dependence): Constify.
10729         * combine.c (extended_count): Likewise.
10730         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
10731         * cselib.c (get_value_hash, references_value_p,
10732         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
10733         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
10734         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
10735         * function.c (contains, prologue_epilogue_contains,
10736         sibcall_epilogue_contains): Likewise. 
10737         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
10738         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
10739         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
10740         reg_or_subregno): Likewise.
10741         * recog.c (asm_noperands): Likewise.
10742         * reload1.c (function_invariant_p): Likewise.
10743         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
10744         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
10745         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
10746         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
10747         true_regnum, reg_or_subregno, condjump_in_parallel_p,
10748         extended_count, prologue_epilogue_contains,
10749         sibcall_epilogue_contains, function_invariant_p, true_dependence,
10750         canon_true_dependence, read_dependence, anti_dependence,
10751         output_dependence): Likewise.
10752         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
10753
10754 2007-07-30  Julian Brown  <julian@codesourcery.com>
10755
10756         * config/arm/neon.md (V_ext): New mode attribute.
10757         (neon_vget_lane<mode>): Replace with define_expand.
10758         (neon_vget_lane<mode>_sext_internal)
10759         (neon_vget_lane<mode>_zext_internal): New define_insns for double
10760         and quad precision vectors.
10761         (neon_vget_lanedi): Add bounds check. Remove dead comment.
10762         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
10763         have typeless 32-bit result.
10764
10765 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10766
10767         PR tree-opt/32527
10768         * tree-affine.h (aff_tree): The type of rest is sizetype for types
10769         of pointers.
10770         * tree-affine.c (aff_combination_scale): If type is a pointer type,
10771         use sizetype for rest.
10772         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
10773         (aff_combination_convert): Don't convert rest for pointer types.
10774
10775 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
10776
10777         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
10778
10779         * tree-ssa-alias.c: Add alloc-pool.h.
10780         (init_alias_info): Free alias_bitmap_obstack.
10781         (delete_alias_info): Call delete_mem_ref_stats.
10782         (get_mem_sym_stats_for): Use alloc_pool.
10783         (init_mem_ref_stats): Do not delete mem_ref_stats here.
10784         (delete_mem_sym_stats): Removed.
10785         
10786 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
10787
10788         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
10789         functions cannot be represented as classical distance vectors.
10790
10791 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10792
10793         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
10794         * builtins.c (validate_arg, builtin_mathfn_code,
10795         validate_arglist): Likewise.
10796         * calls.c (call_expr_flags): Likewise.
10797         * combine.c (reg_nonzero_bits_for_combine,
10798         reg_num_sign_bit_copies_for_combine, get_last_value,
10799         reg_truncated_to_mode): Likewise.
10800         * emit-rtl.c (subreg_lowpart_p): Likewise.
10801         * expr.c (highest_pow2_factor_for_target,
10802         categorize_ctor_elements_1, categorize_ctor_elements,
10803         count_type_elements, contains_packed_reference,
10804         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
10805         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
10806         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
10807         native_encode_int, native_encode_real, native_encode_complex,
10808         native_encode_vector, native_encode_expr, native_interpret_int,
10809         native_interpret_real, native_interpret_complex,
10810         native_interpret_vector, native_interpret_expr): Likewise.
10811         * function.c (use_register_for_decl): Likewise.
10812         * gimplify.c (get_name): Likewise.
10813         * langhooks-def.h (lhd_return_null_const_tree): New.
10814         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
10815         * langhooks.c (lhd_return_null_const_tree): New.
10816         * langhooks.h (lang_get_callee_fndecl): Constify.
10817         * output.h (constructor_static_from_elts_p): Likewise.
10818         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
10819         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
10820         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
10821         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
10822         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
10823         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
10824         * rtlhooks-def.h (reg_nonzero_bits_general,
10825         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
10826         Likewise. 
10827         * rtlhooks.c (reg_num_sign_bit_copies_general,
10828         reg_nonzero_bits_general, reg_truncated_to_mode_general):
10829         Likewise. 
10830         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
10831         * stor-layout.c (mode_for_size_tree): Likewise.
10832         * tree-ssa-loop-im.c (memref_eq): Likewise.
10833         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
10834         * tree.c (contains_placeholder_p, type_list_equal,
10835         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
10836         Likewise. 
10837         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
10838         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
10839         contains_placeholder_p, contains_packed_reference,
10840         get_callee_fndecl, operand_equal_for_phi_arg_p,
10841         warn_if_unused_value, is_body_block, native_encode_expr,
10842         native_interpret_expr, fold_convertible_p, operand_equal_p,
10843         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
10844         validate_arglist, simple_cst_equal, type_list_equal,
10845         use_register_for_decl, call_expr_flags, get_name,
10846         highest_pow2_factor): Likewise.
10847         (const_call_expr_arg_iterator_d,
10848         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
10849         first_const_call_expr_arg, more_const_call_expr_args_p,
10850         FOR_EACH_CONST_CALL_EXPR_ARG): New.
10851         * varasm.c (constructor_static_from_elts_p): Constify.
10852
10853 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
10854
10855         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
10856         config/arm/neon-schedgen.ml, config/arm/neon.ml,
10857         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
10858         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
10859         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
10860         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
10861         spelling conventions.
10862         * doc/invoke.texi: Follow spelling conventions.
10863
10864 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
10865             Revital Eres  <eres@il.ibm.com>
10866
10867         * modulo-sched.c (sms_schedule): Avoid loops which includes
10868         auto-increment instructions.
10869
10870 2007-07-28  Richard Guenther  <rguenther@suse.de>
10871
10872         PR middle-end/32920
10873         * fold-const.c (fold_cond_expr_with_comparison): Convert
10874         operand zero of MIN/MAX_EXPR to correct type.
10875
10876 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10877
10878         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
10879         flags_from_decl_or_type): Constify.
10880         * gcc.c (do_spec_1): Likewise.
10881         * print-tree.c (dump_addr, print_node_brief): Likewise.
10882         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
10883         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
10884         tree_purge_all_dead_eh_edges): Likewise.
10885         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
10886         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
10887         Likewise. 
10888         * tree.c (expr_location, expr_has_location, expr_locus,
10889         expr_filename, expr_lineno, get_inner_array_type,
10890         fields_compatible_p): Likewise.
10891         * tree.h (get_inner_array_type, fields_compatible_p,
10892         expr_location, expr_has_location, expr_locus, expr_filename,
10893         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
10894         setjmp_call_p, alloca_call_p): Likewise.
10895
10896 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
10897
10898         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
10899         TV_FLOW_INSENSITIVE.
10900
10901         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
10902         TV_CALL_CLOBBER.
10903         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
10904         (compute_flow_insensitive_aliasing): Ditto for
10905         TV_FLOW_INSENSITIVE.    
10906
10907 2007-07-27  Jan Hubicka  <jh@suse.cz>
10908
10909         * config/i386/i386.c (register_move_cost): Remove accidentally
10910         comitted #if 0 block.
10911
10912         * attribs.c: Include hashtab.h
10913         (attribute_hash): New.
10914         (substring): New structure.
10915         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
10916         New function.
10917         (init_attributes): Initialize attribute hash.
10918         (decl_attributes): Use attribute hash.
10919         * Makefile.in (attribs.c): Depend on hashtab.h.
10920
10921 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
10922
10923         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
10924
10925 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
10926
10927         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
10928         __mips_dspr2 and __mips_dsp_rev macros.
10929         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
10930
10931 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
10932         
10933        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
10934
10935 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
10936
10937         PR middle-end/32749
10938         
10939         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
10940         and the updating of the live and do_not_gen sets.
10941         (df_note_bb_compute): Added updating of live and do_not_gen sets
10942         for regular defs so that the case of clobber inside conditional
10943         call is processed correctly.
10944         
10945 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
10946
10947         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
10948         operands with compatible type.
10949
10950 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
10951
10952         * expr.h (store_bit_field): Don't return a value.
10953         * expmed.c (check_predicate_volatile_ok): New function.
10954         (store_bit_field_1): New function, extracted from store_bit_field.
10955         Take a fallback_p argument and return true if the operation succeeded.
10956         Only use store_fixed_bit_field if fallback_p.  Don't recompute
10957         mode_for_extraction; use op_mode instead.  Try forcing memories
10958         into registers if the insv expander fails.
10959         (store_bit_field): Use store_bit_field_1 with fallback_p true.
10960         Don't return a value.
10961         (convert_extracted_bit_field): New function, extracted from
10962         store_bit_field.
10963         (extract_bit_field_1): Likewise.  Take a fallback_p argument
10964         and return NULL if the operation succeeded.  Only use
10965         extract_fixed_bit_field if fallback_p.  Only calculate one
10966         extraction mode.  Combine code for extv and extzv.  Try forcing
10967         memories into registers if the ext(z)v expander fails.
10968         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
10969
10970 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
10971
10972         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
10973         into bitfields.
10974         (df_ref): Likewise.  Put regno with other integer fields.
10975
10976 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
10977
10978         * df.h (df_mw_hardreg): Remove "loc" field.
10979         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
10980         local variable.
10981         * df-problems.c (df_whole_mw_reg_unused_p): New function,
10982         split out from df_set_unused_notes_for_mw.  Return false for
10983         partial references.  Assert that mw_reg is a REG when returning true.
10984         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
10985         (df_whole_mw_reg_dead_p): New function, split out from
10986         df_set_dead_notes_for_mw.  Return false for partial references.
10987         Assert that mw_reg is a REG when returning true.
10988         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
10989         Remove redundant bitmap check.
10990
10991 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
10992
10993         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
10994         ($(T)crtend.o): Likwise.
10995         ($(T)crtbeginS.o): Likwise.
10996         ($(T)crtendS.o): Likwise.
10997         ($(T)crtfastmath.o): Likwise.
10998
10999 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
11000
11001         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
11002         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
11003         * basic-block.h (struct control_flow_graph): Added x_dom_computed
11004         and x_n_bbs_in_dom_tree fields.
11005
11006 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
11007
11008         PR tree-optimization/32087
11009         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
11010         Do not call scale_bbs_frequencies_int with prob of zero.
11011
11012 2007-07-26  Julian Brown  <julian@codesourcery.com>
11013
11014         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
11015         (neon_element_bits): Add prototypes.
11016         * config/arm/arm.c (bounds_check, neon_lane_bounds)
11017         (neon_const_bounds, neon_element_bits): New functions.
11018         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
11019         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
11020         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
11021         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
11022         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
11023         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
11024         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
11025         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
11026         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
11027         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
11028         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
11029         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
11030         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
11031
11032 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
11033
11034         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
11035         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
11036
11037 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
11038             Julian Brown  <julian@codesourcery.com>
11039
11040         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
11041         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
11042         * config/arm/cortex-a8.md: New.
11043         * config/arm/cortex-a8-neon.md: New.
11044         * config/arm/neon-schedgen.ml: New.
11045         * config/arm/neon.md (vqh_mnem): New.
11046         (neon_type): New.
11047         (Is_float_mode): New.
11048         (Scalar_mul_8_16): New.
11049         (Is_d_reg): New.
11050         (V_mode_nunits): New.
11051         (All instruction patterns): Annotate with neon_type attribute
11052         values.
11053         * config/arm/arm.md: Include cortex-a8.md.
11054         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
11055         values.
11056         Annotate instruction patterns accordingly.
11057         (generic_sched): Do not use generic scheduling for Cortex-A8.
11058         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
11059
11060 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
11061
11062         * fold-const.c (fold_read_from_constant_string): Use
11063         build_int_cst_type.
11064         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
11065
11066 2007-07-26  Nick Clifton  <nickc@redhat.com>
11067
11068         * tree-ssa-operands.h: Change copyright header to refer to version
11069         3 of the GNU General Public License and to point readers at the
11070         COPYING3 file and the FSF's license web page.
11071         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
11072         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
11073         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
11074         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
11075         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
11076         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
11077         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
11078         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
11079         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
11080         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
11081         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
11082         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
11083         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
11084         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
11085         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
11086         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
11087         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
11088         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
11089         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
11090         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
11091         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
11092         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
11093         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
11094         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
11095         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
11096         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
11097         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
11098         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
11099         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
11100         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
11101         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
11102         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
11103         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
11104         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
11105         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
11106         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
11107         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
11108         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
11109         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
11110         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
11111         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
11112         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
11113         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
11114         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
11115         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
11116         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
11117         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
11118         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
11119         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
11120         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
11121         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
11122         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
11123         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
11124         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
11125         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
11126         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
11127         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
11128         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
11129         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
11130         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
11131         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
11132         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
11133         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
11134         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
11135         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
11136         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
11137         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
11138         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
11139         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
11140         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
11141         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
11142         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
11143         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
11144         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
11145         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
11146         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
11147         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
11148         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
11149         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
11150         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
11151         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
11152         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
11153         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
11154         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
11155         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
11156         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
11157         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
11158         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
11159         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
11160         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
11161         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
11162         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
11163         vecprim.h, basic-block.h, tree-ssa-structalias.c,
11164         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
11165         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
11166         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
11167         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
11168         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
11169         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
11170         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
11171         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
11172         convert.c, convert.h, langhooks-def.h, reload1.c,
11173         tree-ssa-operands.c: Likewise.
11174
11175 2007-07-26  Jan Hubicka  <jh@suse.cz>
11176
11177         * tree-ssa-live.c: Include debug.h and flags.h.
11178         (mark_scope_block_unused): New function.
11179         (remove_unused_scope_block_p): New function.
11180         (remove_unused_locals): Remove unused blocks too.
11181
11182 2007-07-25  Ian Lance Taylor  <iant@google.com>
11183
11184         * combine.c (combine_max_regno): Remove.  Remove all uses.
11185         (struct reg_stat_struct): Rename from struct reg_stat.
11186         (reg_stat_type): Define, and declare VECs.
11187         (reg_stat): Change from pointer to VEC.  Change all uses.
11188         (combine_split_insns): New static function.
11189         (try_combine, find_split_point): Call it instead of split_insns.
11190
11191 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11192
11193         * cfghooks.c (split_block): Fix the information about loop latch.
11194
11195 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11196
11197         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
11198
11199 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11200
11201         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
11202         Scan the new edge for loop exit info.
11203
11204 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
11205
11206         * config/darwin.c: Include debug.h.
11207
11208 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
11209
11210         PR target/32218
11211         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
11212
11213 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
11214
11215         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
11216         (HARD_REGNO_MODE_OK): Ditto.
11217         (MODES_TIEABLE_P): Ditto.
11218         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
11219         (CLASS_MAX_NREGS): Ditto.
11220         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
11221         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
11222         (divdf3_internal_thr): Removed.
11223         * config/ia64/div.md: New file.
11224         * config/ia64/constraints.md: Add H constraint.
11225
11226 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11227
11228         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
11229         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
11230         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
11231         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
11232         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
11233         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
11234         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
11235         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
11236         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
11237         dump_sbitmap_file, debug_sbitmap, popcount_table,
11238         sbitmap_popcount): Constify.
11239         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
11240         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
11241         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
11242         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
11243         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
11244         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
11245         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
11246         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
11247         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
11248         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
11249         sbitmap_popcount, sbitmap_verify_popcount): Constify.
11250
11251 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11252
11253         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
11254         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
11255         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
11256         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
11257         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
11258         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
11259         bitmap_intersect_p, bitmap_intersect_compl_p,
11260         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
11261         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
11262         Constify.
11263         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
11264         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
11265         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
11266         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
11267         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
11268         debug_bitmap, debug_bitmap_file, bitmap_print,
11269         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
11270         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
11271
11272 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
11273
11274         * config/darwin.c (darwin_override_options): Additional fix for
11275         debug info formats that don't support var tracking.
11276
11277 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11278
11279         * cselib.c (entry_and_rtx_equal_p): Constify.
11280         * gengtype.c (output_mangled_typename, write_types, write_local):
11281         Likewise.
11282         * gengtype.h (const_type_p): New.
11283         * see.c (eq_descriptor_extension, hash_descriptor_extension):
11284         Constify.
11285         * tlink.c (scan_linker_output): De-constify.
11286         * tree-ssa-loop-im.c (memref_eq): Constify.
11287         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
11288         (shared_bitmap_hash, shared_bitmap_eq): Constify.
11289
11290 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11291
11292         * c-common.c (fname_as_string, c_type_hash): Constify.
11293         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
11294         * cgraph.c (edge_hash, edge_eq): Likewise.
11295         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
11296         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
11297         reg_attrs_htab_eq): Likewise.
11298         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
11299         Likewise.
11300         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
11301         const_decl_t, const_state_t, const_automata_list_el_t): New.
11302         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
11303         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
11304         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
11305         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
11306         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
11307         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
11308         compare_max_occ_cycle_nums, out_state_arcs_num,
11309         compare_transition_els_num, units_cmp, state_reservs_cmp):
11310         Constify.
11311         * genmodes.c (cmp_modes): Likewise.
11312         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
11313         * gimplify.c (compare_case_labels): Likewise.
11314         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
11315         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
11316         * matrix-reorg.c (mtt_info_hash): Likewise.
11317         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
11318         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
11319         (htab_hash_bucket, htab_hash_elem): Constify.
11320         * tree-browser.c (TB_parent_eq): Likewise.
11321         * tree-scalar-evolution.c (hash_scev_info): Likewise.
11322         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
11323         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
11324         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
11325         Constify.
11326         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
11327         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
11328         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
11329         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
11330         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
11331         New.
11332         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
11333         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
11334         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
11335         * tree-ssa-threadupdate.c (redirection_data_hash,
11336         redirection_data_eq): Likewise. 
11337         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
11338         * tree-ssa.c (var_ann_eq): Likewise.
11339         * tree-vrp.c (compare_case_labels): Likewise.
11340         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
11341         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
11342         tree_not_check_failed, tree_class_check_failed,
11343         tree_range_check_failed, tree_not_class_check_failed,
11344         omp_clause_check_failed, omp_clause_range_check_failed,
11345         tree_contains_struct_check_failed, tree_operand_check_failed):
11346         Likewise. 
11347         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
11348         tree_not_check_failed, tree_class_check_failed,
11349         tree_range_check_failed, tree_not_class_check_failed,
11350         tree_operand_check_failed, omp_clause_operand_check_failed,
11351         tree_operand_length): Likewise. 
11352         * var-tracking.c (const_variable): New.
11353         (variable_htab_hash, variable_htab_eq): Constify.
11354         * varasm.c (const_desc_hash): Likewise.
11355
11356 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11357
11358         * expr.c (handled_component_p): Constify.
11359         * fold-const.c (fit_double_type): Likewise.
11360         * real.h (real_value_from_int_cst): Likewise.
11361         * tree-flow-inline.h (gimple_in_ssa_p,
11362         gimple_aliases_computed_p, gimple_addressable_vars,
11363         gimple_call_clobbered_vars, gimple_referenced_vars,
11364         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
11365         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
11366         may_aliases, end_readonly_imm_use_p, has_zero_uses,
11367         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
11368         is_label_stmt, is_global_var, phi_ssa_name_p,
11369         factoring_name_p, is_call_clobbered, tree_common_ann,
11370         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
11371         unmodifiable_var_p, array_ref_contains_indirect_ref,
11372         ref_contains_array_ref, lookup_subvars_for_var,
11373         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
11374         gimple_mem_ref_stats): Likewise.
11375         * tree-flow.h (tree_common_ann, var_ann, function_ann,
11376         may_aliases, is_exec_stmt, is_label_stmt,
11377         ref_contains_array_ref, array_ref_contains_indirect_ref,
11378         var_can_have_subvars, overlap_subvar, is_call_clobbered,
11379         unmodifiable_var_p): Likewise.
11380         * tree-gimple.c (is_gimple_min_invariant): Likewise.
11381         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
11382         * tree.c (type_hash_list, attribute_hash_list, tree_size,
11383         cst_and_fits_in_hwi, real_value_from_int_cst,
11384         build_real_from_int_cst, integer_zerop, integer_onep,
11385         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
11386         tree_floor_log2, real_zerop, real_onep, real_twop,
11387         real_minus_onep, really_constant_p, purpose_member, chain_member,
11388         list_length, fields_length, int_size_in_bytes, bit_position,
11389         int_bit_position, byte_position, int_byte_position, expr_align,
11390         array_type_nelts, tree_node_structure,
11391         type_contains_placeholder_1, iterative_hash_pointer,
11392         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
11393         tree_map_base_eq, type_hash_list, type_hash_eq,
11394         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
11395         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
11396         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
11397         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
11398         int_fits_type_p, get_containing_scope, decl_function_context,
11399         decl_type_context, omp_clause_operand_check_failed,
11400         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
11401         * tree.h (omp_clause_operand_check_failed, tree_size,
11402         build_real_from_int_cst, array_type_nelts, purpose_member,
11403         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
11404         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
11405         is_attribute_p, check_qualified_type, expr_align,
11406         int_size_in_bytes, bit_position, int_bit_position, byte_position,
11407         int_byte_position, list_length, fields_length, initializer_zerop,
11408         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
11409         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
11410         tree_node_structure, handled_component_p, get_containing_scope,
11411         decl_function_context, decl_type_context, real_zerop,
11412         type_num_arguments, fit_double_type, really_constant_p,
11413         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
11414         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
11415         real_twop, real_minus_onep, int_cst_value): Likewise.
11416
11417 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11418
11419         * cfglayout.c (insn_scope, insn_line): Constify.
11420         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
11421         const_double_htab_hash, const_double_htab_eq,
11422         mem_attrs_htab_hash): Likewise.
11423         * loop-iv.c (biv_eq): Likewise.
11424         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
11425         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
11426         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
11427         Likewise. 
11428         * rtl-error.c (location_for_asm, diagnostic_for_asm,
11429         error_for_asm, warning_for_asm, _fatal_insn,
11430         _fatal_insn_not_found): Likewise. 
11431         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
11432         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
11433         rtl_check_failed_type2, rtl_check_failed_code1,
11434         rtl_check_failed_code2, rtl_check_failed_code_mode,
11435         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
11436         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
11437         rtl_check_failed_type2, rtl_check_failed_code1,
11438         rtl_check_failed_code2, rtl_check_failed_code_mode,
11439         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
11440         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
11441         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
11442         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
11443         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
11444         rtx_unstable_p, get_integer_term, get_related_value,
11445         offset_within_block_p, reg_mentioned_p, count_occurrences,
11446         reg_referenced_p, reg_used_between_p, no_labels_between_p,
11447         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
11448         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
11449         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
11450         find_constant_src, find_reg_fusage, find_regno_fusage,
11451         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
11452         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
11453         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
11454         computed_jump_p, auto_inc_p, in_expr_list_p,
11455         remove_node_from_expr_list, loc_mentioned_in_p,
11456         label_is_jump_target_p, reversed_comparison_code_parts,
11457         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
11458         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
11459         print_inline_rtx): Likewise.
11460         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
11461         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
11462         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
11463         get_integer_term, get_related_value, offset_within_block_p,
11464         count_occurrences, reg_mentioned_p, no_labels_between_p,
11465         reg_used_between_p, reg_referenced_p, single_set_2,
11466         multiple_sets, set_noop_p, refers_to_regno_p,
11467         reg_overlap_mentioned_p, dead_or_set_p,
11468         covers_regno_no_parallel_p, covers_regno_p,
11469         dead_or_set_regno_p, find_reg_note, find_regno_note,
11470         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
11471         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
11472         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
11473         side_effects_p, may_trap_p_1, may_trap_p,
11474         may_trap_after_code_motion_p, may_trap_or_fault_p,
11475         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
11476         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
11477         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
11478         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
11479         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
11480         Likewise. 
11481         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
11482         warning_for_asm): Likewise.
11483         * tree.h (print_rtl): Likewise.
11484         * varasm.c (get_pool_mode): Likewise.
11485
11486 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11487
11488         * c-lex.c (c_lex_with_flags, lex_string): Constify.
11489         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
11490         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
11491         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
11492         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
11493         * ddg.c (compare_sccs): Likewise.
11494         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
11495         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
11496         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
11497         decimal_do_fix_trunc, decimal_real_to_integer,
11498         decimal_real_to_integer2, decimal_real_maxval): Likewise.
11499         * dse.c (const_group_info_t): New.
11500         (invariant_group_base_eq, invariant_group_base_hash): Constify.
11501         * dwarf2out.c (const_dw_die_ref): New.
11502         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
11503         * tree-browser.c (TB_parent_eq): Likewise.
11504         * unwind-dw2-fde.c (__register_frame_info_bases,
11505         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
11506         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
11507         Likewise.
11508         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
11509         * unwind-dw2.c (uw_frame_state_for): Likewise.
11510         * value-prof.c (histogram_hash, histogram_eq): Likewise.
11511         * value-prof.h (const_histogram_value): New.
11512
11513 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
11514
11515         * config/mips/mips.c (machine_function): Add
11516         initialized_mips16_gp_pseudo_p.
11517         (mips16_gp_pseudo_reg): Do not emit the initialization of
11518         mips16_gp_pseudo_rtx when being called from the gimple cost-
11519         calculation routines; emit it on the first use outside those
11520         routines.
11521
11522 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11523
11524         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
11525         New.
11526         
11527         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
11528         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
11529         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
11530         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
11531         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
11532         Preserve const-ness of parameters through use of __typeof(),
11533         also constify and tidy.
11534         
11535         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
11536         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
11537         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
11538         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
11539         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
11540         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
11541         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
11542         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
11543         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
11544
11545 2007-07-25  Julian Brown  <julian@codesourcery.com>
11546             Mark Shinwell  <shinwell@codesourcery.com>
11547
11548         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
11549         (alpha_mangle_type): This.
11550         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11551         (TARGET_MANGLE_TYPE): Define this instead.
11552         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
11553         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
11554         (arm_init_neon_builtins): Fix comment.
11555         (arm_mangle_map_entry): New.
11556         (arm_mangle_map): New.
11557         (arm_mangle_type): New.
11558         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
11559         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
11560         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
11561         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11562         (TARGET_MANGLE_TYPE): Define this instead.
11563         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
11564         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
11565         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
11566         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11567         (TARGET_MANGLE_TYPE): Define this instead.
11568         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
11569         to...
11570         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
11571         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11572         (TARGET_MANGLE_TYPE): Define this instead.
11573         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
11574         (s390_mangle_type): This.
11575         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11576         (TARGET_MANGLE_TYPE): Define this instead.
11577         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
11578         (sparc_mangle_type): This.
11579         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
11580         (TARGET_MANGLE_TYPE): Define this instead.
11581         * cp/mangle.c (write_type): Call mangle_type target hook on all
11582         types before mangling.  Use original type, not main variant, as
11583         argument.
11584         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
11585         (TARGET_MANGLE_TYPE): This.
11586         * target.h (gcc_target): Rename mangle_fundamental_type to
11587         mangle_type.
11588         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
11589         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
11590
11591 2007-07-25  Julian Brown  <julian@codesourcery.com>
11592             Paul Brook  <paul@codesourcery.com>
11593             Joseph Myers  <joseph@codesourcery.com>
11594             Mark Shinwell  <shinwell@codesourcery.com>
11595
11596         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
11597         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
11598         (with_fpu): Allow --with-fpu=neon.
11599         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
11600         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
11601         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
11602         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
11603         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
11604         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
11605         (neon_emit_pair_result_insn, neon_disambiguate_copy)
11606         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
11607         (output_move_neon): Add prototypes.
11608         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
11609         (all_fpus): Add FPUTYPE_NEON.
11610         (fp_model_for_fpu): Add NEON field.
11611         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
11612         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
11613         in registers.
11614         (arm_legitimate_address_p): Don't support fancy addressing for NEON
11615         structure moves.
11616         (thumb2_legitimate_address_p): Likewise.
11617         (neon_valid_immediate): Recognize and prepare constants suitable for
11618         NEON instructions.
11619         (neon_immediate_valid_for_move): New function. Recognize and prepare
11620         immediates for NEON move instructions.
11621         (neon_immediate_valid_for_logic): New function. Recognize and
11622         prepare immediates for NEON logic instructions.
11623         (neon_output_logic_immediate): New function. Create asm string
11624         suitable for outputting immediate logic instructions.
11625         (neon_pairwise_reduce): New function. Implement reduction using
11626         pairwise operations.
11627         (neon_expand_vector_init): New function. Expand a (possibly
11628         non-constant) vector initialization.
11629         (neon_vector_mem_operand): New function. Memory operands supported
11630         for quad-word loads/stores to/from ARM or NEON registers. Don't
11631         allow base+offset addressing for core regs.
11632         (neon_struct_mem_operand): New function. Valid mems for NEON
11633         structure moves.
11634         (coproc_secondary_reload_class): Enable NEON registers to be loaded
11635         from neon_vector_mem_operand addresses without a secondary register.
11636         (add_minipool_forward_ref): Handle >8-byte minipool entries.
11637         (add_minipool_backward_ref): Likewise.
11638         (dump_minipool): Likewise.
11639         (push_minipool_fix): Likewise.
11640         (output_move_quad): New function. Output quad-word moves, loads and
11641         stores using ARM registers.
11642         (output_move_vfp): Add support for vectors in VFP (NEON) D
11643         registers.
11644         (output_move_neon): Output a NEON load/store to/from a quadword
11645         register.
11646         (arm_print_operand): Implement new codes:
11647         - 'c' for unadorned integers (without a # sign).
11648         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
11649         mode.
11650         - 'e', 'f' for the low and high D parts of a NEON Q register.
11651         - 'q' outputs a NEON Q register.
11652         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
11653         - 'T' prints NEON opcode features from a coded bitmask.
11654         - 'F' is similar to T, but signed/unsigned codes both print as
11655         'i'.
11656         - 't' is similar to T, but 'u' is printed instead of 'p'.
11657         - 'O' prints 'r' if NEON instruction should perform rounding (as
11658         specified by bitmask), else prints nothing.
11659         - '#' is a punctuation character to stop operand numbers from
11660         running together with following digits in the assembler
11661         strings for instructions (when using mode attributes).
11662         (arm_assemble_integer): Handle extra NEON vector modes. Permute
11663         constant vectors in big-endian mode, where necessary.
11664         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
11665         Handle EI, OI, CI, XI modes.
11666         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
11667         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
11668         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
11669         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
11670         (neon_builtin_type_bits): Add enumeration, one bit for each vector
11671         type.
11672         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
11673         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
11674         to turn v8qi, etc. into bits defined above.
11675         (neon_itype): New enumeration. Classifications of NEON builtins.
11676         (neon_builtin_datum): Define struct. Contains information about
11677         a single builtin (with multiple modes).
11678         (CF): Define helper macro for...
11679         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
11680         modes.
11681         (neon_builtin_data): New array. Define information about builtins
11682         for use during initialization/expansion.
11683         (arm_init_neon_builtins): New function.
11684         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
11685         true.
11686         (neon_builtin_compare): New function.
11687         (locate_neon_builtin_icode): New function. Find an insn code for a
11688         builtin given a function code for that builtin. Also return type of
11689         builtin (NEON_BINOP, NEON_UNOP etc.).
11690         (builtin_arg): New enumeration. Types of arguments for builtins.
11691         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
11692         Takes a variable argument list of builtin_arg types, terminated by
11693         NEON_ARG_STOP.
11694         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
11695         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
11696         (neon_emit_pair_result_insn): New function. Support returning pairs
11697         of vectors via a pointer.
11698         (neon_disambiguate_copy): New function. Set up operands for a
11699         multi-word copy such that registers do not get clobbered.
11700         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
11701         ARM_BUILTIN_NEON_BASE.
11702         (arm_file_start): Set float-abi attribute for NEON.
11703         (arm_vector_mode_supported_p): Enable NEON vector modes.
11704         (arm_mangle_map_entry): New.
11705         (arm_mangle_map): New.
11706         (arm_mangle_vector_type): New.
11707         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
11708         when appropriate.
11709         (TARGET_NEON): New macro. Target supports NEON.
11710         (fputype): Add FPUTYPE_NEON.
11711         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
11712         for vectorization based on command-line arg.
11713         (NEON_REGNO_OK_FOR_NREGS): Define.
11714         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
11715         (VALID_NEON_STRUCT_MODE): Define.
11716         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
11717         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
11718         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
11719         (consttable_16): Add pattern for outputting 16-byte minipool
11720         entries.
11721         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
11722         vec-common.md).
11723         (vec-common.md, neon.md): Include md files.
11724         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
11725         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
11726         (memory_constraint "Ut", "Un", "Us"): Define.
11727         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
11728         (MMX_char): New mode attribute.
11729         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
11730         (*add<mode>3_iwmmxt): New insn pattern.
11731         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
11732         (*sub<mode>3_iwmmxt): New insn pattern.
11733         (mulv4hi3): Rename to...
11734         (*mulv4hi3_iwmmxt): This.
11735         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
11736         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
11737         (uminv4hi3, uminv2si3): Remove. Replace with...
11738         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
11739         (*umin<mode>3_iwmmxt): These.
11740         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
11741         (ashr<mode>3_iwmmxt): This new pattern.
11742         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
11743         (lshr<mode>3_iwmmxt): This new pattern.
11744         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
11745         (ashl<mode>3_iwmmxt): This new pattern.
11746         * config/arm/neon-docgen.ml: New file. Generate documentation for
11747         intrinsics.
11748         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
11749         * config/arm/arm_neon.h: New (autogenerated).
11750         * config/arm/neon-testgen.ml: New file. Generate NEON tests
11751         automatically.
11752         * config/arm/neon.md: New file. Define NEON instructions.
11753         * config/arm/neon.ml: New file. Abstract description of NEON
11754         instructions, used to generate arm_neon.h header, documentation and
11755         tests.
11756         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
11757         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
11758         support.
11759         * doc/extend.texi (ARM Built-in Functions): Rename and remove
11760         extraneous comma.
11761         (ARM NEON Intrinsics): New subsection.
11762         * doc/arm-neon-intrinsics.texi: New (autogenerated).
11763
11764 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
11765
11766         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
11767         prototype.
11768
11769 2007-07-24  Jan Hubicka  <jh@suse.cz>
11770
11771         * regclass.c (move_table): New type.
11772         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
11773         (init_move_cost): Break out from ...
11774         (init_reg_sets_1): ... here; simplify computation of
11775         have_regs-of_mode and contains_reg_of_mode.
11776         (record_reg_classes): Unswitch internal loops.
11777         (copy_cost): Trigger lazy initialization of move cost
11778         (record_address_regs): Likewise.
11779
11780 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
11781
11782         * config/darwin.c (darwin_override_options): Don't force on
11783         flag_var_tracking_uninit when no debug info is requested.
11784
11785 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
11786
11787         * cfgloop.c (init_loops_structure): New function.
11788         (flow_loops_find): Create root of the loop tree unconditionally.
11789
11790 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
11791
11792         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
11793
11794 2007-07-24  Jan Hubicka  <jh@suse.cz>
11795
11796         * caller-save.c: Include ggc.h, gt-caller-save.h
11797         (reg_save_code, reg_restore_code): Rename to ...
11798         (cached_reg_save_code, cached_reg_restore_code): ... those.
11799         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
11800         (reg_save_code, reg_restore_code): New functions.
11801         (init_caller_save): Do not intialize
11802         reg_save_code/reg_restore_code tables.
11803         * Makefile.in: (gt-caller-save.h): New.
11804
11805 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
11806
11807         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
11808         with the mode of the original operand instead of
11809         integer_one_node.
11810
11811 2007-07-23  Jan Hubicka  <jH@suse.cz>
11812
11813         * i386.c (ix86_secondary_memory_needed): Break out to...
11814         (inline_secondary_memory_needed): ... here.
11815         (ix86_memory_move_cost): Break out to ...
11816         (inline_memory_move_cost): ... here; add support for IN value of 2 for
11817         maximum of input and output; fix handling of Q_REGS on 64bit.
11818         (ix86_secondary_memory_needed): Microoptimize.
11819
11820 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
11821
11822         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
11823         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
11824         stmts_from_loop, known_dependences_p, build_rdg): New.
11825         * tree-data-ref.h: Depends on graphds.h.
11826         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
11827         (build_rdg): Declared.
11828         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
11829
11830 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
11831
11832         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
11833         ccp_min_invariant.
11834
11835 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
11836             Jakub Jelinek  <jakub@redhat.com>
11837
11838         PR middle-end/PR28690
11839         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
11840         EQ compares.
11841         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
11842         and MEM_POINTER operands over REG and MEM operands.
11843         (swap_commutative_operands_p): Change return value to bool.
11844         * rtl.h: Update the corresponding prototype.
11845         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
11846         instead of gen_rtx_PLUS.
11847         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
11848         value to bool.  Change function arguments to rtx's and update code
11849         to match.
11850         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
11851         calls to match the new declaration.
11852         * simplify-rtx.c (simplify_associative_operation): Don't
11853         reorder simplify_binary_operation arguments.
11854
11855 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
11856
11857         * config/mips/mips.c (override_options): Use mips_costs to derive
11858         the default branch cost.
11859         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
11860         than mips_costs.
11861         * config/mips/mips.opt (mbranch-cost=): New option.
11862         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
11863
11864 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
11865
11866         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
11867         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
11868         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
11869         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
11870
11871 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
11872
11873         * config/mips/constraints.md (ks): New constraint.
11874         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
11875         (*add<mode>3_mips16): ...here.
11876
11877 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
11878
11879         * optabs.h (enum optab_index): Add new OTI_signbit.
11880         (signbit_optab): Define corresponding macro.
11881         (enum insn_code signbit_optab[]): Remove array.
11882         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
11883         (expand_copysign_absneg): If back end provides signbit insn, use it
11884         instead of bit operations on floating point argument.
11885         * builtins.c (enum insn_code signbit_optab[]): Remove array.
11886         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
11887         for availability of signbit insn.
11888
11889         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
11890         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
11891         SSE mode is not active.
11892         (isinf<mode>2): Disable for mfpmath=sse,387.
11893
11894 2007-07-22  Ben Elliston  <bje@au.ibm.com>
11895
11896         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
11897         `class' parameter.
11898         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
11899
11900 2007-07-20  Richard Guenther  <rguenther@suse.de>
11901
11902         * tree-cfg.c (verify_expr): COND_EXPRs can have any
11903         integral typed condition.
11904         * tree-ssa.c (useless_type_conversion_p): Do not preserve
11905         booleanness.  Only preserve conversions from a non-base
11906         type to a base type, not in general between types with
11907         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
11908         * tree.def (COND_EXPR): Document that the condition
11909         can be of any integral type.
11910
11911 2007-07-20  Nigel Stephens  <nigel@mips.com>
11912             Richard Sandiford  <richard@codesourcery.com>
11913
11914         * config/mips/mips.h (mips_dwarf_regno): Declare.
11915         (DBX_REGISTER_NUMBER): Remove redundant brackets.
11916         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
11917         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
11918         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
11919         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
11920         (REG_CLASS_NAMES): Update accordingly.
11921         * config/mips/mips.c (mips_dwarf_regno): New array.
11922         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
11923         (mips_subword): Remove special handling for accumulator registers.
11924         (override_options): Initiailize mips_dwarf_regno.  Remove use
11925         of ACC_HI_REG_P.
11926         (mips_swap_registers): New function.
11927         (mips_conditional_register_usage): Swap accumulator registers
11928         around if TARGET_LITTLE_ENDIAN.
11929         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
11930         * config/mips/constraints.md (h, l): Use the endianness to choose
11931         between MD0_REG and MD1_REG.
11932         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
11933         alternative-dependent template.
11934
11935 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
11936
11937         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
11938         no_new_pseudos.
11939
11940 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
11941
11942         * function.c (thread_prologue_and_epilogue_insns): Fix exit
11943         predecessor fallthru flags.
11944
11945 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
11946
11947         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
11948         of compare to the same type.
11949         * cfgloopmanip.c (add_loop): Update information about loop exits.
11950         (loop_version): Remove the innermost loop requirement.
11951         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
11952         to sizetype for pointers.
11953
11954 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11955
11956         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
11957         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
11958         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
11959
11960         * config/dfp-bit.c: Empty for TFmode conversions.
11961
11962 2007-07-18  Caroline Tice  <ctice@apple.com>
11963         
11964         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
11965         and handle them correctly; check that src is not NULL before
11966         trying to use it.
11967         (find_src_set_src): Likewise.
11968         
11969 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
11970         
11971         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
11972         (struct alignment_context, init_alignment_context): New.
11973         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
11974         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
11975         (XCHAL_HAVE_S32C1I): Likewise.
11976         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
11977         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
11978         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
11979         (ATOMIC, HQI): New macros.
11980         (memory_barrier, *memory_barrier): New.
11981         (sync_lock_releasesi): New.
11982         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
11983         (sync_lock_test_and_set<mode>): New.
11984         (sync_<atomic><mode>): New.
11985         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
11986         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
11987         (xtensa_expand_atomic): New.
11988         
11989 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11990
11991         PR target/30652
11992
11993         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
11994         transformation for builtin ISNORMAL.
11995         (expand_builtin): Handle BUILT_IN_ISNORMAL.
11996         * builtins.def (BUILT_IN_ISNORMAL): New.
11997         * doc/extend.texi: Document isnormal.
11998
11999 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12000
12001         PR target/30652
12002
12003         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
12004         optabs infrastructure.  Provide generic implementation for
12005         FINITE/ISFINITE.
12006         (expand_builtin): Handle FINITE/ISFINITE.
12007         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
12008         (fold_builtin_1): Likewise.
12009
12010         * builtins.def (BUILT_IN_ISFINITE): New.
12011
12012         * doc/extend.texi: Document isfinite.
12013
12014 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12015
12016         PR target/30652
12017         PR middle-end/20558
12018
12019         * builtins.c (expand_builtin_interclass_mathfn): Provide a
12020         generic fallback for isinf.
12021         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
12022         calculation code ...
12023         * real.c (get_max_float): ... to here.
12024         * real.h (get_max_float): New.
12025
12026 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12027
12028         PR middle-end/32668
12029
12030         * builtin-attrs.def (ATTR_TYPEGENERIC,
12031         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
12032
12033         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
12034         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
12035         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
12036         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
12037
12038         * c-common.c (handle_type_generic_attribute): New.
12039         (c_common_attribute_table): Add "type generic".
12040
12041         * c-typeck.c (convert_arguments): Handle "type generic" functions.
12042
12043 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
12044
12045         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
12046         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
12047         properly.
12048
12049 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12050
12051         PR target/32808
12052         * config/cris/cris.c (cris_print_index): Don't use XEXP before
12053         checking that the operand is an expression.
12054
12055 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
12056             Danny Smith  <dannysmith@users.sourceforge.net>
12057
12058         PR/other 30335
12059         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
12060         file mapping object in local namespace if Windows version later
12061         than NT4
12062
12063 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
12064
12065         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
12066         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
12067         arm_cannot_force_const_mem.
12068         (arm_cannot_force_const_mem): New function.
12069         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
12070         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
12071         of arm_tls_referenced_p.
12072         * config/arm/arm.md (movsi): Split out-of-section constants when
12073         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
12074         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
12075
12076 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
12077
12078         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
12079
12080 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
12081
12082         * config/mips/mips.md (*extendqihi2): Convert the destination
12083         to SImode.
12084
12085 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12086
12087         * config/pa/fptr.c: Update license header.
12088         * config/pa/milli64.S: Likewise.
12089
12090 2007-07-17  Nick Clifton  <nickc@redhat.com>
12091
12092         * COPYING_v3: New file.  Contains version 3 of the GNU General
12093         Public License.
12094         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
12095         Lesser General Public License.
12096         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
12097         the GNU General Public License.
12098
12099 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
12100
12101         PR rtl-optimization/32773
12102         * cfglayout.c (force_one_exit_fallthru): New function.
12103         (cfg_layout_finalize): Use it.
12104
12105 2007-07-16  Richard Guenther  <rguenther@suse.de>
12106             Uros Bizjak  <ubizjak@gmail.com>
12107
12108         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
12109         before forcing it to gimple operand.
12110
12111 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
12112             David Ung  <davidu@mips.com>
12113
12114         * config/mips/mips.h (TUNE_24K): Define.
12115         (TUNE_MACC_CHAINS): Add TUNE_24K.
12116         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
12117         imadd.
12118         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
12119         (r74k_int_madd): .. this new reservation.
12120         (define_bypass): Fixed bypasses for r74k_int_madd to use
12121         mips_linked_madd_p.
12122         * config/mips/24k.md (define_bypass): Define new
12123         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
12124
12125 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
12126             Nigel Stephens  <nigel@mips.com>
12127
12128         * config/mips/mips.md: Include 20kc.md.
12129         * config/mips/20kc.md: New file.
12130         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
12131         (mips_adjust_cost): Tweak for 20Kc.
12132         (mips_issue_rate): Likewise.
12133         * config/mips/mips.h (TUNE_20KC): Define.
12134
12135 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
12136
12137         * config/rs6000/rs6000.c (struct processor_cost): Add
12138         cache_line_size, l1_cache_lines, and simultaneous_prefetches
12139         fields.
12140         (*_cost): Add cache information.
12141         (rs6000_override_options): Set cache parameters.
12142
12143 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12144
12145         PR bootstrap/3456
12146         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
12147         * doc/install.texi (mips-sgi-irix6): pthread support works now.
12148
12149 2007-07-16  Paul Brook  <paul@codesourcery.com>
12150
12151         PR target/32753
12152         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
12153         (cirrus_thumb2_movsi_insn): Ditto.
12154
12155 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
12156
12157         * config/rs6000/darwin-fallback.c (interpret_libc): Change
12158         CR2_REGNO to R_CR2.
12159
12160 2007-07-15  Andrew Haley  <aph@redhat.com>
12161
12162         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
12163         before looking in the context.
12164
12165 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12166
12167         PR middle-end/32398
12168         PR middle-end/32769
12169         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
12170         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
12171         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
12172         (pa_output_function_prologue): Use rp_saved and
12173         current_function_is_leaf to generate .CALLINFO statement.
12174         (hppa_expand_prologue): Set rp_saved.
12175         (hppa_expand_epilogue): Use rp_saved.
12176         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
12177         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
12178
12179 2007-07-14  Dirk Mueller  <dmueller@suse.de>
12180
12181         * omega.c (coalesce): Fix memory leak on early exit.
12182         * matrix-reorg.c (check_allocation_function): Likewise.
12183         * tree-vect-transform.c (vect_get_new_vect_var): free result
12184         of concat().
12185         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
12186         pass pointer to edge vector
12187         (partition_hot_cold_basic_blocks): Fix memory leak.
12188         * collect2.c (prefix_from_string): Free temporary storage.
12189         * reload1.c (fixup_abnormal_edges): Free sbitmap.
12190
12191 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
12192
12193         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
12194         (DO_GLOBAL_DTORS_BODY): Likewise.
12195
12196 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
12197             Nigel Stephens  <nigel@mips.com>
12198
12199         * config/mips/mips.c (mips_classify_symbol): Don't return
12200         SYMBOL_SMALL_DATA for constant pool addresses if
12201         TARGET_EMBEDDED_DATA is true.
12202
12203 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
12204
12205         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
12206         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
12207         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
12208         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
12209         __builtin_ia32_storehps, __builtin_ia32_storelps,
12210         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
12211         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
12212         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
12213         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
12214         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
12215         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
12216         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
12217         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
12218         using def_builtin_const.
12219
12220 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
12221
12222         PR tree-optimization/32705
12223         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
12224         (simplify_binary_expression): Use SSA_VAL consistently.
12225
12226 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
12227
12228         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
12229         (SPEFSCR_REGNO): Delete definition.
12230         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
12231         COUNT_REGISTER_REGNUM -> CTR_REGNO.
12232         * config/rs6000/rs6000.h: Do not define *_REGNO.
12233         LINK_REGISTER_REGNUM -> LR_REGNO.
12234         COUNT_REGISTER_REGNUM -> CTR_REGNO.
12235         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
12236         COUNT_REGISTER_REGNUM -> CTR_REGNO.
12237         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
12238         R_VRSAVE, R_VSCR. Use them.
12239         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
12240         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
12241         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
12242         * config/rs6000/aix.h: Define R_LR.  Use it.
12243         
12244 2007-07-13  Caroline Tice  <ctice@apple.com>
12245         
12246         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
12247         flag_var_tracking is explicitly turned off (i.e. when variable
12248         tracking is not feasible); otherwise, turn flag_var_tracking on when
12249         flag_var_tracking_uninit is on.
12250         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
12251         note definitions, to allow recording of initialization status in the
12252         notes.
12253         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
12254         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
12255         determine if two note locations are equal.
12256         (output_loc_list): Don't output list entries whose start & end labels
12257         are the same.
12258         (reg_loc_descriptor): Add parameter for initialization status; pass it
12259         to other loc descriptor functions.
12260         (one_reg_loc_descriptor): Add parameter for initialization status;
12261         check its value and add DW_OP_GNU_uninit to returned loc descr if
12262         appropriate.
12263         (multiple_reg_loc_descriptor): Add parameter for initialization
12264         status;
12265         pass init status argument to other loc descriptor functions; check
12266         value of intialization parameter and add DW_OP_GNU_uninit to returned
12267         loc descr if appropriate.
12268         (based_loc_descr): Add parameter for initialization status; add new
12269         variable for return value; check value of initialization parameter and
12270         add DW_OP_GNU_uninit to returned loc descr if appropriate.
12271         (concatn_mem_loc_descriptor): Add parameter for initialization status;
12272         pass init status argument to other loc descriptor functions; check
12273         value of intialization parameter and add DW_OP_GNU_uninit to returned
12274         loc descr if appropriate.
12275         (mem_loc_descriptor): Likewise.
12276         (concat_loc_descriptor): Likewise.
12277         (concatn_loc_descriptor): Likewise.
12278         (loc_descriptor): Add parameter for initialization status; pass it as
12279         argument to other loc descriptor function calls.
12280         (loc_descriptor_from_tree_1): Add appropriate initialization status
12281         to loc descriptor function calls.
12282         (add_location_or_const_value_attribute): Get initialization status
12283         from VAR_LOCATION note; add initialization status to loc descriptor
12284         function calls.
12285         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
12286         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
12287         status is uninitialized, add "[uninint]" to output.
12288         * common.opt (fvar-tracking-uninit): New option, similar to
12289         fvar-tracking, to turn on tracking of uninitialized variables; creates
12290         a new global flag, flag_var_tracking_uninit.
12291         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
12292         (enum var_init_status): New type, for var initialization status field.
12293         * var-tracking.c (struct location_chain_def): Two new fields, init,
12294         for initialization status, and set_src for the assignment value expr.
12295         (unshare_variable): New parameter for initialization status;
12296         initialize new init and set_src fields.
12297         (var_reg_set): New parameters for initialization status and value;
12298         pass them to set_variable_part.
12299         (var_mem_set): Likewise.
12300         (get_init_value): New function.
12301         (var_reg_delete_and_set): New initialization status & value
12302         parameters; add call to get_init_value if status is unknown; pass new
12303         parameters to clobber_variable_part and var_reg_set.
12304         (var_mem_delete_and_set): Likewise.
12305         (var_reg_delete): Pass null set_src value to clobber_variable_part.
12306         (var_mem_delete): Likewise.
12307         (variable_union): Pass status to unshare_variable; initialize new init
12308         and set_src fields. If flag_var_tracking_uninit is not set, force
12309         status to initialized.
12310         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
12311         used later to get the set_src value.
12312         (find_src_status): New function.
12313         (find_src_set_src): New function.
12314         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
12315         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
12316         MO_SET, get set_src value and pass it to var_reg_delete_and_set
12317         and var_mem_delete_and_set.
12318         (dump_variable): Print out "[uninit]" if appropriate.
12319         (set_variable_part): Add new initialization and set_src parameters;
12320         pass status to unshare_variable; set node->init and node- >set_src
12321         fields and modify slot in hash table appropriately; save the init and
12322         set_src values if appropriate and assign to the new node.
12323         (clobber_variable_part): New set_src parameter; if two nodes have
12324         same variable and same location but different set_src (assignment)
12325         values, clobber old node.
12326         (delete_variable_part): Pass init status to unshare_variable.
12327         (emit_note_insn_var_location): Add initialized var; assign var's init
12328         status to new 'initialized'; pass new init status field to calls to
12329         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
12330         status to initialized.
12331         (emit_notes_in_bb): Pass initialization status to calls to
12332         var_reg_set, var_mem_set, var_reg_delete_and_set and
12333         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
12334         var_reg_delete_and_set and var_mem_delete_and_set; call
12335         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
12336         make up for change in add_stores.
12337         (vt_add_function_parameters): Add status to calls to
12338         set_variable_part.
12339         * config/darwin.c (darwin_override_options): Turn on uninitialized
12340         tracking automatically, if var_tracking is on and the system is
12341         10.5 or higher.
12342         
12343 2007-07-13  Sa Liu  <saliu@de.ibm.com>
12344
12345         * config.gcc: Add options for arch and tune on SPU.
12346         * config/spu/predicates.md: Add constant operands 0 and 1.
12347         * config/spu/spu-builtins.def: Add builtins for double precision 
12348         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
12349         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
12350         spu_testsv.
12351         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
12352         a CELLEDP target.
12353         * config/spu/spu-protos.h: Add new function prototypes. 
12354         * config/spu/spu.c (spu_override_options): Check options -march and
12355         -mtune.
12356         (spu_comp_icode): Add comparison code for DFmode and vector mode.
12357         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
12358         mode comparison.
12359         (spu_const_from_int): New.  Create a vector constant from 4 ints.
12360         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
12361         (spu_emit_vector_compare): New.  Emit vector compare.
12362         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
12363         * config/spu/spu.h: Add options -march and -mtune.  Define processor
12364         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
12365         CANONICALIZE_COMPARISON.
12366         * config/spu/spu.md: Add new insns for double precision compare
12367         and double precision vector compare.  Add vcond and smax/smin patterns
12368         to enable DFmode vector conditional expression.
12369         * config/spu/spu.opt: Add options -march and -mtune.
12370         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
12371         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
12372         both CELL and CELLEDP targets: spu_testsv.
12373         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
12374         values.
12375
12376 2007-07-13  Richard Guenther  <rguenther@suse.de>
12377
12378         PR tree-optimization/32721
12379         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
12380         TREE_THIS_VOLATILE on the folded reference.
12381         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
12382         if the array reference has TREE_THIS_VOLATILE set.
12383
12384 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
12385
12386         PR other/32188
12387         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
12388
12389 2007-07-13  Andreas Schwab  <schwab@suse.de>
12390
12391         * gengtype-lex.l: Allow declarations to be indented.
12392
12393 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
12394
12395         * ginclude/tgmath.h: New.
12396         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
12397         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
12398         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
12399         * configure: Regenerate.
12400
12401 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
12402
12403         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
12404         correct index when setting register save state for xd
12405         registers.
12406
12407 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
12408
12409         * config/sh/sh.c (mark_use): Remove.
12410
12411 2007-07-12  Paul Brook  <paul@codesourcery.com>
12412
12413         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
12414         reg does not overlap return value.
12415
12416 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
12417
12418         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
12419         (set_expression_vuses): Ditto.
12420         (init_pre): Initialize expression_vuses.
12421
12422 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
12423
12424         * config/i386/sse.md (storentdf, storentsf): New.
12425
12426 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
12427
12428         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
12429         FUNCTION_DECL.
12430         * tree.c (build_decl_stat): Move code from here...
12431         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
12432         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
12433         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
12434         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
12435         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
12436         FUNCTION_BOUNDARY.
12437
12438 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
12439             Devang Patel  <dpatel@apple.com>
12440
12441         PR tree-optimization/25413
12442         * targhooks.c (default_builtin_vector_alignment_reachable): New.
12443         * targhooks.h (default_builtin_vector_alignment_reachable): New.
12444         * tree.h (contains_packed_reference): New.
12445         * expr.c (contains_packed_reference): New.
12446         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
12447         (vect_enhance_data_refs_alignment): Call
12448         vector_alignment_reachable_p.
12449         * target.h (vector_alignment_reachable): New builtin.
12450         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
12451         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
12452         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
12453
12454 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
12455
12456         * target.h (builtin_vectorization_cost): Add new target builtin.
12457         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
12458         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
12459         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
12460         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
12461         uninitialized variables.
12462         * tree-vect-transform.c (cost_for_stmt): New function.
12463         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
12464         using cost 1 for all scalar stmts. Be less conservative when
12465         estimating the number of prologue/epulogue iterations. Call
12466         targetm.vectorize.builtin_vectorization_cost. Return
12467         min_profitable_iters-1.
12468         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
12469         initialization cost instead of TARG_VEC_STMT_COST. Use
12470         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
12471         epilogue code. Fix epilogue cost computation.
12472         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
12473         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
12474         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
12475         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
12476         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
12477         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
12478
12479 2007-07-12  Richard Guenther  <rguenther@suse.de>
12480
12481         * gimplify.c (gimplify_conversion): Make sure that the result
12482         from maybe_fold_offset_to_reference is trivially convertible
12483         to the desired type before doing the simplification.
12484         (gimplify_expr): Likewise.
12485         * fold-const.c (fold_binary): Use the correct types for
12486         building the simplified expression.
12487
12488 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
12489
12490         PR rtl-optimization/32729
12491         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
12492         that fallthru to exit.
12493
12494 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12495
12496         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
12497         (symDTPOFF2reg): Likewise.
12498
12499 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
12500
12501         PR tree-optimization/32663
12502         
12503         * tree.h (VALUE_HANDLE_VUSES): Remove.
12504         (struct tree_value_handle): Remove vuses.
12505
12506         * tree-vn.c (create_value_handle_for_expr): Don't set
12507         VALUE_HANDLE_VUSES. 
12508
12509         * tree-ssa-pre.c (expression_vuses): New.
12510         (alloc_expression_id): Set up expression_vuses.
12511         (get_expression_vuses): New.
12512         (set_expression_vuses): Ditto.
12513         (clear_expression_ids): Modify for expression_vuses.
12514         (phi_translate_1): Ditto.
12515         (phi_translate_set): Ditto.
12516         (value_dies_in_block_x): Ditto
12517         (valid_in_sets): Ditto.
12518         (add_to_sets): Ditto.
12519         (find_existing_value_expr): Ditto.
12520         (create_value_handle_for_expr): Ditto.
12521         (make_values_for_stmt): Ditto.
12522         (vuse_equiv): Remove.
12523
12524 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
12525
12526         * Makefile.in (mostlyclean): Remove object files.
12527
12528 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
12529
12530         * toplev.c (no_new_pseudos): Deleted.
12531         * rtl.h (no_new_pseudos): Deleted.
12532         * tree-pass.h (pass_no_new_pseudos): Deleted. 
12533         * passes.c (pass_no_new_pseudos): Deleted.
12534         * final.c (rest_of_clean_state): Removed no_new_pseudos.
12535         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
12536         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
12537         reload_completed.
12538         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
12539         * rtlhooks.c (gen_lowpart_general): Ditto.
12540         * optabs.c (prepare_operand): Ditto.
12541         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
12542         no_new_pseudos.
12543         * modulo-sched.c (rest_of_handle_sms): Ditto.
12544         * see.c (rest_of_handle_see): Ditto.
12545         * ifcvt.c (if_convert): Ditto.
12546         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
12547         reload_completed.
12548         * init-regs.c (gate_initialize_regs): Deleted set of
12549         no_new_pseudos.
12550         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
12551         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
12552         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
12553         
12554 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
12555
12556         PR target/32661
12557         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
12558         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
12559         (*vec_extractv2di_1_rex64): New insn pattern.
12560
12561 2007-07-11  David Daney  <ddaney@avtrex.com>
12562
12563         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
12564         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
12565         for SIGNAL_UNWIND_RETURN_COLUMN.
12566         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
12567         (DWARF_FRAME_REGNUM): Rewrite.
12568         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
12569
12570 2007-07-11  Nick Clifton  <nickc@redhat.com>
12571
12572         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
12573         delta and use gen_int_mode in place of GET_INT instead.
12574
12575 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
12576
12577         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
12578         and letter field.
12579
12580 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
12581
12582         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
12583         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
12584         types or not.
12585         * params.h (VERIFY_CANONICAL_TYPES): Remove.
12586         (USE_CANONICAL_TYPES): New.
12587         * doc/invoke.texi (verify-canonical-types): Remove.
12588         (use-canonical-types): Add.
12589
12590 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
12591
12592         * config/spu/spu.c (spu_optimization_options): Remove setting of
12593         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
12594         (spu_override_options): Move it here.
12595
12596 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
12597
12598         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
12599         * config/mips/mips.c (mips_cpu_info_table): Mention
12600         MIPS_ISA_LEVEL_SPEC in the comment.
12601
12602 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
12603
12604         PR tree-optimization/32713
12605         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
12606
12607 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
12608
12609         PR middle-end/30482
12610         * c-opts.c (c_common_post_options): Do not change flag_complex_method
12611         conditional to flag_isoc99.
12612         (c_common_init_options): Do it here, unconditionally.
12613
12614 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
12615
12616         PR tree-optimization/32589
12617         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
12618         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
12619         * tree-ssa-propagate.c (valid_gimple_expression_p): New
12620         predicate, extracted from...
12621         (set_rhs): ...here.  Call it for the expression on entry.
12622         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
12623         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
12624         (simplify_binary_expression): Use valid_gimple_expression_p
12625         to validate the simplification.
12626         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
12627
12628 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
12629
12630         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
12631         DWARF2_DEBUG on 32 bit target too.
12632         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
12633
12634 2007-07-11  Nick Clifton  <nickc@redhat.com>
12635
12636         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
12637         version for 64-bit hosts.
12638
12639 2007-07-10  David Daney  <ddaney@avtrex.com>
12640
12641         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
12642         predicate.
12643         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
12644         call.
12645         * config/mips/mips.c (mips_expand_synci_loop): New function.
12646         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
12647         (UNSPEC_RDHWR): Same.
12648         (UNSPEC_SYNCI): Same.
12649         (UNSPEC_SYNC): Same.
12650         (clear_cache): New expand.
12651         (sync): New insn.
12652         (synci): Same.
12653         (rdhwr): Same.
12654         (clear_hazard): Same.
12655         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
12656         function.
12657         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
12658         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
12659
12660 2007-07-10  Ian Lance Taylor  <iant@google.com>
12661
12662         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
12663         no_new_pseudos.
12664
12665 2007-07-10  David Daney  <ddaney@avtrex.com>
12666
12667         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
12668         * builtins.c (expand_builtin___clear_cache): New function.
12669         (expand_builtin): Call expand_builtin___clear_cache for
12670         BUILT_IN_CLEAR_CACHE case.
12671         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
12672         * doc/md.texi (clear_cache): Document new instruction pattern.
12673         * testsuite/gcc.dg/builtins-64.c: New test.
12674
12675 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
12676
12677         * config/cris/cris.md ("movsi"): Fix typo in last change.
12678
12679 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
12680
12681         PR 32617
12682         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
12683         FUNCTION_DECLs.
12684         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
12685         * varasm.c (assemble_start_function): Honor DECL_ALIGN
12686         for FUNCTION_DECLs.  Don't use align_functions_log if
12687         DECL_USER_ALIGN.
12688         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
12689         even for FUNCTION_DECLs.
12690         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
12691         FUNCTION_DECLs.
12692         * tree.h (DECL_ALIGN): Update for new location of 'align'.
12693         (DECL_FUNCTION_CODE): Update for new location and name of
12694         'function_code'.
12695         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
12696         (struct tree_decl_common): Move 'align' and 'off_align' out
12697         of union, ensure they're still on a 32-bit boundary.  Remove
12698         other fields in union 'u1'.
12699         (struct tree_function_decl): Add field 'function_code' replacing
12700         'u1.f' in tree_decl_common.
12701         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
12702         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
12703         (Variable Attributes): Cross-reference 'aligned' attribute
12704         to Function Attributes.
12705         * flags.h (force_align_functions_log): Delete.
12706         * toplev.c (force_align_functions_log): Delete.
12707
12708 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
12709
12710         PR target/32708
12711         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
12712         (*vec_concatv2di_rex): New insn pattern.
12713
12714 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12715
12716         PR target/32538
12717         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
12718
12719 2007-07-10  Ian Lance Taylor  <iant@google.com>
12720
12721         Replace no_new_pseudos in backends.
12722         * rtl.h (can_create_pseudo_p): Define.
12723         * config/darwin.c (machopic_indirect_data_reference): Use
12724         can_create_pseudo_p () instead of no_new_pseudos.
12725         (machopic_indirect_data_reference): Likewise.
12726         (machopic_legitimize_pic_address): Likewise.
12727         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
12728         (alpha_emit_set_const_1): Likewise.
12729         (alpha_emit_set_const): Likewise.
12730         (alpha_emit_conditional_move): Likewise.
12731         (alpha_split_conditional_move): Likewise.
12732         * config/alpha/alpha.md (various splitters): Likewise.
12733         (movti): Likewise.
12734         * config/arm/arm.c (legitimize_pic_address): Likewise.
12735         (arm_load_pic_register): Likewise.
12736         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
12737         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
12738         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
12739         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
12740         * config/cris/cris.md (movsi): Likewise.
12741         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
12742         (symGOTOFF2reg_hilo): Likewise.
12743         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
12744         * config/h8300/h8300.md (insv, extzv): Likewise.
12745         * config/i386/i386.c (ix86_expand_move): Likewise.
12746         (ix86_expand_vector_move): Likewise.
12747         (ix86_prepare_fp_compare_args): Likewise.
12748         (ix86_expand_carry_flag_compare): Likewise.
12749         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
12750         (tls_dynamic_gnu2_combine_32): Likewise.
12751         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
12752         * config/ia64/ia64.c (ia64_expand_move): Likewise.
12753         (ia64_expand_movxf_movrf): Likewise.
12754         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
12755         (m32c_split_move): Likewise.
12756         (m32c_expand_insv): Likewise.
12757         * config/m68k/m68k.md (movsi): Likewise.
12758         * config/mips/mips.c (mips_force_temporary): Likewise.
12759         (mips_split_symbol): Likewise.
12760         (mips_move_integer): Likewise.
12761         (mips_legitimize_const_move): Likewise.
12762         * config/mn10300/mn10300.md (movsi): Likewise.
12763         * config/pa/pa.c (emit_move_sequence): Likewise.
12764         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
12765         (rs6000_got_register): Likewise.
12766         (create_TOC_reference): Likewise.
12767         (rs6000_machopic_legitimize_pic_address): Likewise.
12768         * config/rs6000/rs6000.md (add<mode>3): Likewise.
12769         (various splitters): Likewise.
12770         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
12771         (movsi_got): Likewise.
12772         * config/s390/s390.c (emit_symbolic_move): Likewise.
12773         * config/s390/s390.md (movhi, movqi): Likewise.
12774         (load_multiple, store_multiple): Likewise.
12775         * config/score/score.c (score_force_temporary): Likewise.
12776         * config/sh/sh.c (prepare_move_operands): Likewise.
12777         (prepare_cbranch_operands): Likewise.
12778         (emit_fpu_switch): Likewise.
12779         (fpscr_set_from_mem): Likewise.
12780         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
12781         (adddi3, subsi3): Likewise.
12782         (various splitters): Likewise.
12783         (divsi_inv_fp_combine): Likewise.
12784         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
12785         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
12786         (sne): Likewise.
12787         * config/sh/predicates.md (xor_operand): Likewise.
12788         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
12789         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
12790         (movdi_pic_label_ref): Likewise.
12791         * config/spu/spu.c (spu_split_immediate): Likewise.
12792         * config/alpha/alpha.md (various splitters): Remove test
12793         !no_new_pseudos || reload_completed.
12794         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
12795         no_new_pseudos.
12796         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
12797         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12798         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
12799         * config/score/score.c (th_output_mi_thunk): Likewise.
12800         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
12801         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12802
12803 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
12804
12805         PR rtl-optimization/32664
12806         * mode-switching.c (create_pre_exit): Skip barrier insns.
12807
12808 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
12809
12810         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
12811         force_gimple_operand_bsi.
12812         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
12813         rewrite_use_compare): Ditto.
12814         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
12815         Ditto.
12816         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
12817         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
12818         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
12819         * tree-profile.c (prepare_instrumented_value,
12820         tree_gen_interval_profiler, tree_gen_pow2_profiler,
12821         tree_gen_one_value_profiler, tree_gen_ic_profiler,
12822         tree_gen_ic_func_profiler, tree_gen_average_profiler,
12823         tree_gen_ior_profiler): Ditto.
12824         * tree-ssa-reassoc.c (negate_value): Ditto.
12825         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
12826         Use force_gimple_operand_bsi.
12827         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
12828         * tree-if-conv.c (add_to_dst_predicate_list,
12829         find_phi_replacement_condition): Ditto.
12830         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
12831         Call mark_symbols_for_renaming for new statements.
12832         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
12833
12834 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
12835
12836         * cfghooks.c (remove_edge): New function.
12837         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
12838         loop exit rescans.
12839         * cfghooks.h (remove_edge): Declare.
12840         * cfg.c (remove_edge): Renamed to remove_edge_raw.
12841         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
12842
12843 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
12844
12845         * optabs.h: Added declaration for signbit_optab.  
12846         * optabs.c: (init_optabs): Added initialization for signbit_optab.
12847         * genoptinit.c (optabs): Added entry for signbit insns.  
12848         * builtins.c (expand_builtin_signbit): Added code to use a signbit
12849         insn, if available.  
12850         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
12851         * config/s390/s390.md (signbit<mode>2): New expander.  
12852
12853 2007-07-09  Richard Guenther  <rguenther@suse.de>
12854
12855         PR middle-end/32698
12856         * fold-const.c (fold_plusminus_mult_expr): Move constant
12857         arguments second to allow decomposing.
12858
12859 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
12860
12861         Revert:
12862         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
12863         PR debug/23551
12864         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
12865         Disregard DECL_FROM_INLINE.
12866
12867 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
12868
12869         PR target/27855
12870         * doc/invoke.texi: Add ftree-reassoc flag.
12871         * common.opt (ftree-reassoc): New flag.
12872         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
12873         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
12874
12875 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
12876
12877         PR tree-optimization/32681
12878         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
12879         saved in second_edge->aux when first_bb is a loop header.
12880
12881 2007-07-09  Jan HUbicka  <jh@suse.cz>
12882
12883         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
12884
12885 2007-07-09  Richard Guenther  <rguenther@suse.de>
12886
12887         * c-decl.c (start_function): Do not promote return type.
12888
12889 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
12890
12891         * function.c (do_warn_unused_parameter): Do not warn if
12892         TREE_NO_WARNING is set.
12893
12894 2007-07-08  Andreas Schwab  <schwab@suse.de>
12895
12896         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
12897
12898 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
12899
12900         Revert this patch:
12901         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
12902
12903         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
12904         apply to assembly language, too.
12905         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
12906
12907 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
12908
12909         Revert (note the sccvn portions are *not* reverted)
12910         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
12911
12912         Fix PR tree-optimization/23488
12913
12914         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
12915         handles.
12916         * tree-flow-inline.h (get_value_handle): Ditto.
12917         * tree-ssa-pre.c (decl_vh_map): New.
12918         (decl_node_pool): New.
12919         (can_value_number_operation): Support DECL_P.
12920         (can_PRE_operation): Ditto.
12921         (create_expression_by_pieces): Ditto.
12922         (find_existing_value_expr): Modify to differnetiate between
12923         addressing and top level.
12924         (create_value_handle_for_expr): Handle DECL's.
12925         (poolify_tree): Ditto.
12926         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
12927         (make_values_for_stmt): Handle DECL's properly.
12928         (init_pre): Reorg to not init useless things during FRE.
12929         (fini_pre): Ditto.
12930         * tree-flow.h: Include pointer-set.h.
12931         (decl_vh_map): Declare.
12932         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
12933
12934 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
12935
12936         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
12937         the constraint description.
12938         * doc/md.texi: Update documentation of AVR constraints.
12939
12940 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
12941
12942         * auto-inc-dec.c, config/arm/arm.c,
12943         config/m32r/constraints.md, config/mips/mips.md,
12944         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
12945         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
12946         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
12947         typos.  Follow spelling conventions.
12948         * doc/invoke.texi, doc/rtl.texi: Fix typos.
12949
12950         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
12951         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
12952
12953         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
12954         realloc_vuse): Remove.
12955         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
12956         and realloc_vuse.
12957
12958 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
12959
12960         Fix PR tree-optimization/23488
12961
12962         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
12963         (try_to_simplify): Ditto.
12964         (visit_use): Ditto.
12965         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
12966         handles.
12967         * tree-flow-inline.h (get_value_handle): Ditto.
12968         * tree-ssa-pre.c (decl_vh_map): New.
12969         (decl_node_pool): New.
12970         (can_value_number_operation): Support DECL_P.
12971         (can_PRE_operation): Ditto.
12972         (create_expression_by_pieces): Ditto.
12973         (find_existing_value_expr): Modify to differnetiate between
12974         addressing and top level.
12975         (create_value_handle_for_expr): Handle DECL's.
12976         (poolify_tree): Ditto.
12977         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
12978         (make_values_for_stmt): Handle DECL's properly.
12979         (init_pre): Reorg to not init useless things during FRE.
12980         (fini_pre): Ditto.
12981         * tree-flow.h: Include pointer-set.h.
12982         (decl_vh_map): Declare.
12983         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
12984                 
12985 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
12986
12987         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
12988         apply to assembly language, too.
12989         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
12990
12991 2007-07-06  Ian Lance Taylor  <iant@google.com>
12992             Zack Weinberg  <zackw@panix.com>
12993
12994         PR middle-end/32441
12995         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
12996
12997 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
12998
12999         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
13000         (prefetch): Likewise if "pref" would be used.
13001
13002 2007-07-06  Josh Conner  <jconner@apple.com>
13003
13004         PR middle-end/32602
13005         PR middle-end/32603
13006         * calls.c (store_one_arg): Handle arguments which are partially
13007         on the stack when detecting argument overlap.
13008
13009 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
13010
13011         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
13012         chosen during find_reloads.
13013
13014 2007-07-06  Richard Guenther  <rguenther@suse.de>
13015
13016         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
13017         TYPE_ARG_TYPES for verification of argument types.  Use
13018         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
13019         parameters as variable arguments.
13020
13021 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
13022
13023         * libgcc2.h (word_type): Type definition removed.
13024         (cmp_return_type, shift_count_type): Type definitions added.
13025         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
13026         replaced with shift_count_type.
13027         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
13028         cmp_return_type.
13029         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
13030         changed from word_type to Wtype.
13031         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
13032         replaced with shift_count_type.
13033         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
13034         cmp_return_type.
13035         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
13036         and libgcc_shift_count attribute added.
13037         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
13038         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
13039         (TARGET_INITIALIZER): New target hooks added.
13040         * targhooks.c (default_libgcc_cmp_return_mode,
13041         default_libgcc_shift_count_mode): Default implementations for the new
13042         target hooks added.
13043         * targhooks.h (default_libgcc_cmp_return_mode,
13044         default_libgcc_shift_count_mode): Function prototypes added.
13045         * target.h (struct gcc_target): Fields for the new target hooks added.
13046         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
13047         as library call.
13048         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
13049         library call.
13050
13051         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
13052         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
13053
13054         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
13055         s390_libgcc_shift_count_mode): Functions added.
13056         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
13057         Target hooks defined.
13058
13059 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
13060
13061         * config/mips/mips.c (compute_frame_size): Restore the original
13062         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
13063         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
13064         Document why the difference is needed.
13065
13066 2007-07-06  Richard Guenther  <rguenther@suse.de>
13067
13068         * c-common.c (boolean_increment): Use correctly typed
13069         constant.
13070
13071 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
13072
13073         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
13074         the topmost argument register is not also included in the save mask.
13075         (mips16e_collect_argument_save_p): Take a pointer to the argument
13076         register, rather than a pointer to the number of arguments.
13077         (mips16e_collect_argument_saves): Only include argument saves
13078         that aren't in the register mask.
13079
13080 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
13081
13082         PR rtl-optimization/32450
13083         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
13084         to ensure that instructions are not moved into the prologue when
13085         profiling is on.  Remove unused prologue_end variable.
13086         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
13087         as a scheduling barrier.
13088
13089 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
13090
13091         PR debug/23551
13092         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
13093         Disregard DECL_FROM_INLINE.
13094
13095 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
13096
13097         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
13098         IORing with a constant.
13099
13100 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
13101
13102         PR rtl-optimization/32475
13103         * df-scan.c (df_def_record_1): Add a use of the stack pointer
13104         for every definition of the stack pointer.
13105
13106 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
13107
13108         * arm.c (vfp3_const_double_index): Copy signed results of
13109         REAL_VALUE_TO_INT into unsigned vars.
13110
13111 2007-07-05  Richard Guenther  <rguenther@suse.de>
13112
13113         PR middle-end/32639
13114         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
13115         FUNCTION_TYPE.
13116         * tree-ssa.c (useless_type_conversion_p): Check canonical
13117         types early.
13118
13119 2007-07-05 Anatoly Sokolov <aesok@post.ru>
13120
13121         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
13122         zero_extendhisi2): Change to define_insn_and_split. 
13123         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
13124
13125 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
13126
13127         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
13128         pass_match_asm_constraints): New.
13129         * passes.c (init_optimization_passes): Add new pass.
13130         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
13131         * function.h (struct function): Add has_asm_statement bit.
13132         (current_function_has_asm_statement): New.
13133         * tree-pass.h (pass_match_asm_constraints): New.
13134
13135 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
13136
13137         * config/mips/mips.c (mips_file_start): Avoid declaration
13138         after code.
13139
13140 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
13141
13142         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
13143
13144 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
13145
13146         * rtl.def (NOTE): Change print format string to print
13147         operand 5 as a note insn name.
13148
13149 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
13150             David Ung  <davidu@mips.com>
13151
13152         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
13153         * doc/invoke.texi: (MIPS Options): Document them.
13154
13155 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
13156             David Ung  <davidu@mips.com>
13157
13158         Add support for SmartMIPS ASE.
13159
13160         * optabs.c (expand_binop_directly): New, broken out from...
13161         (expand_binop): Here.  Make it try rotating in the other
13162         direction even when the second operand isn't constant.
13163         * config/mips/mips.md (*lwxs): New.
13164         * config/mips/mips.opt (msmartmips): New.
13165         * config/mips/mips.c (mips_lwxs_address_p): New.
13166         (mips_rtx_costs): Make it recognize scaled indexed addressing.
13167         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
13168         __mips_smartmips when compiling for TARGET_SMARTMIPS.
13169         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
13170         (ISA_HAS_LWXS): New.
13171         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
13172         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
13173         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
13174         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
13175         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
13176         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
13177         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
13178
13179 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
13180
13181         * tree-vectorizer.c (new_loop_vec_info): Initialize
13182         LOOP_VINFO_COST_MODEL_MIN_ITERS.
13183         * tree-vectorizer.h (_loop_vec_info): Added new filed
13184         min_profitable_iters.
13185         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
13186         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
13187         * tree-vect-analyze.c (vect_analyze_operations): Set
13188         LOOP_VINFO_COST_MODEL_MIN_ITERS.
13189         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
13190         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
13191         Fix calculation of peel_iters_prologue. Move consideration of epilogue
13192         and prologue cost to after they are computed.
13193         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
13194         TARG_VEC_STMT_COST.
13195         (vect_model_simple_cost): Takes additional argument dt. Consider cost
13196         of creating vectors from scalars according to dt.
13197         (vect_model_store_cost): Likewise.
13198         (vectorizable_call): Use dt array instead of scalar dt. Call
13199         vect_model_simple_cost with additional argument dt.
13200         (vectorizable_assignment): Likewise.
13201         (vectorizable_operation): Likewise.
13202         (vectorizable_type_demotion): Likewise.
13203         (vectorizable_type_promotion): Likewise.
13204         (vectorizable_store): Use dt array instead of scalar dt. Call
13205         vect_model_store_cost with additional argument dt.
13206         (vect_do_peeling_for_loop_bound): Don't call
13207         vect_estimate_min_profitable_iters. Instead, lookup
13208         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
13209         "may not be profitable".
13210
13211 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
13212
13213         PR testsuite/32014
13214         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
13215         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
13216         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
13217         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
13218
13219 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
13220
13221         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
13222         addressing modes cheaper.
13223
13224 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
13225
13226         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
13227         (dw_ranges_struct): Rename block_num to num.  Adjust.
13228         (dw_ranges_by_label_struct): New.
13229         (ranges_by_label, ranges_by_label_allocated,
13230         ranges_by_label_in_use): New variables.
13231         (add_ranges_num): Factored most of the code out of...
13232         (add_ranges): ... this one.  Rewrite in terms of the former.
13233         (add_ranges_by_labels): New.
13234         (output_ranges): Output by-label ranges.
13235         (dwarf2out_finish): Output range for multiple-section
13236         compile_unit.  Output standard DW_AT_low_pc in addition to
13237         unexpected DW_AT_entry_pc.
13238
13239 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
13240
13241         PR tree-optimization/32604
13242         PR tree-optimization/32606
13243
13244         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
13245         (compute_antic_safe): Removed.
13246         (ANTIC_SAFE_LOADS): Ditto.
13247         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
13248         (execute_pre): Don't call compute_antic_safe.
13249         (vuse_equiv): New function.
13250         (make_values_for_stmt): Use it
13251         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
13252         not always true.
13253
13254 2007-07-04 Anatoly Sokolov <aesok@post.ru>
13255
13256         PR target/31331
13257         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
13258         rather than a decl. 
13259         (avr_attribute_table): Make "naked" attribute apply to function types
13260         rather than to decls.
13261         (avr_handle_fntype_attribute): New function.
13262
13263 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
13264
13265         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
13266         after \.
13267
13268 2007-07-04  David Ung  <davidu@mips.com>
13269             Joseph Myers  <joseph@codesourcery.com>
13270
13271         * config/mips/mips.md (type): Add logical, signext and move.
13272         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
13273         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
13274         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
13275         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
13276         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
13277         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
13278         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
13279         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
13280         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
13281         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
13282         movv2sf_hardfloat_64bit): Use the new types.
13283         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
13284         *movdf_softfloat, *movdf_mips16): Use "multi".
13285         (extendqihi2): Replace with a define_expand.
13286         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
13287         Based on extend<SHORT:mode><GPR:mode>2 patterns.
13288         * config/mips/74k.md (r74k_int_logical): New reservation and
13289         bypasses.
13290         (r74k_int_arith): Remove "slt".
13291         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
13292         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
13293         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
13294         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
13295         reservations for "arith".
13296
13297 2007-07-04  Richard Guenther  <rguenther@suse.de>
13298
13299         * tree-ssa.c (useless_type_conversion_p): Add handling for
13300         scalar float and vector types.  Only call the types_compatible_p
13301         langhook for aggregate types as last resort.  Follow the
13302         rules.
13303
13304 2007-07-04  Richard Guenther  <rguenther@suse.de>
13305
13306         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
13307         the same as NOP_EXPR.
13308
13309 2007-07-04  Nick Clifton  <nickc@redhat.com>
13310
13311         * target.h (struct gcc_target): Add target_help field.
13312         * target-def.h (TARGET_HELP): New.
13313         (TARGET_INITIALIZER): Use TARGET_HELP.
13314         * opts.c (command_handle_option): Invoke target_help function, if
13315         defined, when the user has specified --target-help on the command
13316         line.
13317         * doc/invoke.texi: Mention that --target-help might print
13318         additional information.
13319         * doc/tm.texi: Document TARGET_HELP hook.
13320
13321         * arm.c (TARGET_HELP): Override default definition.
13322         (arm_target_help): New - display a wrapped list of cores and
13323         architectures supported.
13324
13325 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13326
13327         * config/v850/v850.c (expand_prologue): Make sure
13328         GEN_INT() argument is sign extended rather than zero extended.
13329         (expand_epilogue): Likewise.
13330         (output_move_double): Delete.
13331         * config/v850/v850-protos.h (output_move_double): Delete.
13332         * config/v850/v850.md (movdi): Delete.
13333         (*movdi_internal): Delete.
13334         (movdf): Delete.
13335         (*movdf_internal): Delete.
13336
13337 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
13338
13339         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
13340         unless compiling RTP PIC.
13341
13342 2007-07-04  Richard Guenther  <rguenther@suse.de>
13343
13344         PR tree-optimization/32482
13345         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
13346         original ssa name if we didn't find a shift expression.
13347         Fix shift constant for bit zero test.
13348
13349 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
13350
13351         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
13352
13353 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
13354
13355         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
13356         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
13357         * config/arm/vxworks.h (ASM_SPEC): Delete.
13358         (SUBTARGET_EXTRA_ASM_SPEC): Define.
13359
13360 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
13361
13362         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
13363         (DDR_REVERSED_P): New.
13364         * tree-data-ref.c (initialize_data_dependence_relation,
13365         build_classic_dist_vector): Set DDR_REVERSED_P.
13366
13367 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
13368
13369         PR middle-end/32457
13370         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
13371         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
13372         init_omega_for_ddr_1): Use non conservative number of iterations
13373         estimations.
13374         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
13375         (analyze_siv_subscript): Remove FIXME and reinitialization of 
13376         last_conflicts to chrec_dont_know.
13377         * testsuite/gfortran.dg/vect/pr32457.f90: New.
13378
13379 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
13380
13381         * tree.c (maybe_canonicalize_argtypes): Improve description.
13382
13383 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
13384
13385         * tree.c (maybe_canonicalize_argtypes): New.
13386         (build_function_type): Set canonical type.
13387         (build_method_type_directly): Ditto.
13388         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
13389         properly.
13390
13391 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13392
13393         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
13394         like PLUS_EXPR.
13395         (rewrite_use_nonlinear_expr): Likewise.
13396
13397 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
13398
13399         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
13400
13401 2007-07-04  Ben Elliston  <bje@au.ibm.com>
13402
13403         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
13404         of this file.
13405
13406         * c-objc-common.c (c_types_compatible_p): Fix indentation.
13407
13408         * doc/tm.texi (Run-time Target): Capitalise "CPU".
13409         (Exception Handling): Likewise.
13410
13411 2007-07-03  Jan Hubicka  <jh@suse.cz>
13412
13413         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
13414
13415 2007-07-03  Eric Christopher  <echristo@apple.com>
13416
13417         * doc/cppopts.texi: Add conflicting option note to -dM.
13418         * doc/invoke.texi: Add note about possible conflicts with
13419         -E for -dCHARS and note that -dM will not produce
13420         any results if there is no machine dependent reorg.
13421         
13422 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
13423
13424         * tree.h (DECL_ALIGN): Back out previous change.
13425
13426 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
13427
13428         * configure.ac: Test for .dtprelword support on MIPS.
13429         * configure, config.in: Regenerate.
13430         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
13431         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
13432
13433 2007-07-03  Julian Brown  <julian@codesourcery.com>
13434
13435         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
13436         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
13437         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
13438         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
13439         capability.
13440         (all_fpus): Add FPUTYPE_VFP3.
13441         (fp_model_for_fpu): Add VFPv3 field.
13442         (arm_rtx_costs_1): Give cost to VFPv3 constants.
13443         (vfp3_const_double_index): New function. Return integer index of
13444         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
13445         isn't suitable.
13446         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
13447         and argument represents a valid RTX for a VFPv3 constant.
13448         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
13449         two instructions.
13450         (vfp_emit_fstmd): Similar, for fstmd.
13451         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
13452         constants, represented as integer indices.
13453         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
13454         VFP_REGNO_OK_FOR_DOUBLE macros.
13455         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
13456         (arm_file_start): Set float-abi attribute for VFPv3, and output
13457         correct ".fpu" assembler directive.
13458         (arm_dbx_register_numbering): Add FIXME.
13459         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
13460         (fputype): Add FPUTYPE_VFP3.
13461         (FIXED_REGISTERS): Add 32 registers for D16-D31.
13462         (CALL_USED_REGISTERS): Likewise.
13463         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
13464         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
13465         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
13466         (D7_VFP_REGNUM): New.
13467         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
13468         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
13469         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
13470         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
13471         (REG_ALLOC_ORDER): Adjust for VFPv3.
13472         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
13473         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
13474         VFP_LO_REGS, VFP_HI_REGS.
13475         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
13476         (IS_VFP_CLASS): Define macro.
13477         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
13478         IS_VFP_CLASS.
13479         (REGISTER_MOVE_COST): Likewise.
13480         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
13481         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
13482         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
13483         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
13484         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
13485         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
13486         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
13487         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
13488         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
13489         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
13490         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
13491         where appropriate for single-word registers.
13492         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
13493         As above. Fix type attributes.
13494         * config/arm/constraints.md (register_contraint "t"): Define.
13495         (register_constraint "w"): Change to D0-D15, or D0-D31 for
13496         VFPv3/NEON.
13497         (register_constraint "x"): Define.
13498         (constraint "Dv"): Define.
13499
13500 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
13501
13502         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
13503
13504 2007-07-03  Tom Tromey  <tromey@redhat.com>
13505
13506         * c-parser.c (objc_pq_context): Removed.
13507         (objc_need_raw_identifier): Likewise.
13508         (c_parser) <objc_pq_context>: New field.
13509         <objc_need_raw_identifier>: Likewise.
13510         (OBJC_NEED_RAW_IDENTIFIER): Removed.
13511         (c_lex_one_token): Update.
13512         (c_parser_objc_protocol_definition): Update.
13513         (c_parser_objc_method_definition): Update.
13514         (c_parser_objc_methodproto): Update.
13515         (c_parser_declspecs): Update.
13516
13517 2007-07-03  David Ung  <davidu@mips.com>
13518
13519         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
13520
13521 2007-07-03  David Ung  <davidu@mips.com>
13522             Richard Sandiford  <richard@codesourcery.com>
13523
13524         * doc/invoke.texi: Document -march=74kf3_2.
13525         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
13526         (TUNE_74K): Check for it.
13527         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
13528         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
13529         * config/mips/mips.md (cpu): Add 74kf3_2.
13530         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
13531         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
13532         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
13533         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
13534         74kf3_2 to the CPU list.
13535         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
13536         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
13537         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
13538         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
13539         (r74kf3_2_fxfer_from_c1): New insn reservations.
13540
13541 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
13542             David Ung  <davidu@mips.com>
13543
13544         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
13545         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
13546         and 74k[fx].  Document aliases for the new options.
13547         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
13548         (PROCESSOR_24KF2_1): ...this.
13549         (PROCESSOR_24KX): Rename to...
13550         (PROCESSOR_24KF1_1): ...this.
13551         (PROCESSOR_74KF): Rename to...
13552         (PROCESSOR_74KF2_1): ...this.
13553         (PROCESSOR_74KX): Rename to...
13554         (PROCESSOR_74KF1_1): ...this.
13555         (TUNE_74K): Update PROCESSOR_* names.
13556         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
13557         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
13558         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
13559         (mips_rtx_cost_data): Update processor names in comments.
13560         (mips_issue_rate): Update PROCESSOR_* names.
13561         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
13562         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
13563         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
13564         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
13565         Update cpu attribute names.
13566         (r24k_fpu_iss): Rename this reservation to...
13567         (r24kf2_1_fpu_iss): ...this and update all uses.
13568         (r24kx_fpu_iss): Rename this reservation to...
13569         (r24kf1_1_fpu_iss): ...this and update all uses.
13570         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
13571         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
13572         Update cpu attribute names.
13573
13574 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
13575
13576         * config/m32r/constraints.md: New file.
13577         * config/m32r/m32r.c: Include tm-constrs.h.
13578         (small_data_operand): Use satisfies_constraint_* instead of macro.
13579         (addr24_operand, gen_compare): Likewise.
13580         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
13581         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
13582         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
13583         EXTRA_CONSTRAINT): Likewise.
13584         * config/m32r/m32r.md: Include constraints.md.
13585         (*movsi_insn): Use satisfies_constraint_* instead of macro.
13586         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
13587         * config/m32r/predicates.md (conditional_move_operand): Likewise.
13588         (two_insn_const_operand, int8_operand, uint16_operand,
13589         reg_or_int16_operand, reg_or_uint16_operand,
13590         reg_or_cmp_int16_operand, cmp_int16_operand,
13591         seth_add3_operand): Likewise.
13592
13593 2007-07-03  Eric Christopher  <echristo@gmail.com>
13594
13595         * libgcc2.h: Conditionally declare __bswapsi2 and
13596         __bswapdi2.
13597         
13598 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
13599
13600         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
13601         defined.
13602
13603 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13604
13605         PR target/28307
13606         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
13607         (__gthrw_pragma): Provide default definition.
13608         (__gthrw2): Use it.
13609         * gthr-posix.c (__gthrw_pragma): Define.
13610
13611 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
13612
13613         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
13614         before declaring inequality.
13615
13616 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13617
13618         * combine.c (recog_for_combine): Log the success or failure of
13619           matching new insn patterns against the machine description in
13620           detailed dumps.
13621
13622 2007-07-03  Revital Eres  <eres@il.ibm.com>
13623
13624         * ddg.c (print_sccs): New function.
13625         (check_sccs): New function.
13626         (create_ddg_all_sccs): Use it.
13627         * ddg.h (print_sccs): Declare.
13628         * modulo-sched.c (sms_order_nodes): Call print_sccs.
13629
13630 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
13631
13632         * targhooks.h (default_mode_for_suffix): New function declaration.
13633         * targhooks.c (default_mode_for_suffix): New default target hook.
13634         * target.h (struct c): New structure in the targetm struct.
13635         (mode_for_suffix): New target hook as part of struct c.
13636         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
13637         default_mode_for_suffix.
13638         (TARGET_C): New define.
13639         * c-lex.c: Include "target.h".
13640         (interpret_float): Use targetm.c.mode_for_suffix to determine
13641         the mode for a given non-standard suffix.
13642         Makefile.in (c-lex.o): Depend on $(TARGET_H).
13643
13644         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
13645         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
13646
13647         * doc/extend.texi (Floating Types): New node.  Document __float80 and
13648         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
13649
13650 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
13651
13652         PR target/32506
13653         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
13654         predicate instead of target_operand.
13655         (divsi3_i1_media, divsi3_media_2): Likewise.
13656
13657 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
13658
13659         * tree.h (alias_sets_might_conflict_p): Rename into
13660         alias_sets_must_conflict_p.
13661         * alias.c (alias_sets_might_conflict_p): Likewise.
13662         (alias_sets_conflict_p): Use it.
13663         (objects_must_conflict_p): Likewise.
13664         * c-common.c (strict_aliasing_warning): Adjust.
13665
13666 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13667
13668         * rtlhooks.c (gen_lowpart_if_possible): Check for
13669         invalid subreg before calling gen_lowpart_SUBREG.
13670
13671 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
13672
13673         * config/darwin9.h: Add copyright notice.
13674         (LINK_COMMAND_SPEC): Add comment.
13675         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
13676         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
13677         DARWIN_LIBSYSTEM_HAS_UNWIND.
13678
13679 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
13680
13681         PR libgomp/32468
13682         * omp-low.c (check_combined_parallel): New function.
13683         (lower_omp_parallel): Call it via walk_stmts, set
13684         OMP_PARALLEL_COMBINED if appropriate.
13685         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
13686         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
13687         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
13688         don't consider it as combined parallel.
13689
13690 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
13691
13692         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
13693         (gcc_tooldir): Likewise.
13694         * configure: Regenerate.
13695         * Makefile.in (libsubdir_to_prefix): New variable, based on the
13696         old configure.ac gcc_tooldir setting.
13697         (prefix_to_exec_prefix): New variable.
13698         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
13699         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
13700
13701 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
13702
13703         Fix PR tree-optimization/32583
13704         Fix PR tree-optimization/32584
13705         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
13706         (phi_translate_set): Use phi_translate directly now.
13707         (make_values_for_stmt): Don't value number RHS if we already know
13708         it is constant.
13709
13710 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
13711             Jim Wilson <wilson@specifix.com>
13712
13713         PR target/31684
13714         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
13715         copy_insn.
13716
13717 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
13718             Richard Sandiford  <richard@codesourcery.com>
13719             Nigel Stephens  <nigel@mips.com>
13720
13721         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
13722         (mips16e_output_save_restore): Declare.
13723         (mips16e_save_restore_pattern_p): Likewise.
13724         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
13725         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
13726         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
13727         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
13728         (BITSET_P): New global macro, extracted from...
13729         (mips_for_each_saved_reg): ...here.
13730         (mips16e_save_restore_info): New struct.
13731         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
13732         (mips16e_save_restore_regs): New variable.
13733         (mips_split_plus, mips16e_find_first_register): New functions.
13734         (mips16e_mask_registers): New function.
13735         (compute_frame_size): Expand the commentary before the function.
13736         Enforce the MIPS16e save and restore register range restrictions.
13737         Pad the general register save area at the low end.
13738         (mips16e_save_restore_reg, mips16e_build_save_restore)
13739         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
13740         (mips16e_output_save_restore, mips16e_collect_propagate_value)
13741         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
13742         New functions.
13743         (mips_expand_prologue, mips_expand_epilogue): Handle
13744         GENERATE_MIPS16E_SAVE_RESTORE.
13745         * config/mips/mips.md (*mips16e_save_restore): New pattern.
13746
13747 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
13748
13749         PR tree-optimization/31966
13750         PR tree-optimization/32533
13751         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
13752         "basic_block" description as its third argument.  Update function
13753         calls to get destination bb from "edge" argument.  Save "cond" into
13754         aux field of the edge.  Update prototype for changed arguments.
13755         (if_convertible_loop_p): Clear aux field of incoming edges if bb
13756         contains phi node.
13757         (find_phi_replacement_condition): Operate on incoming edges, not
13758         on predecessor blocks.  If there is a condition saved in the
13759         incoming edge aux field, AND it with incoming bb predicate.
13760         Return source bb of the first edge.
13761         (clean_predicate_lists): Clean aux field of outgoing node edges.
13762         (tree_if_conversion): Do not initialize cond variable. Move
13763         variable declaration into the loop.
13764         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
13765         initializations of new_stmt, arg0 and arg1 variables.
13766
13767 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
13768
13769         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
13770         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
13771
13772 2007-07-02  Richard Guenther  <rguenther@suse.de>
13773
13774         * tree-ssa.c (useless_type_conversion_p): Document
13775         future intent as defining the middle-end type system.
13776         Re-structure to call langhook last, group by type class,
13777         mark questionable parts.
13778
13779 2007-07-02  Richard Guenther  <rguenther@suse.de>
13780
13781         * tree-flow.h (types_compatible_p): Declare.
13782         * tree-ssa.c (types_compatible_p): New function.
13783         * ipa-type-escape.c (discover_unique_type): Use
13784         types_compatible_p instead of lang_hooks.types_compatible_p.
13785         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
13786         * tree-vn.c (expressions_equal_p): Likewise.
13787         * tree.c (fields_compatible_p): Likewise.
13788         * tree-ssa-dom.c (avail_expr_eq): Likewise.
13789         (cprop_operand): Use useless_type_conversion_p instead of
13790         lang_hooks.types_compatible_p.
13791         * tree-inline.c (setup_one_parameter): Likewise.
13792         (declare_return_variable): Likewise.
13793         * tree-nrv.c (tree_nrv): Likewise.
13794         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
13795         (maybe_fold_offset_to_component_ref): Likewise.
13796         (maybe_fold_offset_to_reference): Likewise.
13797         * tree-ssa-copy.c (may_propagate_copy): Likewise.
13798         (merge_alias_info): Likewise.
13799         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
13800         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
13801         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
13802         * tree-tailcall.c (find_tail_calls): Likewise.
13803         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
13804         * gimplify.c (canonicalize_addr_expr): Likewise.
13805         (fold_indirect_ref_rhs): Likewise.
13806         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
13807         (cpt_same_type): Likewise.
13808         (check_pointer_types_r): Swap parameters to cpt_same_type
13809         where appropriate.
13810         * fold-const.c (fold_convert): Revert fix for PR15988.
13811         * tree-inline.c (setup_one_parameter): Instead fix it here by
13812         using fold_build1 instead of fold_convert and checking for
13813         error_mark_node.  Convert only if the conversion is necessary.
13814
13815 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
13816
13817         * configure.ac: Check for .gnu_attribute on Power.
13818         * configure: Regenerate.
13819         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
13820         attribute for floating-point ABI.
13821
13822 2007-07-02  Ira Rosen  <irar@il.ibm.com>
13823
13824         PR tree-optimization/32230
13825         PR tree-optimization/32477
13826         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
13827         address is a constant.
13828
13829 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
13830
13831         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
13832         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
13833         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
13834         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
13835         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
13836         64-bit targets.  Add support for *-elfoabi*.
13837         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
13838         different settings if $(tm_defines) does not select the EABI.
13839         (MULTILIB_EXCLUSIONS): Define in those circumstances.
13840         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
13841         (MIPS_ARCH_OPTION_SPEC): Likewise.
13842         (MIPS_ISA_LEVEL_SPEC): Likewise.
13843         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
13844         * config/mips/elfoabi.h: New file.
13845
13846 2007-07-02  Richard Guenther  <rguenther@suse.de>
13847
13848         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
13849         (useless_type_conversion_p): ... this.
13850         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
13851         (useless_type_conversion_p): ... this.
13852         * builtins.c (fold_builtin_memory_op): Rename
13853         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
13854         * tree-cfg.c (verify_expr): Likewise.
13855         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
13856         * tree-ssa-ccp.c (ccp_fold): Likewise.
13857         * tree-ssa-copy.c (may_propagate_copy): Likewise.
13858         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
13859         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
13860         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
13861         * tree-ssa-pre.c (eliminate): Likewise.
13862         * tree-ssa.c (delete_tree_ssa): Likewise.
13863         (tree_ssa_useless_type_conversion): Likewise.
13864         * tree.c (build2_stat): Likewise.
13865
13866 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
13867
13868         Fix PR tree-optimization/32571
13869         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
13870         simplifying them.
13871
13872 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
13873
13874         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
13875         and other expected operations explicitly, change default to
13876         gcc_unreachable. 
13877
13878 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13879
13880         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
13881         PARALLEL.
13882         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
13883         (tls_load_dot_plus_eight): Move the label number into the unspec.
13884         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
13885
13886 2007-07-01  Andreas Schwab  <schwab@suse.de>
13887
13888         * dwarf2out.c (initial_return_save): Define only if used.
13889
13890 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
13891
13892         Unreverting Richard's Revert of:
13893
13894         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
13895
13896         * dce.c (deletable_insn_p_1): New function, split out from...
13897         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
13898         specially, not those inside PARALLELs.  Remove BODY argument
13899         and adjust recursive call accordingly.
13900         (prescan_insns_for_dce): Update call to delete_insn_p.
13901
13902 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
13903             Revital Eres  <eres@il.ibm.com>
13904
13905         * ddg.c (create_ddg_all_sccs): Fix missed
13906         initialization of scc_nodes.
13907
13908 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
13909
13910         PR middle-end/32559
13911         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
13912         X + ~X to 1 only for INTEGRAL_TYPE_P type.
13913
13914 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
13915
13916         * configure.ac: Check for .gnu_attribute on MIPS.
13917         * configure, config.in: Regenerate.
13918         * config/mips/mips.c (mips_file_start): If supported, output
13919         attribute for floating-point ABI.
13920
13921 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
13922
13923         PR target/32433
13924         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
13925         (ffs_cmove): New expander to expand using ctz pattern.
13926         (*ffs_cmove): Remove pattern.
13927         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
13928         (ffsdi2): Expand using ctz pattern.
13929         (*ffs_rex64): Remove pattern.
13930
13931 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13932
13933         PR rtl-optimization/32296
13934         * pa.md (return): Delete pattern.
13935         (return_internal): Remove "(const_int 1)" from pattern.
13936         (epilogue): Use return_internal pattern for trivial returns.
13937         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
13938         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
13939
13940 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
13941
13942         * tree-ssa-pre.c (is_exception_related): New function
13943         (can_value_number_operation): Use it.
13944
13945 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
13946         
13947         Fix PR tree-optimization/32540
13948         Fix PR tree-optimization/31651
13949
13950         * tree-ssa-sccvn.c: New file.
13951
13952         * tree-ssa-sccvn.h: Ditto.
13953         
13954         * tree-vn.c: Include tree-ssa-sccvn.h
13955         (val_expr_paid_d): Removed.
13956         (value_table): Ditto.
13957         (vn_compute): Ditto.
13958         (val_expr_pair_hash): Ditto.
13959         (val_expr_pair_expr_eq): Ditto.
13960         (copy_vuses_from_stmt): Ditto.
13961         (vn_delete): Ditto.
13962         (vn_init): Ditto.
13963         (shared_vuses_from_stmt): Ditto.
13964         (print_creation_to_file): Moved up.
13965         (sort_vuses): Ditto.
13966         (sort_vuses_heap): Ditto.
13967         (set_value_handle): Make non-static.
13968         (make_value_handle): Ditto.
13969         (vn_add): Rewritten to use sccvn lookups.
13970         (vn_add_with_vuses): Ditto.
13971         (vn_lookup): Ditto (and second argument removed).
13972         (vn_lookup_with_vuses): Ditto.
13973         (vn_lookup_or_add): Ditto (and second argument removed);
13974         (vn_lookup_or_add_with_vuses): Ditto.
13975         (vn_lookup_with_stmt): New.
13976         (vn_lookup_or_add_with_stmt): Ditto.
13977         (create_value_handle_for_expr): Ditto.
13978
13979         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
13980         (seen_during_translate): New function.
13981         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
13982         (phi_trans_add): Ditto.
13983         (constant_expr_p): FIELD_DECL is always constant.
13984         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
13985         Use constant_expr_p.
13986         Avoid infinite recursion on mutually valued expressions.
13987         Change callers of vn_lookup_or_add.
13988         (phi_translate): New function.
13989         (compute_antic_safe): Allow phi nodes.
13990         (create_component_ref_by_pieces): Update for FIELD_DECL change.
13991         (find_or_generate_expression): Rewrite slightly.
13992         (create_expression_by_pieces): Updated for vn_lookup_or_add
13993         change.
13994         Update VN_INFO for new names.
13995         (insert_into_preds_of_block): Update for new names.
13996         (add_to_exp_gen): New function.
13997         (add_to_sets): Use vn_lookup_or_add_with_stmt.
13998         (find_existing_value_expr): Rewrite to changed vn_lookup.
13999         (create_value_expr_from): Ditto, and use add_to_exp_gen.
14000         (try_look_through_load): Removed.
14001         (try_combine_conversion): Ditto.
14002         (get_sccvn_value): New function.
14003         (make_values_for_phi): Ditto.
14004         (make_values_for_stmt): Ditto.
14005         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
14006         SCCVN.
14007         (init_pre): Update for SCCVN changes.
14008         (fini_pre): Ditto.
14009         (execute_pre): Ditto.
14010
14011         * tree-flow.h (make_value_handle): Declare.
14012         (set_value_handle): Ditto.
14013         (sort_vuses_heap): Ditto.
14014         (vn_lookup_or_add_with_stmt): Ditto.
14015         (vn_lookup_with_stmt): Ditto.
14016         (vn_compute): Remove.
14017         (vn_init): Ditto.
14018         (vn_delete): Ditto.
14019         (vn_lookup): Update arguments.
14020
14021         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
14022         (tree-vn.o): Ditto.
14023         (tree-ssa-sccvn.o): New.
14024         (OBJS-common): Add tree-ssa-sccvn.o
14025         
14026 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14027
14028         PR c/4076
14029         * c-typeck.c (build_external_ref): Don't mark as used if called
14030         from itself.
14031         * calls.c (rtx_for_function_call): Likewise.
14032         
14033 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
14034
14035         Revert:
14036
14037         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
14038
14039         * dce.c (deletable_insn_p_1): New function, split out from...
14040         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
14041         specially, not those inside PARALLELs.  Remove BODY argument
14042         and adjust recursive call accordingly.
14043         (prescan_insns_for_dce): Update call to delete_insn_p.
14044
14045 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
14046
14047         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
14048         (try_combine): Move potential calls to undo_all() so they happen
14049         before we commit to using the combined insns.
14050
14051 2006-06-30  Jan Hubicka  <jh@suse.cz>
14052
14053         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
14054         code.
14055
14056 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
14057
14058         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
14059         (cgraph_remove_unreachable_nodes): Likewise.
14060         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
14061         * ipa-inline.c (update_caller_keys): Cast according to the coding
14062         conventions.
14063         (cgraph_decide_recursive_inlining): Likewise.
14064         (cgraph_decide_inlining_of_small_function): Likewise.
14065         (try_inline): Likewise.
14066         (cgraph_decide_inlining_incrementally): Likewise.
14067         * ipa-pure-const.c (get_function_state): Likewise.
14068         (scan_function): Likewise.
14069         (analyze_function): Likewise.
14070         (static_execute): Likewise.
14071         * ipa-reference.c (scan_for_static_refs): Likewise.
14072         (merge_callee_local_info): Likewise.
14073         (analyze_function): Use type safe memory macros.
14074         (static_execute): Likewise. Cast according to the coding conventions.
14075         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
14076         conventions.
14077         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
14078         names.
14079         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
14080         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
14081         variable names.
14082
14083 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14084
14085         PR middle-end/30024
14086         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
14087         for complex modes (both int and real).
14088
14089 2007-06-29  Jan Hubicka  <jh@suse.cz>
14090
14091         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
14092
14093 2007-06-29  Jan Hubicka  <jh@suse.cz>
14094
14095         PR middle-end/32372
14096         * cse.c (cse_insn): Avoid invalid sharing in between register note and
14097         the insn pattern.
14098
14099 2007-06-29  Anatoly Sokolov <aesok@post.ru>
14100
14101         PR target/32335
14102         * config/avr/avr.c: Include dataflow header file.
14103         (expand_prologue): Adjust for prologue insn change.
14104         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
14105         inside a insn.
14106
14107 2007-06-29  Richard Guenther  <rguenther@suse.de>
14108
14109         PR middle-end/32493
14110         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
14111         during type verification.
14112
14113 2007-06-29  Jan Hubicka  <jh@suse.cz>
14114
14115         * recog.c (validate_change_rtx_1): Unshare TO argument.
14116
14117 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
14118
14119         PR tree-optimization/24659
14120         * tree-vect-transform.c (vectorizable_call): Handle
14121         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
14122
14123         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
14124         * config/i386/i386.c (enum ix86_builtins)
14125         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
14126         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
14127         description.
14128         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
14129         const using def_builtin_const.
14130         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
14131         input operands in the same modes as the result.
14132         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
14133
14134 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
14135
14136         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
14137         (df_set_dead_notes_for_mw): Likewise.
14138
14139 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
14140
14141         * c-common.c (pointer_int_sum): Do the negation in sizetype.
14142
14143 2007-06-28  DJ Delorie  <dj@redhat.com>
14144
14145         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
14146
14147 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
14148
14149         * doc/invoke.texi (C++ Dialect Options): Document
14150         fvisibility-ms-compat.
14151         * c.opt (fvisibility-ms-compat): New.
14152
14153 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14154
14155         PR tree-opt/32417
14156         * tree-affine.c (aff_combination_add_elt): Handle
14157         pointer addition specially.
14158
14159 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
14160
14161         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
14162         decl is non-external for AIX ABI.
14163
14164 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
14165
14166         * config/rs6000/predicates.md (current_file_function_operand):
14167         Ensure the symbol is non-external for AIX ABI.
14168
14169 2007-06-28  Nick Clifton  <nickc@redhat.com>
14170
14171         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
14172         (fdce, fdse, fpredictive-commoning): Likewise.
14173
14174 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
14175
14176         PR other/31400
14177         * gcc.c (process_command): Recognize the new -static-libgfortran
14178         option.
14179
14180 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14181
14182         PR target/32418
14183         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
14184         Use a call clobbered hard reg instead of a pseudo reg.
14185
14186 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
14187
14188         * config/sh/sh.md (load_gbr): Use correct operand constraint.
14189
14190 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
14191
14192         PR target/32479
14193         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
14194         REG_LIBCALL and REG_RETVAL notes.
14195         (divsi3, mulsi3): Likewise.
14196         (mulhisi3): Likewise.  Use emit_libcall_block.
14197         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
14198
14199 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
14200
14201         PR rtl-optimization/32481
14202         * combine.c (adjust_for_new_dest): Rescan the changed insn.
14203
14204 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
14205
14206         * dce.c (deletable_insn_p_1): New function, split out from...
14207         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
14208         specially, not those inside PARALLELs.  Remove BODY argument
14209         and adjust recursive call accordingly.
14210         (prescan_insns_for_dce): Update call to delete_insn_p.
14211
14212 2007-06-27  Richard Guenther  <rguenther@suse.de>
14213
14214         PR middle-end/32492
14215         * tree.h (fold_convertible_p): Declare.
14216         * fold-const.c (fold_convertible_p): New function.
14217         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
14218         instead of lang_hooks.types_compatible_p.
14219
14220 2007-06-26  Jan Hubicka  <jh@suse.cz>
14221
14222         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
14223         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
14224         early use validate_unshare_change.
14225         (reload_combine): Likewise.
14226         * recog.c (change_t): New field unshare.
14227         (validate_change_1): Rename from validate_change; add argument unshare.
14228         (validate_change): Turn into wrapper of validate_change_1; update
14229         prototype for bools.
14230         (validate_unshare_change): New.
14231         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
14232         calls of df_insn_rescan.
14233         * recog.h (validate_change): Replace ints by bools.
14234         (validate_unshare_change): Declare.
14235
14236 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
14237
14238         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
14239         
14240 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
14241
14242         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
14243
14244 2007-06-25  Jan Hubicka  <jh@suse.cz>
14245
14246         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
14247         uninlinable call.
14248         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
14249         cgraph_decide_inlining_incrementally): Move uninlinability checks to
14250         places other call site specific checks are performed.
14251
14252 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14253
14254         PR tree-opt/32421
14255         * tree-vect-transform.c (vectorizable_operation): Convert
14256         POINTER_PLUS_EXPR over to PLUS_EXPR.
14257
14258 2007-06-25  Chao-ying Fu  <fu@mips.com>
14259
14260         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
14261         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
14262         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
14263         Document GET_MODE_IBIT, and GET_MODE_FBIT.
14264
14265         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
14266         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
14267         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
14268         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
14269         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
14270         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
14271         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
14272         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
14273         ALL_FIXED_POINT_MODE_P): New define.
14274         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
14275         MODE_UACCUM.
14276         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
14277
14278         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
14279         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
14280         MODE_VECTOR_UACCUM): New mode classes.
14281
14282         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
14283         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
14284         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
14285         USA, UDA, and UTA.
14286
14287         * genmodes.c (struct mode_data): Add ibit and fbit fields.
14288         (blank_mode): Initialize ibit and fbit.
14289         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
14290         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
14291         MODE_UACCUM.
14292         (new_adjust): Change required_class to required_class_from and
14293         required_class_to for testing within a range.
14294         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
14295         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
14296         MODE_VECTOR_UACCUM.
14297         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
14298         (make_fixed_point_mode): New.
14299         (_ADD_ADJUST): Change C to C1 and C2.
14300         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
14301         use a range for machine classes.
14302         (ADJUST_IBIT, ADJUST_FBIT): New.
14303         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
14304         CONST_MODE_FBIT.
14305         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
14306         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
14307         Emit adjustment for ibit and fbit.
14308         (emit_mode_ibit, emit_mode_fbit): New.
14309         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
14310
14311 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
14312
14313         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
14314         as the source of the set.
14315
14316 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
14317
14318         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
14319         FP_REGNO_P): Use IN_RANGE.
14320         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
14321         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
14322         (DATA_REG_P): Use DATA_REGNO_P.
14323         (FP_REG_P): Use FP_REGNO_P.
14324         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
14325         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
14326         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
14327
14328 2007-06-24  Jan Hubicka  <jh@suse.cz>
14329
14330         PR middle-end/30563
14331         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
14332
14333 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
14334
14335         PR middle-end/32461
14336         * fold-const.c (fold_binary): Strip nops of operand 0
14337         of BIT_NOT_EXPR before calling operand_equal_p.
14338         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
14339         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
14340
14341 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
14342
14343         * doc/extend.texi: Document that dllimport and dllexport imply
14344         default visibility.
14345         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
14346         imported or exported declaration, including type declarations.
14347         * c-common.c (handle_visibility_attribute): Check for conflicts
14348         with dllimport/dllexport.
14349         (c_determine_visibility): Handle dllimport/dllexport as an
14350         explicit visibility atttribute.
14351
14352 2007-06-23  Richard Guenther  <rguenther@suse.de>
14353
14354         PR tree-optimization/16876
14355         PR middle-end/29478
14356         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
14357         for CALL_EXPRs.
14358         * tree-inline.c (initialize_inlined_parameters): Do not call
14359         lang_hooks.tree_inlining.convert_parm_for_inlining.
14360         * cgraphbuild.c (initialize_inline_failed): Set inline failed
14361         reason for mismatched types.
14362         * gimplify.c (gimplify_call_expr): Verify the call expression
14363         arguments match the called function type signature.  Otherwise
14364         mark the call expression to be not considered for inlining
14365         using CALL_CANNOT_INLINE_P flag.
14366         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
14367         edges call expression.
14368         (cgraph_decide_inlining_of_small_function): Likewise.
14369         (cgraph_decide_inlining): Likewise.
14370         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
14371         Remove define.
14372         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
14373         * c-typeck.c (c_convert_parm_for_inlining): Remove.
14374         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
14375         Remove declaration.
14376         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
14377         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
14378         Remove.
14379         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
14380         convert_parm_for_inlining member.
14381
14382 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
14383
14384         PR target/31152
14385         * arm.md (negscc): Match the correct operand for optimized LT0 test.
14386         Remove optimization for GT.
14387
14388 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
14389
14390         PR middle-end/32437
14391         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
14392         is a PARALLEL.
14393         (prescan_insns_for_dce): Add extra parameter.
14394         
14395 2007-06-23  Jan Hubicka  <jh@suse.cz>
14396
14397         PR middle-end/31541
14398         * gimplify.c (mark_addressable): New function.
14399         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
14400
14401 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
14402
14403         PR middle-end/32374
14404         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
14405
14406 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
14407
14408         PR target/32413
14409         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
14410         moves between MMX/SSE registers to at least 8 units to prevent
14411         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
14412
14413 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
14414
14415         * config/i386/i386.c (override_options): Correct x86_sahf
14416         setting condition.
14417
14418 2007-06-21  David Daney  <ddaney@avtrex.com>
14419
14420         PR target/32406
14421         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
14422         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
14423         (exception_receiver): Renamed to ...
14424         (nonlocal_goto_receiver): ... this.
14425
14426 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
14427
14428         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
14429         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
14430         partial register accesses.
14431
14432 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
14433
14434         * fold-const.c (debug_fold_checksum): Move it under
14435         ENABLE_FOLD_CHECKING.
14436
14437 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
14438
14439         PR middle-end/20623
14440         * tree.h (debug_fold_checksum): Declared.
14441         * fold-const.c (build_fold_addr_expr_with_type_1): New.
14442         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
14443         build_fold_addr_expr_with_type_1.
14444         (fold_addr_expr, debug_fold_checksum): New.
14445         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
14446         (fold_unary, fold_comparison, split_address_to_core_and_offset):
14447         Use fold_addr_expr.
14448         
14449 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
14450
14451         PR tree-optimization/19590
14452         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
14453         of scev is a constant.
14454
14455 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
14456
14457         * df-problems.c (df_note_bb_compute): Made computation of live
14458         info consistent with df_lr.
14459
14460 2007-06-21  Richard Guenther  <rguenther@suse.de>
14461
14462         PR tree-optimization/32453
14463         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
14464         for pointer anti-range.
14465
14466 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
14467
14468         * config/i386/i386.c (processor_target_table): Increase maximum
14469         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
14470         default 64bit.
14471
14472         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
14473         byte alignment if > 8 byte alignment is preferred.
14474         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
14475
14476 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
14477
14478         PR tree-optimization/31866
14479         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
14480         if ASM_EXPR's input is not a SSA_NAME.
14481
14482         PR middle-end/32362
14483         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
14484         but decl is a global var, instead return decl.
14485         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
14486         even for is_global_var decls, if they are private in some outer
14487         context.
14488
14489 2007-06-21  Richard Guenther  <rguenther@suse.de>
14490
14491         PR tree-optimization/32451
14492         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
14493
14494 2007-06-21  Christian Bruel  <christian.bruel@st.com>
14495
14496         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
14497         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
14498         (push_regs): Changed saving order or banked registers.
14499         (sh_expand_epilogue): Likewise.
14500         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
14501         (FIRST_BANKED_REG): Likewise.
14502         (LAST_BANKED_REG): Likewise.
14503         * config/sh/sh.md (banked) New attribute.
14504         (in_delay_slot): Check banked attribute.
14505         
14506 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
14507
14508         PR tree-optimization/32075
14509         * tree-data-ref.c (subscript_dependence_tester_1, 
14510         analyze_miv_subscript, analyze_overlapping_iterations,
14511         add_distance_for_zero_overlaps, build_classic_dist_vector,
14512         subscript_dependence_tester_1, analyze_overlapping_iterations,
14513         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
14514         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
14515         to evolution_function_is_affine_multivariate_p.
14516
14517 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
14518
14519         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
14520
14521 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14522
14523         PR target/32335
14524         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
14525         for TARGET_A16.
14526         * config/m32c/prologue.md (epilogue_exitd_16): New.
14527         (epilogue_reit_16): New.
14528         (epilogue_exitd): Rename to epilogue_exitd_24.
14529         (epilogue_reit): Rename to epilogue_reit_24.
14530
14531 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
14532             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14533
14534         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
14535         New counters.
14536         * haifa-sched.c (queue_to_ready): Don't requeue next insn
14537         if dbg_cnt (sched_insn) reaches the limit.
14538         (choose_ready): New parameter INSN_PTR and new return value.
14539         (schedule_block): Handle dbg_cnt (sched_insn). Handle
14540         the new return value from choose_ready.
14541         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
14542         (rest_of_handle_global_alloc): New global_alloc_at_func.
14543
14544 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
14545
14546         PR tree-optimization/25737
14547         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
14548         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
14549         * tree-flow.h (struct fieldoff): Add new field alias_set.
14550         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
14551         argument addressable_type.  Set alias_set of fieldoff.
14552         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
14553         (create_overlap_variables_for): Pass alias_set from fieldoff to
14554         create_sft.
14555         * alias.c (get_alias_set): Use alias_set from SFT if set.
14556
14557 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
14558
14559         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
14560         of a variable as an unsigned HOST_WIDE_INT integer.
14561
14562 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
14563
14564         PR rtl-optimization/32405
14565         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
14566
14567 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
14568
14569         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
14570
14571         PR middle-end/31959
14572         * builtins.c: Include diagnostic.h.
14573         (expand_builtin_expect): Make gcc_assert more permissive.
14574         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
14575
14576         PR inline-asm/32109
14577         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
14578         and !allows_mem.
14579
14580         PR middle-end/32285
14581         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
14582         if ACCUMULATE_OUTGOING_ARGS.
14583
14584 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14585
14586         * config/m68hc11/m68hc11.c: Include dataflow header file.
14587         (m68hc11_reorg): Port to dataflow.
14588
14589 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
14590
14591         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
14592         (struct df_problem.free_blocks_on_set_blocks): New field.
14593         (struct dataflow.optional_p): New field.
14594         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
14595         (df_live_set_all_dirty): New function.
14596         * df-scan.c (df_scan_alloc): Initialize optional_p.
14597         (problem_SCAN): Initialize free_blocks_on_set_blocks.
14598         * df-core.c (df_set_blocks): Removed use of
14599         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
14600         df_problem.free_blocks_on_set_blocks to determine which blocks are
14601         recycled.
14602         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
14603         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
14604         uses dataflow.optional_p to determine if problem should be
14605         deleted.
14606         (rest_of_handle_df_initialize): Only start live problem if 
14607         -02 or above.
14608         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
14609         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
14610         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
14611         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
14612         problem_NOTE): Initialize free_blocks_on_set_blocks.
14613         (df_lr_bb_local_compute): Recompute luids if df_live problem is
14614         not active.
14615         (df_live_set_all_dirty, df_note_alloc): New function.
14616         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
14617         df_get_live_*.
14618         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
14619         * postreload.c (reload_combine): Ditto.
14620         * cse.c (cse_extended_basic_block): Ditto.
14621         * regmove.c (mark_flags_life_zones): Ditto.
14622         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
14623         erase_matching_seqs): Ditto.
14624         * bt-load.c (compute_defs_uses_and_gen): Ditto.
14625         * integrate (allocate_initial_values): Ditto.
14626         * combine.c (reg_dead_at_p): Ditto.
14627         * resource.c (mark_target_live_regs): Ditto.
14628         * sched-rgn.c (check_live_1, update_live_1): Ditto.
14629         * config/sh/sh.c (find_r0_life_regions): Ditto.
14630         * global.c (rest_of_handle_global_alloc): Only add back df_live
14631         for -O > 1.
14632         * local-alloc.c (rest_of_handle_local_alloc): Only remove
14633         df_live for -O > 1.
14634         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
14635         df_get_live_*.
14636         (if_convert): Make sure df_live is there at -O == 1.
14637         (pass_if_after_combine): Cleanup flags.
14638         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
14639         is there at -O == 1.
14640         
14641 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
14642
14643         * config/arm/arm.c (arm_get_frame_offsets): Set
14644         offsets->locals_base to avoid negative stack size.
14645         (thumb1_expand_prologue): Assert on negative stack size.
14646
14647 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
14648
14649         PR tree-optimization/32367
14650         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
14651         of the chrec has no evolution in that loop.
14652         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
14653
14654 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
14655
14656         * config/xtensa/xtensa.c: Include "df.h".
14657         (xtensa_builtin_saveregs): Use adjust_address instead of
14658         change_address.
14659         (xtensa_va_start): Invoke make_tree with sizetype for
14660         expand_builtin_saveregs and then convert the result to a pointer.
14661         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
14662         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
14663         Subtract argument size from index value as integers and then use
14664         POINTER_PLUS_EXPR to add the result to the array address.
14665         
14666 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14667
14668         PR target/32335
14669         * config/m32c/m32c.c: Include dataflow header file.
14670         (m32c_emit_prologue): Adjust for prologue insn change.
14671         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
14672         once inside a PARALLEL. Assume frame size passed in operand 0
14673         includes space to save the fb register.
14674         (prologue_enter_24): Likewise.
14675         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
14676
14677 2007-06-19  David Daney  <ddaney@avtrex.com
14678
14679         PR target/32313
14680         * config/mips/mips.md (cprestore): Mark $gp as used.
14681
14682 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14683
14684         PR target/32369
14685         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
14686         (frv_ifcvt_modify_insn): Likewise.
14687
14688 2007-06-19  Richard Guenther  <rguenther@suse.de>
14689
14690         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
14691         only handle positive offsets that fit in a HOST_WIDE_INT.
14692
14693 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
14694
14695         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
14696         result of rsqrt insn for zero input argument to avoid NaN.
14697
14698 2007-06-19  Richard Guenther  <rguenther@suse.de>
14699
14700         PR middle-end/31950
14701         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
14702
14703 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
14704
14705         PR tree-optimization/32353
14706         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
14707
14708 2007-06-19  Nick Clifton  <nickc@redhat.com>
14709
14710         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
14711
14712 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
14713
14714         PR target/32389
14715         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
14716         * config/i386/i386.c (assign_386_stack_local): Assert that
14717         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
14718         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
14719         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
14720         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
14721
14722 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
14723
14724         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
14725
14726 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
14727
14728         PR rtl-optimization/32321
14729         * gcse.c (replace_store_insn): Update the note before
14730         calling emit_insn_after.
14731
14732 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
14733
14734         PR middle-end/32355
14735         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
14736         cse_main.
14737         * df-problems.c (df_note_bb_compute): Fix dumping info.
14738         
14739 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
14740
14741         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
14742         insn with emit_jump_insn.
14743
14744 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
14745
14746         PR tree-optimization/32383
14747         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
14748         * targhooks.h (default_builtin_reciprocal): Update prototype.
14749         * target.h (struct gcc_target): Update builtin_reciprocal.
14750         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
14751         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
14752         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
14753         when fndecl is in BUILT_IN_MD class.
14754         (execute_convert_to_rsqrt): Ditto.
14755
14756         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
14757         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
14758         Convert BUILT_IN_SQRTF code only  when md_fn is false.
14759
14760 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14761
14762         * bt-load.c (move_btr_def): Fix the order of arguments
14763         to validate_replace_rtx.
14764
14765 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
14766
14767         * config/m68k/m68k-devices.def: Add 54450..54455.
14768
14769 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
14770
14771         PR rtl-optimization/32366
14772         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
14773         FLOAT_EXTEND]: Prevent non-scalar modes from entering
14774         significand_size.
14775
14776 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
14777
14778         PR middle-end/32349
14779         * modulo-sched (generate_reg_moves): Added rescan parameter and if
14780         this is true, rescan insn being modified.
14781         (sms_schedule): Added rescan parameter.
14782         (rest_of_handle_sms): Moved freeing of dominance info to before
14783         getting out of cfg_layout.
14784         
14785 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
14786
14787         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
14788         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
14789         appropriate.
14790
14791         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
14792         FL_CF_EMAC from the entry for isac.
14793
14794         * config/m68k/predicates.md (const_call_operand): Adjust comment.
14795         (const_sibcall_operand): New.
14796         (sibcall_operand): Use it.
14797         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
14798         (m68k_isas): ISAC does not imply FPU or EMAC.
14799         (override_options): Add ISA_C logic for symbolic jump & call.
14800
14801 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
14802
14803         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
14804         return mode from the builtin itself.
14805         (sparc_fold_builtin): Fix cast of zero constant.
14806
14807 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
14808
14809         * targhooks.c (default_builtin_reciprocal): New default target hook.
14810         * targhooks.h (default_builtin_reciprocal): Add prototype.
14811         * hooks.c (hook_tree_tree_bool_null): Remove hook.
14812         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
14813         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
14814         default_builtin_reciprocal.
14815
14816 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
14817
14818         PR middle-end/31723
14819         * hooks.c (hook_tree_tree_bool_null): New hook.
14820         * hooks.h (hook_tree_tree_bool_null): Add prototype.
14821         * tree-pass.h (pass_convert_to_rsqrt): Declare.
14822         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
14823         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
14824         and convert it to reciprocal a*rfunc(b).
14825         (execute_convert_to_rsqrt): New function.
14826         (gate_convert_to_rsqrt): New function.
14827         (pass_convert_to_rsqrt): New pass definition.
14828         * target.h (struct gcc_target): Add builtin_reciprocal.
14829         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
14830         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
14831         TARGET_BUILTIN_RECIPROCAL.
14832         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
14833
14834         * config/i386/i386.h (TARGET_RECIP): New define.
14835         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
14836         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14837         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14838         and not optimizing for size.
14839         (*rcpsf2_sse): New insn pattern.
14840         (*rsqrtsf2_sse): Ditto.
14841         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
14842         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14843         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14844         and not optimizing for size.
14845         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
14846         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14847         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14848         and not optimizing for size.
14849         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
14850         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14851         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14852         and not optimizing for size.
14853         (*sse_rsqrtv4sf2): Do not export.
14854         (sqrtv4sf2): Ditto.
14855         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
14856         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
14857         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
14858         and not optimizing for size.
14859         (sqrtv4sf2): Ditto.
14860         * config/i386/i386.opt (mrecip): New option.
14861         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
14862         (ix86_emit_swsqrtsf): Ditto.
14863         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
14864         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
14865         builtin definition.
14866         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
14867         ix86_expand_unop1_builtin.
14868         (ix86_emit_swdivsf): New function.
14869         (ix86_emit_swsqrtsf): Ditto.
14870         (ix86_builtin_reciprocal): New function.
14871         (TARGET_BUILTIN_RECIPROCAL): Use it.
14872         (ix86_vectorize_builtin_conversion): Rename from
14873         ix86_builtin_conversion.
14874         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
14875         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
14876         "i386 and x86_64 Options" section.
14877         (Intel 386 and AMD x86_64 Options): Document -mrecip.
14878
14879 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
14880             Zdenek Dvorak <dvorakz@suse.cz>
14881             Richard Guenther  <rguenther@suse.de>
14882             Kaz Kojima  <kkojima@gcc.gnu.org>
14883
14884         * tree-vrp.c (compare_values_warnv): Convert val2 to
14885         the type of val1.
14886         (extract_range_from_assert): Create
14887         POINTER_PLUS_EXPR for pointer types.
14888         (extract_range_from_binary_expr): Handle
14889         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
14890         for pointer types.
14891         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
14892         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
14893         POINTER_PLUS_EXPR as PLUS_EXPR.
14894         (number_of_iterations_lt_to_ne):
14895         For pointer types, use sizetype when
14896         creating MINUS_EXPR/PLUS_EXPRs.
14897         (assert_loop_rolls_lt): For pointer types, use sizetype when
14898         creating MINUS_EXPR/PLUS_EXPRs.
14899         (number_of_iterations_le): Likewise.
14900         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
14901         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
14902         like PLUS_EXPR and MINUS_EXPR.
14903         * tree-pretty-print.c (dump_generic_node): Handle
14904         POINTER_PLUS_EXPR.
14905         (op_prio): Likewise.
14906         (op_symbol_1): Likewise.
14907         * optabs.c (optab_for_tree_code): Likewise.
14908         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
14909         specially.
14910         * tree-tailcall.c (process_assignment): Mention
14911         POINTER_PLUS_EXPR in a TODO comment.
14912         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
14913         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
14914         not used with a pointer and an integer type.
14915         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
14916         increment using chrec_convert_rhs instead of chrec_convert.
14917         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
14918         PLUS_EXPR except for the right hand side's type will be
14919         sizetype.
14920         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
14921         (fold_used_pointer_cast): Kill.
14922         (pointer_offset_p): Kill.
14923         (fold_used_pointer): Kill.
14924         (pointer_used_p): Kill.
14925         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
14926         call fold_used_pointer.
14927         (instantiate_parameters_1): Convert the increment
14928         using chrec_convert_rhs instead of chrec_convert.
14929         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
14930         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
14931         instead of PLUS_EXPR.
14932         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
14933         PLUS_EXPR for pointers.
14934         (std_gimplify_va_arg_expr): Likewise.
14935         (fold_builtin_memory_op): Likewise.
14936         (fold_builtin_strstr): Likewise.
14937         (fold_builtin_strchr): Likewise.
14938         (fold_builtin_strrchr): Likewise.
14939         (fold_builtin_strpbrk): Likewise.
14940         (expand_builtin_memory_chk): Likewise.
14941         (fold_builtin_memory_chk): Likewise.
14942         (std_expand_builtin_va_start): Use
14943         sizetype for the call to make_tree and then convert
14944         to the pointer type.
14945         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
14946         instead of PLUS_EXPR for adding to a pointer.
14947         (std_gimplify_va_arg_expr): Use fold_build2 for
14948         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
14949         the operands to sizetype first and then cast the BIT_AND_EXPR
14950         back to the pointer type.
14951         * fold-const.c (build_range_check): Handle pointer types
14952         specially.
14953         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
14954         of PLUS_EXPR's. Make sure the offset is converted to
14955         sizetype.
14956         (try_move_mult_to_index): Strip the NOPs from the offset.
14957         Remove code argument and replace all uses with PLUS_EXPR.
14958         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
14959         specially. Don't use a pointer type for MINUS_EXPR.
14960         (fold_unary): Handle for (T1)(X op Y),
14961         only p+ as that is the only as that can be handled for
14962         binary operators now.
14963         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
14964         POINTER_PLUS_EXPR.
14965         <case PLUS_EXPR>: Add folding of PTR+INT into
14966         PTR p+ INT.
14967         Don't call try_move_mult_to_index.
14968         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
14969         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
14970         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
14971         Don't call try_move_mult_to_index.
14972         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
14973         (tree_expr_nonzero_p): Likewise.
14974         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
14975         of PLUS_EXPR for the complex expression folding.
14976         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
14977         first chrec is a pointer type, then the second should
14978         be sizetype and not the first's type.
14979         For POINTER_PLUS_EXPR, use a different right hand side type.
14980         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
14981         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
14982         different right hand side type.
14983         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
14984         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
14985         instead of PLUS_EXPR.
14986         When either operand is zero, convert the other operand.
14987         (chrec_apply): Use chrec_convert_rhs
14988         on the argument x instead of chrec_convert.
14989         (reset_evolution_in_loop): For pointer types, the new_evol
14990         should be sizetype.
14991         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
14992         different right hand side type.
14993         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
14994         (chrec_convert_rhs): New function.
14995         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
14996         different right hand side type.
14997         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
14998         * tree-chrec.h (chrec_convert_rhs): New prototype.
14999         (build_polynomial_chrec): For pointer types, the right hand
15000         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
15001         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
15002         Remove subtraction case as it is always addition now.
15003         Make sure the offset is converted to sizetype.
15004         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
15005         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
15006         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
15007         PLUS_EXPR in pointer type.
15008         Handle POINTER_PLUS_EXPR.
15009         (tree_to_aff_combination): Likewise.
15010         (force_expr_to_var_cost): Likewise.
15011         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
15012         instead of PLUS_EXPR for pointers.
15013         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
15014         instead of PLUS_EXPR of pointer types.
15015         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
15016         as PLUS_EXPR.
15017         (check_va_list_escapes): Likewise.
15018         (check_all_va_list_escapes): Likewise.
15019         * dwarf2out.c (loc_descriptor_from_tree_1):
15020         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
15021         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
15022         (string_constant): Likewise.
15023         * tree-ssa-address.c (tree_mem_ref_addr): When adding
15024         the offset to the base, use POINTER_PLUS_EXPR.
15025         (add_to_parts): Convert the index to sizetype.
15026         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
15027         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
15028         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
15029         Offset only holds something for PLUS_EXPR.
15030         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
15031         a PLUS_EXPR.
15032         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
15033         and not PLUS_EXPR.
15034         (analyze_accesses_for_modify_stmt): Likewise.
15035         Remove comment about the type being integral type as it is
15036         wrong now.
15037         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
15038         PLUS_EXPR.
15039         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
15040         and not PLUS_EXPR.
15041         Correct the type which the artimentic is done in (is now
15042         sizetype).
15043         Reindent one loop.
15044         * tree-data-ref.c (split_constant_offset): Handle
15045         POINTER_PLUS_EXPR
15046         * tree-affine.c (tree_to_aff_combination): Likewise.
15047         * c-typeck.c (build_unary_op): For pointers create the increment
15048         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
15049         for pointers.
15050         * gimplify.c (gimplify_self_mod_expr): Create a
15051         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
15052         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
15053         * tree.def (POINTER_PLUS_EXPR): New tree code.
15054         * tree-predcom.c (ref_at_iteration): If we have a pointer
15055         type do the multiplication in sizetype.
15056         * tree-mudflap.c (mf_xform_derefs_1): Create a
15057         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
15058         * tree-ssa-forwprop.c 
15059         (forward_propagate_addr_into_variable_array_index):
15060         Don't expect there to be a cast for the index as that
15061         does not exist anymore.
15062         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
15063         instead of PLUS_EXPR.
15064         Don't check for the first operand of the POINTER_PLUS_EXPR
15065         was the index as it cannot be.
15066         Call forward_propagate_addr_into_variable_array_index with
15067         the SSA_NAME instead of the statement.
15068         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
15069         (compare_constant): Likewise.
15070         (copy_constant): Likewise.
15071         (compute_reloc_for_constant): Likewise.
15072         (output_addressed_constants): Likewise.
15073         (initializer_constant_valid_p): Likewise.
15074         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
15075         Convert the MIN/MAX of the inner type to the outer
15076         type before comparing them.
15077         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
15078         POINTER_PLUS_EXPR instead of PLUS_EXPR.
15079         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
15080         of PLUS_EXPR for pointers.
15081         * tree-inline.c (estimate_num_insns_1): Handle
15082         POINTER_PLUS_EXPR.
15083         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
15084         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
15085         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
15086         instead of PLUS_EXPR for the pointer increment statement.
15087         (vect_update_ivs_after_vectorizer): For pointer types, create
15088         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
15089         MULT_EXPR in sizetype.
15090         (vect_gen_niters_for_prolog_loop): Add a cast when creating
15091         byte_misalign.
15092         * tree-object-size.c (plus_expr_object_size): Handle
15093         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
15094         code which is trying to figure out which side is a pointer and 
15095         is the index.
15096         (check_for_plus_in_loops_1): Likewise.
15097         (check_for_plus_in_loops): Likewise.
15098         * c-common.c (pointer_int_sum): Create a
15099         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
15100         * tree-ssa-structalias.c (handle_ptr_arith): Handle
15101         only POINTER_PLUS_EXPR.  Removing all the extra
15102         code which is trying to figure out which side is a pointer and 
15103         is the index.
15104         * tree-cfg.c (verify_expr): Add extra checking for pointers and
15105         PLUS_EXPR and MINUS_EXPR.
15106         Also add checking to make sure the operands of POINTER_PLUS_EXPR
15107         are correct.
15108         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
15109         with make_tree, instead of a pointer type.
15110         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
15111         for pointers instead of PLUS_EXPR.
15112         (s390_gimplify_va_arg): Likewise.
15113         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
15114         instead of PLUS_EXPR when doing addition on pointer
15115         types.  Use sizetype for the second operand.
15116         (spu_gimplify_va_arg_expr): Likewise.
15117         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
15118         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
15119         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
15120         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
15121         for the pointer addition and also use size_int/sizetype
15122         for the offset.
15123         (ix86_gimplify_va_arg): Likewise.
15124         Perform BIT_AND_EXPR on sizetype arguments.
15125         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
15126         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
15127         for the pointer additions and also use size_int for the offsets.
15128         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
15129         additions and also use size_int for the offsets.  Perform
15130         BIT_AND_EXPR on sizetype arguments.
15131         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
15132         POINTER_PLUS_EXPR for pointers and create the
15133         BIT_AND_EXPR in sizetype.
15134         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
15135         instead of PLUS_EXPR for pointer addition.
15136         (rs6000_va_start): Likewise.
15137         Also use sizetype for the offset.
15138         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
15139         as PLUS_EXPR/MINUS_EXPR.
15140         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
15141         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
15142         Don't use BIT_AND_EXPR on a pointer type, convert the
15143         expression to sizetype first.
15144         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
15145         for pointers.
15146         (mips_gimplify_va_arg_expr): Likewise.
15147         Don't create BIT_AND_EXPR in a pointer type.
15148
15149 2007-06-15  Eric Christopher  <echristo@apple.com>
15150
15151         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
15152         (x86_64-*-darwin*): Ditto.
15153         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
15154         for above.
15155
15156 2007-06-15  Matthew Wilcox <matthew@wil.cx>
15157
15158         * doc/extend.texi: Document behavior of __attribute__((aligned))
15159         on typedefs.
15160
15161 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
15162
15163         * rtlanal.c (note_stores): Improve documentation.
15164
15165 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
15166
15167         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
15168         LOCAL_LABEL_PREFIX): Delete.
15169         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
15170         (bfin_internal_label): Delete.
15171
15172 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
15173
15174         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
15175         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
15176         otherwise define to LIBGCC2_TF_CEXT.
15177         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
15178         (LIBGCC_TF_CEXT): Ditto.
15179         (TF_SIZE): Ditto.
15180
15181 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
15182
15183         PR rtl-optimization/32339
15184         * df-scan.c (df_uses_record): Don't modify flags but just add to
15185         it for df_ref_record.
15186
15187 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15188
15189         * tree-mudflap.c: Fix whitespace issues.
15190
15191 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
15192
15193         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
15194
15195 2007-06-14  Eric Christopher  <echristo@apple.com>
15196
15197         * config/i386/sse.md (movdi_to_sse): Rewrite body.
15198         (movv4sf): Use gcc_unreachable instead of abort.
15199
15200 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
15201
15202         PR target/32268
15203         * config/i386/sfp-machine.h (CMPtype): New define.
15204         (mach stubs): Use CMPtype instead of int as a return type.
15205
15206 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
15207
15208         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
15209         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
15210         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
15211         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
15212         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
15213         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
15214         config/soft-fp/soft-fp.h: Update from glibc CVS.
15215
15216 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
15217
15218         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
15219
15220 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15221
15222         PR target/32341
15223         * config/v850/v850.c: Include dataflow header file.
15224         (substitute_ep_register): Fix typo.
15225
15226 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
15227
15228         * configure.ac: Fix earlier checkin.
15229         * configure: Regenerated.
15230
15231 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
15232
15233         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
15234         * aclocal.m4: Regenerate.
15235         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
15236         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
15237         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
15238         * configure: Regenerate.
15239         * Makefile.in (LOOSE_WARN): Subst loose_warn.
15240
15241         * Makefile.in (quickstrap): Build libgcc too.
15242
15243 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
15244
15245         * configure.ac: Add --enable-checking=df.  Explicitly mention that
15246         the variables are initialized as for "release".
15247         * df-core.c: Use it.
15248         * configure: Regenerate.
15249         * config.in: Regenerate.
15250
15251 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
15252
15253         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
15254         validate_replace_rtx instead of replace_rtx.
15255         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
15256
15257 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
15258
15259         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
15260         (DWARF2_UNWIND_INFO): Override default if configured with
15261         SJLJ EH disabled.
15262         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
15263         (ENDFILE_SPEC): Add crtend.o.
15264         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
15265         (ENDFILE_SPEC): Add crtend.o.
15266         (TARGET_USE_JCR_SECTION): Define.
15267         (MD_UNWIND_SUPPORT): Define for 32-bit target.
15268
15269         * config/i386/cygming-crtbegin.c: New file.
15270         * config/i386/cygming-crtend.c: New file.
15271
15272 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
15273
15274         * config/i386/w32-unwind.h: New file.
15275
15276 2007-06-13  Eric Christopher  <echristo@apple.com>
15277
15278         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
15279         the user set a value below STACK_BOUNDARY.
15280
15281 2007-06-13  Thiemo Seufer  <ths@networkno.de>
15282
15283         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
15284         imply -lpthread for -pthread.
15285
15286 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
15287
15288         * basic-block.h: Remove the prototype for
15289         free_basic_block_vars.
15290         * cfglayout.h: Remove the prototype for
15291         insn_locators_initialize.
15292         * tree.h: Remove the prototype for emit_line_note.
15293
15294         * tree-ssa-pre.c (mergephitemp): Remove.
15295         (init_pre): Don't use mergephitemp.
15296
15297 2007-06-13  Eric Christopher  <echristo@apple.com>
15298
15299         * config/i386/i386.c (override_options): If we've specified
15300         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
15301
15302 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
15303
15304         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
15305         is defined.
15306
15307 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
15308
15309         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
15310         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
15311         (eh_store_handler): New pattern.
15312         (eh_return): Emit it instead of a plain move.
15313
15314 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
15315
15316         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
15317         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
15318         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
15319         def_builtin_const.
15320
15321 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
15322
15323         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
15324         (find_next_insn_start, find_load): New functions.
15325         (bfin_reorg): Use them to deal with the fact that parallel insns are
15326         no longer represented as a SEQUENCE.
15327
15328 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
15329
15330         * config/sparc/sparc.c (sparc_override_options): Initialize
15331         fpu mask correctly.
15332
15333 2007-06-13  Dave Korn  <dave.korn@artimi.com>
15334
15335         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
15336         df_get_live_out.
15337
15338 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
15339
15340         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
15341         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
15342         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
15343         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
15344         tree-vect-transform.c: Fix comment typos.  Follow spelling
15345         conventions.
15346
15347 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
15348
15349        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
15350        to the exit block use set.
15351        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
15352        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
15353        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
15354
15355 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
15356
15357         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
15358         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
15359         to indicate an error.
15360         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
15361         New functions.
15362         (dbg_cnt_process_opt): Print an error on a bad argument.
15363         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
15364         * common.opt (-fdbg-cnt-list): New.
15365         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
15366
15367 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15368
15369         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
15370         flag on ref-all pointers.
15371
15372 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15373
15374         PR middle-end/31579
15375         * expr.c (expand_expr_addr_expr_1): Call expand_expr
15376         for the offset with the modifier as EXPAND_INITIALIZER
15377         if the modifier is EXPAND_INITIALIZER.
15378         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
15379         a register if we had an overflow.
15380
15381 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15382
15383         * real.c (real_isfinite): New.
15384         (real_sqrt): Use it.
15385         * real.h (real_isfinite): New.
15386         * builtins.c: Use it.
15387
15388 2007-06-12  Ian Lance Taylor  <iant@google.com>
15389             Daniel Berlin  <dberlin@dberlin.org>
15390
15391         PR libstdc++/29286
15392         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
15393         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
15394         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
15395         (DECL_NO_TBAA_P): Define.
15396         (struct tree_decl_common): Add no_tbaa_flag field.
15397         * tree-ssa-structalias.c (struct variable_info): Add
15398         no_tbaa_pruning field.
15399         (new_var_info): Initialize no_tbaa_pruning field.
15400         (unify_nodes): Copy no_tbaa_pruning field.
15401         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
15402         (dump_solution_for_var): Print no_tbaa_pruning flag.
15403         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
15404         callers.
15405         (compute_tbaa_pruning): New static function.
15406         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
15407         Call compute_tbaa_pruning.
15408         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
15409         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
15410         * gimple-low.c (lower_stmt): Likewise.
15411         * tree-gimple.c (is_gimple_stmt): Likewise.
15412         * tree-ssa-operands.c (get_expr_operands): Likewise.
15413         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
15414         * tree-inline.c (estimate_num_insns_1): Likewise.
15415         (copy_result_decl_to_var): Likewise.
15416         * expr.c (expand_expr_real_1): Likewise.
15417         * tree-pretty-print.c (dump_generic_node): Likewise.
15418         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
15419         * omp-low.c (omp_copy_decl_2): Likewise.
15420         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
15421         * doc/c-tree.texi (Expression trees): Document
15422         CHANGE_DYNAMIC_TYPE_EXPR.
15423
15424 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15425
15426         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
15427         with !HONOR_NANS and !HONOR_INFINITIES.
15428         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
15429
15430 2007-06-12  Tristan Gingold  <gingold@adacore.com>
15431
15432         * gcov.c: Comments updated.
15433         (source_info): Add file_time field.
15434         (source_index): New variable.
15435         (mutiple_files): New variable.
15436         (generate_results): New function extracted from process_file.
15437         (process_file): Save and restore chain of functions, generate
15438         results and free structures only if not merging results.
15439         (release_structures): File names are now freed in create_file_names
15440         (create_file_names): Free previous file names.
15441         (find_source): File date is now read here and modifications in
15442         source files is checked here.
15443         (read_graph_file): Only reverse order of functions for the current
15444         object file.
15445         (make_gcov_file_name): Do not generate long names if input_name is
15446         NULL.
15447         (output_lines): If merging results do not display graph, data and
15448         runs informations.
15449         Checking source file modification is done in find_source.
15450
15451         * doc/gcov.texi: Append an s to sourcefile.
15452
15453 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
15454
15455         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
15456         (forced_nop): New pattern.
15457         * config/bfin/bfin.c: Include "df.h".
15458         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
15459         (bfin_discover_loop): Use df_get_live_in instead of
15460         global_live_at_start.
15461         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
15462         df_analyze when done.
15463         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
15464         the insns.  Use QImode for the final insn in a bundle.  Call
15465         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
15466         gen_nop.
15467         (reorder_var_tracking_notes): New function.
15468         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
15469         update_life_info.  Call df_analyze after scheduling and bundle
15470         generation.  Call reorder_var_tracking_notes if generating these
15471         notes.  Call df_finish_pass at the end.
15472
15473 2007-06-12  Dirk Mueller  <dmueller@suse.de>
15474
15475         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
15476         a comparison, not an assignment.
15477
15478 2007-06-12  Olivier Hainque  <hainque@adacore.com>
15479
15480         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
15481         Request walking the subtrees only, leaving the current is_lhs/val_only
15482         untouched.
15483         (convert_non_local_reference): Likewise.
15484
15485 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
15486
15487         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
15488
15489 2007-06-12  Richard Guenther  <rguenther@suse.de>
15490
15491         PR tree-optimization/15353
15492         PR tree-optimization/31657
15493         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
15494         * timevar.def: Add TV_TREE_IFCOMBINE.
15495         * tree-pass.h (pass_tree_ifcombine): Declare.
15496         * tree-ssa-ifcombine.c: New file.
15497         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
15498         * tree-flow.h (blocks_in_phiopt_order): Declare.
15499         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
15500         (tree-ssa-ifcombine.o): New dependencies.
15501
15502 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
15503
15504         PR rtl-optimization/32293
15505         * combine.c (simplify_if_then_else): Truncate return from
15506         nonzero_bits() to correct mode.
15507
15508 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
15509
15510         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
15511         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
15512
15513 2007-06-11  Diego Novillo  <dnovillo@google.com>
15514
15515         * Makefile.in (reload1.o-warn): Remove.
15516
15517 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
15518
15519         * combine.c (subst): Use reg_overlap_mentioned_p
15520         instead of comparing register numbers directly.
15521
15522 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
15523
15524         * reload1.c (mark_home_live_1): Use the mode parameter.
15525
15526 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
15527
15528         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
15529         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
15530         word "deferred".
15531         * df-core.c: Ditto.
15532
15533 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
15534
15535         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
15536
15537 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
15538
15539         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
15540         from integer registers.
15541         (FP mode splitters): Handle TFmode.
15542
15543 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
15544
15545         * tree-ssa-structalias.c (find_what_p_points_to): Return false
15546         for ref-all pointers that point-to anything.
15547
15548 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
15549
15550         * config/arm/arm.c (arm_output_dwarf_dtprel,
15551         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
15552
15553 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15554
15555         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
15556         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
15557         to memory moves.
15558
15559 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
15560
15561         * tree.c (signed_or_unsigned_type_for): New.
15562         (unsigned_type_for): Use signed_or_unsigned_type_for.
15563         (signed_type_for): Use signed_or_unsigned_type_for.
15564         * tree.h (signed_or_unsigned_type_for): New.
15565         (get_signed_or_unsigned_type): Remove.
15566         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
15567         lang_hooks.types.signed_type
15568         (size_diffop): Likewise.
15569         (all_ones_mask_p): Likewise.
15570         (build_range_check): Likewise.
15571         (fold_cond_expr_with_comparison): Likewise.
15572         (fold_cond_expr_with_comparison): Likewise.
15573         (unextend): Likewise.
15574         (extract_muldiv_1): Likewise.
15575         (fold_single_bit_test_into_sign_test): Likewise.
15576         (fold_binary): Likewise.
15577         (fold_ternary): Likewise.
15578         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
15579         instead of get_signed_or_unsigned_type.
15580         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
15581         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
15582         * expr.c (signed_or_unsigned_type_for): Use
15583         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
15584         * langhooks.c (get_signed_or_unsigned_type): Remove.
15585         (lhd_signed_or_unsigned_type): Remove.
15586         * langhooks.h (lang_hooks_for_types): Remove signed_type and
15587         signed_or_unsigned_type.
15588         (lhd_signed_or_unsigned_type): Remove.
15589         * expmed.c (make_tree): Use signed_type_for instead of
15590         lang_hooks.types.signed_type.
15591         * c-common.c (same_scalar_type_ignoring_signedness): Use
15592         c_common_signed_type instead of lang_hooks.types.signed_type.
15593         (c_common_unsigned_type): New.
15594         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
15595         (shorten_compare): Use c_common_unsigned_type instead of
15596         c_common_signed_or_unsigned_type.
15597         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
15598         unsigned_type_for.
15599         * convert.c (convert_to_integer): Use signed_type_for instead of
15600         lang_hooks.types.signed_type.
15601         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
15602         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
15603         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
15604         * c-format.c (check_format_types): Use c_common_unsigned_type
15605         instead of unsigned_type_for.
15606         * c-decl.c (groakdeclarator): Likewise.
15607         * c-typeck.c (convert_for_assignment): Likewise.
15608         * c-common.h (c_common_unsigned_type): New.
15609
15610 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
15611
15612         PR target/32280
15613         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
15614         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
15615
15616 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
15617
15618         PR middle-end/32279
15619         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
15620         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
15621
15622 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
15623             Sebastian Pop  <sebpop@gmail.com>
15624
15625         * lambda-code.c (remove_iv): New.
15626         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
15627
15628 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
15629
15630         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
15631         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
15632         * tree-ssa-loop-prefetch.c: Include optabs.h.
15633         (FENCE_FOLLOWING_MOVNT): New macro.
15634         (struct mem_ref): Add independent_p and storent_p fields.
15635         (record_ref): Initalize the new fields.
15636         (gather_memory_references_ref): Return true if the reference
15637         could be analysed.
15638         (gather_memory_references): Check whether all memory accesses
15639         in loop were recorded.
15640         (should_issue_prefetch_p): Return false for nontemporal stores.
15641         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
15642         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
15643         (determine_loop_nest_reuse): Detect independent memory references.
15644         (loop_prefetch_arrays): Call mark_nontemporal_stores.
15645         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
15646         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
15647         * config/i386/i386.h (x86_mfence): Declare.
15648         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
15649         * config/i386/i386.c (x86_mfence): New variable.
15650         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
15651
15652         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
15653         * optabs.c (init_optabs): Initialize storent_optab.
15654         * optabs.h (enum optab_index): Add OTI_storent.
15655         (storent_optab): Declare.
15656         * genopinit.c (optabs): Add initialization for storent_optab.
15657         * tree.h (MOVE_NONTEMPORAL): New macro.
15658         * expr.c (expand_assignment, store_expr, store_constructor_field,
15659         store_constructor, store_field, expand_expr_real_1): Propagate
15660         nontemporality of the expanded store.
15661         (emit_storent_insn): New function.
15662         * expr.h (expand_assignment, store_expr): Declaration changed.
15663         * function.c (assign_parm_setup_reg): Pass false as nontemporality
15664         to expand_assignment.
15665         * stmt.c (expand_asm_expr): Ditto.
15666         * calls.c (initialize_argument_information): Pass false as
15667         nontemporality to store_expr.
15668         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
15669         storentsi): New.
15670
15671 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
15672
15673         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
15674         parameter, use it.
15675         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
15676
15677 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
15678
15679         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
15680         and allow DECL_P here.
15681
15682 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
15683
15684         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
15685         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
15686         track of the size of the expression.
15687         * cfghooks.c (merge_blocks): Remove block from loops structure only
15688         after call of the merge_blocks hook.
15689
15690 2007-06-09  Tom Tromey  <tromey@redhat.com>
15691
15692         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
15693         (deprecated_state): Removed.
15694         (start_decl): Update.
15695         (enum deprecated_states): Moved earlier.
15696         (groktypename): Update.
15697         (push_parm_decl): Likewise.
15698         (grokfield): Likewise.
15699         (start_function): Likewise.
15700
15701 2007-06-09  Ian Lance Taylor  <iant@google.com>
15702
15703         PR tree-optimization/32169
15704         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
15705         CONVERT_EXPR, check whether min and max both converted to an
15706         overflow infinity representation.
15707
15708 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
15709
15710         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
15711         not inserted on the edge.
15712
15713 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
15714
15715         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
15716         instructions if they are supported.
15717         (__divsi3, __umodsi3, __modsi3): Likewise.
15718         (__ashldi3, __ashrdi3, __lshrdi3): New.
15719         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
15720
15721 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
15722             Tony Linthicum <tony.linthicum@amd.com>
15723
15724         * doc/invoke.texi: Add fvect-cost-model flag.
15725         * common.opt (fvect-cost-model): New flag.
15726         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
15727         cost fields in stmt_vec_info struct for STMT.
15728         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
15729         fields in stmt_vec_info struct and access functions for the same.
15730         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
15731         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
15732         load, store and vector to scalar operation.
15733         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
15734         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
15735         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
15736         (TARG_VEC_STORE_COST): Define cost of vector store.
15737         (vect_estimate_min_profitable_iters): Define new function.
15738         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
15739         check to evaluate if loop iterations are less than minimum profitable
15740         iterations determined by cost model or minimum vect loop bound defined
15741         by user, whichever is more conservative.
15742         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
15743         run-time check to evaluate if loop iterations are less than minimum
15744         profitable iterations determined by cost model or minimum vect loop
15745         bound defined by user, whichever is more conservative.
15746         (vect_estimate_min_profitable_iterations): New function to estimate
15747         mimimimum iterartions required for vector version of loop to be
15748         profitable over scalar version.
15749         (vect_model_reduction_cost): New function.
15750         (vect_model_induction_cost): New function.
15751         (vect_model_simple_cost): New function.
15752         (vect_cost_strided_group_size): New function.
15753         (vect_model_store_cost): New function.
15754         (vect_model_load_cost): New function.
15755         (vectorizable_reduction): Call vect_model_reduction_cost during
15756         analysis phase.
15757         (vectorizable_induction): Call vect_model_induction_cost during
15758         analysis phase.
15759         (vectorizable_load): Call vect_model_load_cost during analysis phase.
15760         (vectorizable_store): Call vect_model_store_cost during analysis phase.
15761         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
15762         vectorizable_promotion, vectorizable_demotion): Call
15763         vect_model_simple_cost during analysis phase.
15764
15765 2007-06-08  Simon Baldwin  <simonb@google.com>
15766
15767         * reg-stack.c (get_true_reg): Readability change.  Moved default case
15768         label into direct switch statement scope.
15769
15770 2007-06-08  Simon Baldwin  <simonb@google.com>
15771
15772         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
15773         in gcc_assert() with '==' comparison.
15774
15775 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
15776
15777         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
15778         TARGET_ABM handling of x86_popcnt variable.
15779
15780 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
15781
15782         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
15783         __builtin_copysignq and __builtin_infq built-in functions.
15784
15785 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
15786
15787         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
15788         SSE4.2 section.  Correct built-in function names in SSE4A section.
15789
15790 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
15791
15792         PR tree-optimization/32243
15793         * tree-vect-transform.c (vectorizable_type_promotion): Move check
15794         for ncopies after ratio check between nunits_out and nunits_in.
15795         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
15796
15797 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
15798
15799         PR tree-optimization/32224
15800         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
15801         vectorization upon a non GIMPLE_MODIFY_STMT.
15802
15803 2007-06-08  Christian Bruel  <christian.bruel@st.com>
15804
15805         PR target/29953
15806         * config/sh/sh.md (doloop_end): New pattern and splitter.
15807         * loop-iv.c (simple_rhs_p): Check for hardware registers.
15808
15809 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
15810
15811         PR middle-end/32209
15812         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
15813         functions.
15814         (verify_dominators): Do not change dominance tree.
15815
15816 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
15817
15818         * config/sh/constraints.md: New file.
15819         * config/sh/sh.c: Include tm-constrs.h.
15820         (reg_class_from_letter): Remove.
15821         (prepare_cbranch_operands): Use satisfies_constraint_*
15822         function instead of macro.
15823         (andcosts, broken_move, sh_secondary_reload): Likewise.
15824         * config/sh/predicates.md (trapping_target_operand): Likewise.
15825         (and_operand, arith_operand, arith_reg_or_0_operand,
15826         cmp_operand, logical_operand, target_operand,
15827         ua_address_operand, ua_offset, xor_operand): Likewise.
15828         * config/sh/sh.md: Include constraints.md.
15829         (*movsicc_t_false): Use satisfies_constraint_* function
15830         instead of macro.
15831         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
15832         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
15833         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
15834         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
15835         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
15836         (REG_CLASS_FROM_CONSTRAINT): Remove.
15837         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
15838         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
15839         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
15840         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
15841         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
15842         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
15843         function instead of macro.
15844         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
15845         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
15846         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
15847         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
15848         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
15849         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
15850         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
15851         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
15852         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
15853         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
15854         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
15855         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
15856         EXTRA_CONSTRAINT_STR): Likewise.
15857         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
15858
15859 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
15860
15861         * config/i386/darwin.h (STACK_BOUNDARY): Define.
15862
15863 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
15864
15865         PR c++/30759
15866         * c-common.h (flag_cpp0x): Replaced by...
15867         (cxx_dialect): ... this new variable specifying the C++ dialect that
15868         is used.
15869         * c-common.c (flag_cpp0x): Removed.
15870         (cxx_dialect): Defined.
15871         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
15872         cxx_dialect.
15873         * c-opts.c (c_common_post_options): Likewise.
15874         (set_std_cxx98): Set cxx_dialect to cxx98.
15875         (set_std_cxx0x): Set cxx_dialect to cxx0x.
15876
15877 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
15878             Hui-May Chang <hm.chang@apple.com>
15879
15880         * doc/invoke.texi (Darwin Options): Update documentation for
15881         -mmacosx-version-min.
15882         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
15883         * config/darwin-driver.c: New file.
15884         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
15885         * config/t-darwin (darwin-driver.o): New rule.
15886
15887         * config/darwin-c.c (version_as_macro): Ignore low digit.
15888
15889 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
15890
15891         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
15892         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
15893         (CSGNMODE): New mode macro.
15894         (CSGNVMODE): New mode attribute.
15895         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
15896         expander using CSGNMODE mode macro.  Handle TFmode.
15897         (copysign<mode>3_const): Rename from copysignsf3_const and
15898         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
15899         Handle TFmode.
15900         (copysign<mode>3_var): Rename from copysignsf3_var and
15901         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
15902         Handle TFmode.
15903         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
15904         mode macro.  Handle TFmode.
15905         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
15906         (iortf3, *iortf3): Ditto.
15907         (xortf3, *xortf3): Ditto.
15908         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
15909         TFmode and TImode masks.
15910         (ix86_expand_copysign): Expand TFmode copysign insn.
15911         (IX86_BUILTIN_INFQ): New.
15912         (IX86_BUILTIN_FABSQ): Ditto.
15913         (IX86_BUILTIN_COPYSIGNQ): Ditto.
15914         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
15915         [__builtin_fabsq]: Ditto.
15916         [__builtin_copysignq]: Ditto.
15917         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
15918         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
15919         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
15920         ix86_expand_binop_builtin().
15921
15922 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
15923
15924         * config/xtensa/lib1funcs.asm: Clean up whitespace.
15925
15926 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
15927
15928         PR target/31850
15929         * rtl.h (push_to_sequence2): New.
15930         * emit-rtl.c (push_to_sequence2): New.
15931         * function.c (assign_parm_data_all): Add new fields.
15932         (assign_parm_setup_block): Call push_to_sequence2 instead of
15933         push_to_sequence.
15934         (assign_parm_setup_reg): Ditto.
15935         (assign_parm_setup_stack): Ditto.
15936         (assign_parms_unsplit_complex): Ditto.
15937         (assign_parms): Change field name.
15938
15939 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
15940
15941         PR tree-optimization/32220
15942         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
15943         phi node is reached before defining statement.
15944
15945 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15946
15947         PR tree-opt/32231
15948         * tree-vect-transform.c (vectorizable_call): Call update_stmt
15949         after changing the right hand side of the assignment.
15950
15951 2007-06-06  Eric Christopher  <echristo@apple.com>
15952
15953         * config.gcc (i?86-*-darwin*): Remove arch parameter.
15954         (x86_64-*-darwin*): Ditto.
15955         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
15956         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
15957
15958 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
15959
15960         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
15961         coding conventions.
15962         (add_key): Likewise.
15963         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
15964         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
15965         variable names.
15966         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
15967         macros.
15968         (add_cost_one_coalesce): Likewise.
15969         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
15970         variable names. Rename orig to orig_name for consistency.
15971         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
15972         coding conventions.
15973         (cprop_into_successor_phis): Avoid using C++ keywords as variable
15974         names.
15975         (record_equivalences_from_stmt): Likewise.
15976         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
15977         the coding conventions.
15978         (memory_ssa_name_same): Likewise.
15979         (dse_optimize_stmt): Likewise.
15980         (dse_record_phis): Likewise.
15981         (dse_finalize_block): Likewise.
15982         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
15983         keywords as variable names.
15984         (may_move_till): Cast according to the coding conventions.
15985         (force_move_till_expr): Avoid using C++ keywords as variable names.
15986         (force_move_till): Cast according to the coding conventions.
15987         (memref_hash): Likewise.
15988         (memref_eq): Likewise.
15989         (gather_mem_refs_stmt): Likewise.
15990         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
15991         using C++ keywords as variable names.
15992         (idx_find_step): Cast according to the coding conventions.
15993         (idx_record_use): Likewise.
15994         (find_depends): Likewise.
15995         (prepare_decl_rtl): Likewise.
15996         (mbc_entry_hash): Likewise.
15997         (mbc_entry_eq): Likewise.
15998         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
15999         (simplify_replace_tree): Avoid using C++ keywords as variable names.
16000         (idx_infer_loop_bounds): Cast according to the coding conventions.
16001         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
16002         * tree-ssa-math-opts.c (occ_new ): Likwise.
16003         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
16004         macros.
16005         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
16006         variable names.
16007         (add_use_op): Likewise.
16008         (add_vop): Likewise.
16009         (add_vuse_op): Likewise.
16010         (add_vdef_op): Likewise.
16011         (get_expr_operands): Likewise.
16012         (push_stmt_changes): Use type safe memory macros.
16013         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
16014         keywords as variable names.
16015         (conditional_replacement): Likewise.
16016         (minmax_replacement): Likewise.
16017         (abs_replacement): Likewise.
16018         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
16019         coding conventions.
16020         (insert_fake_stores): Avoid using C++ keywords as variable names.
16021         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
16022         conventions.
16023         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
16024         (heapvar_insert): Use type safe memory macros.
16025         (new_var_info): Cast according to the coding conventions.
16026         (new_constraint): Likewise.
16027         (remove_preds_and_fake_succs): Use type safe memory macros.
16028         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
16029         conventions.
16030         (thread_single_edge): Likewise.
16031         (thread_through_loop_header): Likewise.
16032
16033 2007-06-06  Eric Christopher  <echristo@apple.com>
16034
16035         * config/i386/i386.c (override_options): Move handling
16036         of TARGET_SUBTARGET* earlier.
16037
16038 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
16039
16040         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
16041         use %n on printf.
16042
16043 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
16044
16045         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
16046         emited outside of basic block.
16047         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
16048         the created blocks.
16049         * rtl.h (delete_insn_chain): Declaration changed.
16050         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
16051         non-removed insns.
16052         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
16053         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
16054         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
16055         to delete_insn_chain.
16056         (rtl_verify_flow_info_1): Verify that the insns in header and footer
16057         do not have bb field set.
16058         (rtl_verify_flow_info): Verify that insns between basic blocks do not
16059         have bb field set.
16060         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
16061         * cfgcleanup.c (try_optimize_cfg): Ditto.
16062
16063 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
16064
16065         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
16066         (lambda_body_vector_new): Use type safe memory macros.
16067         (lambda_linear_expression_new): Likewise.
16068         (lambda_loopnest_new): Likewise.
16069         (lambda_lattice_new): Likewise.
16070         (replace_uses_equiv_to_x_with_y): Cast according to the coding
16071         conventions. Use type safe memory macros.
16072         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
16073         (lambda_body_vector_s): Likewise.
16074         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
16075         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
16076
16077 2007-06-06  Richard Guenther  <rguenther@suse.de>
16078
16079         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
16080         if we need to schedule cfg_cleanup.
16081         (tree_ssa_forward_propagate_single_use_vars): Do so.
16082
16083 2007-06-06  Ian Lance Taylor  <iant@google.com>
16084
16085         * fold-const.c (merge_ranges): If range_successor or
16086         range_predecessor fail, just return 0.
16087
16088 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
16089
16090         PR tree-optimization/32216
16091         * tree-vectorizer.c (supportable_widening_operation): Determine
16092         signedness of FIX_TRUNC_EXPR from output operand.
16093         (supportable_narrowing_operation): Ditto.
16094         * tree-vect-generic.c (expand_vector_operations_1): Determine
16095         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
16096         from input operand.
16097
16098 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
16099
16100         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
16101         (struct pta): ...from here. Change flags to unsigned to avoid
16102         excessive casting (as it is used as a bit mask).
16103         (override_options): Add casts according to the coding convenventions.
16104         (x86_64_elf_unique_section): Likewise.
16105         (examine_argument): Avoid using C++ keywords as variable names.
16106         (construct_container): Likewise.
16107         (legitimize_pic_address): Likewise.
16108         (get_dllimport_decl): Cast according to the coding conventions. Use
16109         type safe memory macros.
16110         (legitimize_address): Cast according to the coding conventions.
16111         (emit_i387_cw_initialization): Corrected the type of slot to enum
16112         ix86_stack_slot.
16113         (ix86_init_machine_status): Use type safe memory macros.
16114         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
16115         (bdesc_pcmpistr): Likewise.
16116         (bdesc_crc32): Likewise.
16117         (bdesc_sse_3arg): Likewise.
16118         (bdesc_2arg): Likewise.
16119         (bdesc_1arg): Likewise.
16120         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
16121         (ix86_expand_sse_pcmpistr): Likewise.
16122         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
16123         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
16124         int to match the langhook definition.
16125         (ix86_builtin_conversion): Change the type of code to unsigned init to
16126         match the langhook definition.
16127         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
16128         names.
16129         (ix86_preferred_output_reload_class): Likewise.
16130         (ix86_cannot_change_mode_class): Likewise.
16131         (ix86_memory_move_cost): Likewise.
16132         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
16133         avoid excessive casting later on.
16134         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
16135
16136 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
16137
16138         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
16139         as flags setting insn.
16140         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
16141
16142 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
16143
16144         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
16145         (UNSPEC_ROUND): New.
16146         ("sse4_1_round<mode>2"): New insn pattern.
16147         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
16148         SSE4.1 targets.
16149         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
16150         expander using SSEMODEF mode macro.  Expand using
16151         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
16152         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
16153         expander using SSEMODEF mode macro.  Expand using
16154         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
16155         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
16156         expander using SSEMODEF mode macro.  Expand using
16157         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
16158         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
16159         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
16160         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
16161         UNSPEC_ROUNDS.
16162
16163 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
16164             Sebastian Pop  <sebpop@gmail.com>
16165
16166         * lambda.h (build_linear_expr): New.
16167         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
16168         Use build_linear_expr, call fold and force_gimple_operand.
16169         (lambda_loopnest_to_gcc_loopnest): Check that there is
16170         something to insert.
16171         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
16172
16173 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
16174
16175         PR preprocessor/23479
16176         * doc/extend.texi: Document the 0b-prefixed binary integer
16177         constant extension.
16178
16179 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
16180
16181         PR tree-optimization/32215
16182         * tree-vectorizer.c (supportable_widening_operation): Return false
16183         for unsupported FIX_TRUNC_EXPR tree code.
16184         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
16185
16186 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
16187
16188         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
16189         register on SPE targets.  Change documentation to reflect
16190         reality.
16191         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
16192         Change FIXED_SCRATCH to 14 and document why we're keeping r14
16193         out of the register allocation pool.
16194         (rs6000_reg_live_or_pic_offset_p): New function.
16195         (rs6000_emit_prologue): Move the actual saving of LR up to free
16196         r0 for holding r11.  Split saving of SPE 64-bit registers into
16197         its own case.  Ensure that offsets will always be in-range for
16198         'evstdd' by using r11 as a scratch register to point at the start
16199         of the SPE save area.  Save r11 if necessary, as it is the static
16200         chain register.
16201         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
16202         into its own case.  Ensure that offsets will always be in-range
16203         for 'evldd' by using r11 as a scratch register to point at the
16204         start of the SPE save area.  Also adjust r11 when restoring
16205         the stack pointer to compensate for pre-loading r11.
16206
16207 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
16208
16209         * cfg.c (init_flow): Use type safe memory macros.
16210         (alloc_block): Likewise.
16211         (unchecked_make_edge): Likewise.
16212         (dump_flow_info): Avoid using C++ keywords as variable names.
16213         (copy_original_table_clear): Cast according to the coding conventions.
16214         (copy_original_table_set): Likewise.
16215         * cfgexpand (label_rtx_for_bb): Likewise.
16216         (expand_gimple_basic_block): Likewise.
16217         * cfghooks.c (dump_bb): Likewise.
16218         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
16219         variable names.
16220         (lv_add_condition_to_bb): Likewise.
16221         * cfglayout (relink_block_chain): Cast according to the coding
16222         conventions.
16223         (fixup_reorder_chain): Likewise.
16224         (fixup_fallthru_exit_predecessor): Likewise.
16225         * cfgloop.c (glb_enum_p): Likewise.
16226         (get_exit_description): Likewise.
16227         (dump_recorded_exit): Likewise.
16228         * cfgloop.h (enum loop_estimation): Move out of struct scope...
16229         (struct loop): ... from here.
16230         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
16231         conventions.
16232         * cfgrtl.c (rtl_create_basic_block): Likewise.
16233         (rtl_split_block): Likewise.
16234         (rtl_dump_bb): Likewise.
16235         (cfg_layout_split_block): Likewise.
16236         (init_rtl_bb_info): Use typesafe memory macros.
16237
16238         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
16239         * graphds.h: Updated all usages of edge to graph_edge.
16240         * graphds.c: Likewise.
16241         * cfgloopanal.c: Likewise.
16242
16243 2007-06-05  Ian Lance Taylor  <iant@google.com>
16244
16245         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
16246         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
16247         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
16248         expression.
16249         (test_for_singularity): Likewise.
16250
16251 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
16252
16253         * config/i386/constraints.md ("Y2"): Replaced by ...
16254         ("Yt"): This.
16255         * config/i386/i386.md: Likewise.
16256         * config/i386/mmx.md: Likewise.
16257         * config/i386/sse.md: Likewise.
16258
16259 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
16260
16261         * config/i386/constraints.md ("z"): Replaced by ...
16262         ("Y0"): This.
16263         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
16264         (sse4_1_blendvps): Likewise.
16265         (sse4_1_pblendvb): Likewise.
16266         (sse4_2_pcmpestr): Likewise.
16267         (sse4_2_pcmpestrm): Likewise.
16268         (sse4_2_pcmpestr_cconly): Likewise.
16269         (sse4_2_pcmpistr): Likewise.
16270         (sse4_2_pcmpistrm): Likewise.
16271         (sse4_2_pcmpistr_cconly): Likewise.
16272
16273 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
16274
16275         * matrix-reorg.c (transform_access_sites): Fix computation.
16276         (transform_allocation_sites): Same.
16277
16278 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
16279
16280         * config/i386/i386.c (override_options): Use
16281         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
16282
16283 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
16284
16285         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
16286         (nonimm_not_xmm0_operand): Ditto.
16287         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
16288         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
16289         as operand[2] predicate.  Require "z" class XMM register for
16290         operand[3].  Adjust asm template.
16291         ("sse4_1_blendvpd"): Ditto.
16292         ("sse4_1_pblendvb"): Ditto.
16293         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
16294         force op2 into xmm0 register for variable blend instructions.
16295
16296 2007-06-04  Tom Tromey  <tromey@redhat.com>
16297
16298         * c-tree.h (start_enum): Update.
16299         (build_enumerator): Likewise.
16300         * c-decl.c (enum_next_value): Removed.
16301         (enum_overflow): Likewise.
16302         (start_enum): Add c_enum_contents argument.  Don't use globals.
16303         (build_enumerator): Likewise.
16304         * c-tree.h (struct c_enum_contents): New struct.
16305
16306 2007-06-04  Tom Tromey  <tromey@redhat.com>
16307
16308         * c-common.c (c_common_get_alias_set): Fix indentation.
16309
16310 2007-06-04  Ian Lance Taylor  <iant@google.com>
16311
16312         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
16313         to overflow, reduce overflow infinity to regular infinity.
16314         (vrp_var_may_overflow): New static function.
16315         (vrp_visit_phi_node): Check vrp_var_may_overflow.
16316
16317 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
16318
16319         * stor-layout.c (layout_type): Remove duplicate code.
16320
16321 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
16322
16323         PR c/32191
16324         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
16325         before build_common_builtin_nodes ().
16326
16327 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
16328
16329         PR target/31733
16330         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
16331
16332 2007-06-04  Jan Hubicka  <jh@suse.cz>
16333
16334         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
16335         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
16336         instead of _stat version.
16337
16338 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
16339
16340         PR tree-optimization/32194
16341         * tree-predcom.c (determine_offset): Check that both references have
16342         the same type.
16343
16344 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
16345
16346         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
16347         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
16348         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
16349         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
16350         Add argument to iterate_fix_dominators call.
16351         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
16352         * gcse.c (hoist_code): Change domby to vector.
16353         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
16354         Add argument to iterate_fix_dominators call.
16355         * loop-doloop.c (doloop_modify): Changed recount_dominator to
16356         recompute_dominator.
16357         * lambda-code.c (perfect_nestify): Ditto.
16358         * cfgloopanal.c: Include graphds.h.
16359         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
16360         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
16361         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
16362         add_edge call.
16363         * graphds.c: New file.
16364         * graphds.h: New file.
16365         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
16366         (get_dominated_by, get_dominated_by_region): Change return type to
16367         vector.
16368         (verify_dominators): Recompute all dominators and compare the results.
16369         (recount_dominator): Renamed to ...
16370         (recompute_dominator): ... this.  Do not check that the block is
16371         dominated by entry.
16372         (iterate_fix_dominators): Reimplemented.
16373         (prune_bbs_to_update_dominators, root_of_dom_tree,
16374         determine_dominators_for_sons): New functions.
16375         * et-forest.c (et_root): New function.
16376         * et-forest.h (et_root): Declare.
16377         * Makefile.in (graphds.o): Add.
16378         (cfgloopanal.o): Add graphds.h dependency.
16379         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
16380         * basic-block.h (get_dominated_by, get_dominated_by_region,
16381         iterate_fix_dominators): Declaration changed.
16382         (recount_dominator): Renamed to ...
16383         (recompute_dominator): ... this.
16384         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
16385         (thread_through_all_blocks): Do not free dominance info.
16386
16387 2007-06-03  Andreas Schwab  <schwab@suse.de>
16388
16389         * config/m68k/m68k.c (override_options): Don't override
16390         REAL_MODE_FORMAT.
16391         * config/m68k/m68k-modes.def (SF, DF): Define to use
16392         motorola_single_format and motorola_double_format, resp.
16393         * real.c (motorola_single_format): Renamed from
16394         coldfire_single_format.
16395         (motorola_double_format): Renamed from coldfire_double_format.
16396         (encode_ieee_extended): Generate a proper canonical NaN image
16397         respecting canonical_nan_lsbs_set.
16398         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
16399         true.
16400         * real.h: Adjust declarations.
16401
16402 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
16403
16404         PR target/32163
16405         * config/sh/sh.md (symGOT_load): Don't schedule insns when
16406         the symbol is generated with the stack protector.
16407
16408 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
16409
16410         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
16411         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
16412         "interrupt".
16413         * doc/extend.texi (interrupt): Mention m68k.
16414
16415 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
16416
16417         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
16418         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
16419         (ix86_expand_sse_pcmpestr): Do not check operands for
16420         "register_operand", when insn operand predicate is "register_operand".
16421         (ix86_expand_sse_pcmpistr): Ditto.
16422
16423 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
16424             Uros Bizjak  <ubizjak@gmail.com>
16425
16426         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
16427         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
16428         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
16429         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
16430         * config/i386/constraints.md ("z"): New register constraint
16431         for members of SSE_FIRST_REG class.
16432         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
16433         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
16434         SSE_FIRST_REG class.
16435         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
16436         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
16437         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
16438         (IX86_BUILTIN_PCMPESTRM128): Likewise.
16439         (IX86_BUILTIN_PCMPESTRA128): Likewise.
16440         (IX86_BUILTIN_PCMPESTRC128): Likewise.
16441         (IX86_BUILTIN_PCMPESTRO128): Likewise.
16442         (IX86_BUILTIN_PCMPESTRS128): Likewise.
16443         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
16444         (IX86_BUILTIN_PCMPISTRI128): Likewise.
16445         (IX86_BUILTIN_PCMPISTRM128): Likewise.
16446         (IX86_BUILTIN_PCMPISTRA128): Likewise.
16447         (IX86_BUILTIN_PCMPISTRC128): Likewise.
16448         (IX86_BUILTIN_PCMPISTRO128): Likewise.
16449         (IX86_BUILTIN_PCMPISTRS128): Likewise.
16450         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
16451         (struct builtin_description): Change "flag" field to unsigned.
16452         (bdesc_pcmpestr): New builtin description table.
16453         (bdesc_pcmpistr): Likewise.
16454         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
16455         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
16456         Initialize pcmp[ei]str[im] insns for SSE4.2.
16457         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
16458         (ix86_expand_sse_pcmpistr): Likewise.
16459         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
16460         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
16461         (UNSPEC_PCMPISTR): Likewise.
16462         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
16463         (sse4_2_pcmpestri):New isns pattern.
16464         (sse4_2_pcmpestrm): Likewise.
16465         (sse4_2_pcmpestr_cconly): Likewise.
16466         (sse4_2_pcmpistr): New insn patern and splitter.
16467         (sse4_2_pcmpistri):New isns pattern.
16468         (sse4_2_pcmpistrm): Likewise.
16469         (sse4_2_pcmpistr_cconly): Likewise.
16470         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
16471         in SSE4.2.
16472
16473 2007-06-01  David Daney  <ddaney@avtrex.com>
16474
16475         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
16476         LOADGP_ABSOLUTE and not binds_local_p.
16477
16478 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
16479
16480         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
16481
16482 2007-06-01  Ian Lance Taylor  <iant@google.com>
16483
16484         * tree-vrp.c (compare_name_with_value): Always set
16485         used_strict_overflow if we get a result from the variable itself.
16486
16487 2007-06-01  Ian Lance Taylor  <iant@google.com>
16488
16489         PR rtl-optimization/31455
16490         * lower-subreg.c (find_decomposable_subregs): Don't decompose
16491         subregs which have a cast between modes which are not tieable.
16492
16493 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
16494
16495         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
16496         breaks after return statements.
16497
16498 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
16499
16500         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
16501         only after no_new_pseudos.
16502
16503 2007-05-31  Eric Christopher  <echristo@apple.com>
16504
16505         * expr.c (convert_move): Assert that we don't have a BLKmode
16506         operand.
16507         (store_expr): Handle BLKmode moves by calling emit_block_move.
16508
16509 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
16510
16511         * c-typeck.c (build_indirect_ref): Include type in error message.
16512         (build_binary_op): Pass types to binary_op_error.
16513         * c-common.c (binary_op_error): Take two type arguments, print out
16514         types with error.
16515         * c-common.h (binary_op_error): Update prototype.
16516
16517 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
16518
16519         * config/i386/i386.c: Correct coments on -mno-sse4.
16520
16521 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
16522
16523         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
16524         (x86_64-*-*): Likewise.
16525         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
16526         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
16527         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
16528         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
16529         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
16530         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
16531         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
16532         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
16533         (OPTION_MASK_ISA_SSE4): Likewise.
16534         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
16535         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
16536         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
16537         (override_options): Support SSE4.2.
16538         (ix86_build_const_vector): Support SImode and DImode.
16539         (ix86_build_signbit_mask): Likewise.
16540         (ix86_expand_int_vcond): Support V2DImode.
16541         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
16542         (IX86_BUILTIN_CRC32HI): Likewise.
16543         (IX86_BUILTIN_CRC32SI): Likewise.
16544         (IX86_BUILTIN_CRC32DI): Likewise.
16545         (IX86_BUILTIN_PCMPGTQ): Likewise.
16546         (bdesc_crc32): Likewise.
16547         (bdesc_sse_3arg): Likewise.
16548         (ix86_expand_crc32): Likewise.
16549         (ix86_init_mmx_sse_builtins): Support SSE4.2.
16550         (ix86_expand_builtin): Likewise.
16551         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
16552         __SSE4_2__ for -msse4.2.
16553         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
16554         (CRC32MODE): Likewise.
16555         (crc32modesuffix): Likewise.
16556         (crc32modeconstraint): Likewise.
16557         (sse4_2_crc32<mode>): Likewise.
16558         (sse4_2_crc32di): Likewise.
16559         * config/i386/i386.opt (msse4.2): New for SSE4.2.
16560         (msse4): Likewise.
16561         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
16562         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
16563         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
16564         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
16565         (vcondu<mode>): Likewise.
16566         * doc/extend.texi: Document SSE4.2 built-in functions.
16567         * doc/invoke.texi: Document -msse4.2/-msse4.
16568
16569 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
16570
16571         PR tree-optimization/32160
16572         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
16573         variable as gimple reg.
16574         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
16575
16576 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
16577
16578         * gcc.c (main): Don't consider linker options when issuing the
16579         warning about a linker input file not being used.
16580
16581 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16582
16583         * tree-vrp.c (compare_names): Initialize sop.
16584
16585 2007-05-30  Dirk Mueller  <dmueller@suse.de>
16586
16587         * cgraphunit.c (cgraph_analyze_function): Remove
16588         computation of inline parameters.
16589
16590 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
16591
16592         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
16593
16594 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
16595
16596         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
16597         Add vx-common.h.  Include vxworks.h between vx-common.h and
16598         arm/vxworks.h.
16599         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
16600         redefining.
16601         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
16602         (TARGET_ASM_DESTRUCTOR): Likewise.
16603         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
16604         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
16605         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
16606         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
16607         (VXWORKS_ENDIAN_SPEC): Define.
16608         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
16609         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
16610         VXWORKS_* equivalents.
16611         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
16612         (ASM_FILE_START): Delete.
16613         (TARGET_VERSION): Reformat.
16614         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
16615         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
16616         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
16617         (FPBIT, DPBIT): Define.
16618         (fp-bit.c, dp-bit.c): New rules.
16619         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
16620         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
16621         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
16622         * config/arm/arm.h: Include vxworks-dummy.h.
16623         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
16624         Mark with ATTRIBUTE_UNUSED.
16625         (arm_override_options): Do not allow VxWorks RTP PIC to be used
16626         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
16627         make it incompatible with -msingle-pic-base.
16628         (arm_function_ok_for_sibcall): Return false for calls that might
16629         go through a VxWorks PIC PLT entry.
16630         (require_pic_register): New function, split out from...
16631         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
16632         for VxWorks RTPs.
16633         (arm_load_pic_register): Handle the VxWorks RTP initialization
16634         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
16635         (arm_emit_call_insn): New function.
16636         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
16637         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
16638         (pic_offset_arm): New pattern.
16639         (call, call_value): Use arm_emit_call_insn.
16640         (call_internal, call_value_internal): New expanders.
16641         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
16642         VxWorks unless __PIC__.
16643
16644 2007-05-30  Eric Christopher  <echristo@gmail.com>
16645
16646         * genrecog.c: Include regs.h in generated file.
16647         * genemit.c: Ditto. Fix up formatting.
16648         * config/mn10300/constraints.md: New.
16649         * config/mn10300/mn10300.md: Include.
16650         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
16651         Fix up for removed macro.
16652         * config/mn10300/predicates.md (call_address_operand): Ditto.
16653         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
16654         (CONST_OK_FOR_I): Ditto.
16655         (CONST_OK_FOR_J): Ditto.
16656         (CONST_OK_FOR_K): Ditto.
16657         (CONST_OK_FOR_L): Ditto.
16658         (CONST_OK_FOR_M): Ditto.
16659         (CONST_OK_FOR_N): Ditto.
16660         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
16661         (OK_FOR_Q): Ditto.
16662         (OK_FOR_R): Ditto.
16663         (OK_FOR_T): Ditto.
16664         (EXTRA_CONSTRAINT): Ditto.
16665
16666 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
16667
16668         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
16669         Remove defines.
16670         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
16671         OPTION_MASK_ISA_64BIT.
16672         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
16673
16674 2007-05-30  Richard Guenther  <rguenther@suse.de>
16675
16676         PR middle-end/32152
16677         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
16678         types for comparison.
16679         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
16680         with original typed arguments.
16681         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
16682
16683 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
16684
16685         PR tree-optimization/31769
16686         * except.c (duplicate_eh_regions): Clear prev_try if
16687         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
16688
16689 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
16690
16691         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
16692         * tree-ssa-sink.c (statement_sink_location): Return basic block and
16693         bsi of the location where statements should be inserted.
16694         (sink_code_in_bb): Take bsi from statement_sink_location.
16695         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
16696         instead of bsi_start.
16697         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
16698         bsi_insert_after.
16699         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
16700         (bsi_move_before): Document inconsistency with bsi_move_after.
16701         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
16702
16703 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
16704
16705         * config/i386/i386.h (TARGET_ABM): New define.
16706         (TARGET_POPCNT): Ditto.
16707         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
16708         New temporary defines to redefine from OPTION_ISA_* defines.
16709         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
16710         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
16711         (ix86_isa_flags): New extern int declaration.
16712         (TARGET_SUBTARGET_DEFAULT): New define.
16713         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
16714         (TARGET_SUBTARGET32_DEFAULT): Ditto.
16715         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
16716         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
16717         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
16718         * config/i386/darwin.h: Change TARGET_64BIT define to
16719         OPTION_ISA_64BIT.
16720
16721         * config/i386/i386.opt (m3dnowa): Define as undocumented option
16722         using existing "ix86_isa_flags" varible.
16723         (m32, m64): Use existing "ix86_isa_flags" variable.
16724         (mmmx, m3dnow): Ditto.
16725         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
16726         (mabm): Define as non-negative option using "x86_abm" variable.
16727         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
16728
16729         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
16730         Rewrite feature test bitmap.
16731         (ix86_isa_flags): New initialized global int varible.
16732         (ix86_isa_flags_explicit): New static int variable.
16733         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
16734         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
16735         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
16736         target_flags_explicit.
16737         (override_options): Remove "target_enable" and "target_disable" fields
16738         from "struct ptt". Update processor_target_table accordingly. Remove
16739         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
16740         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
16741         "target_flags" and "ix86_isa_flags_explicit" instead of
16742         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
16743         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
16744         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
16745         to true when either of PTA_POPCNT or PTA_ABM is set in
16746         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
16747         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
16748         processor_alias_table flags entry.  Remove handling of
16749         "target_enable" and "target_disable" fields of processor_target_table.
16750         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
16751         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
16752         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
16753         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
16754         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
16755         "target_flags".
16756         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
16757
16758 2007-05-29  David Daney  <ddaney@avtrex.com>
16759
16760         PR gcc/31975
16761         * config/mips/mips.c (mips_output_mi_thunk): Emit
16762         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
16763
16764 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
16765         * config/i386/i386.c (ix86_function_regparm): Added checking of
16766         ix86_force_align_arg_pointer to determine the number of
16767         register parameters.
16768
16769 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
16770
16771         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
16772         (SET_DR_MISALIGNMENT): New.
16773         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
16774         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
16775         Use SET_DR_MISALIGNMENT.
16776         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
16777         pointer.
16778         * tree-data-ref.c (create_data_ref, compute_all_dependences,
16779         find_loop_nest): Export.
16780         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
16781         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
16782         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
16783         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
16784         New macros.
16785         (struct mem_ref): Add field reuse_distance.
16786         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
16787         Initialize reuse_distance field.
16788         (issue_prefetch_ref): Select temporality of prefetch according to
16789         reuse_distance.
16790         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
16791         self_reuse_distance, determine_loop_nest_reuse): New functions.
16792         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
16793         (tree_ssa_prefetch_arrays): Dump L2 cache size.
16794         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
16795         dependency.
16796
16797 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
16798
16799         * tree-ssa-alias.c: Add aliasing overview.
16800
16801 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
16802             Danny Smith  <dannysmith@users.sourceforge.net>
16803
16804         PR target/29498
16805         * config/i386/t-crtfm: Compile crtfastmath.o with
16806         -minline-all-stringops.
16807         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
16808         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
16809
16810 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16811
16812         * doc/md.texi: Document constraints on HP PA-RISC.
16813
16814         * pa/constraints.md: New file.
16815         * pa.md: Include constraints.md.
16816         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
16817         (integer_store_memory_operand, ldil_cint_p): New functions.
16818         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
16819         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
16820         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
16821         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
16822         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
16823
16824 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
16825
16826         PR c/31339
16827         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
16828         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
16829         case POSTDECREMENT_EXPR>): Return the error_mark_node
16830         if either the real or imaginary parts would an
16831         error_mark_node.
16832
16833 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
16834
16835         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
16836         name when we remove it from a call.
16837
16838 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
16839
16840         * targhooks.c (default_narrow_bitfield): Remove.
16841         * targhooks.h: Remove the prototype for
16842         default_narrow_bitfield.
16843
16844         * langhooks-def.h: Remove the prototype for
16845         hook_get_alias_set_0.
16846         * langhooks.c (hook_get_alias_set_0): Remove.
16847
16848         * global.c (EXECUTE_IF_CONFLICT): Remove.
16849
16850 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16851
16852         PR tree-opt/32100
16853         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
16854         return true when truth_value_p is true and the type
16855         is of signed:1.
16856
16857 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
16858
16859         * doc/install.texi (Prerequisites): We no longer require Autoconf
16860         2.13 for the top-level.
16861
16862 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
16863
16864         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
16865         memory access via x86_expand_vector_move_misalign() only for
16866         TImode values on 32-bit targets.
16867
16868 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
16869
16870         * matrix-reorg.c: New file. Implement matrix flattening and
16871         transposing optimization.
16872         * tree-pass.h: Add matrix reorg pass.
16873         * common.opt: Add fipa-mreorg flag.
16874         * Makefile.in: Add matrix-reorg.c.
16875         * passes.c: Add matrix reorg pass.
16876         * varpool.c (add_new_static_var): New function.
16877         * cgraph.h (add_new_static_var): Declare.
16878
16879 2007-05-27  Eric Christopher  <echristo@apple.com>
16880
16881         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
16882         sp_offset depending on stack size. Save r12 depending
16883         on registers we're saving later.
16884         (rs6000_emit_epilogue): Update sp_offset depending only
16885         on stack size.
16886
16887 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
16888
16889         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
16890         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
16891         * ifcvt.c (if_convert): Ditto.
16892         * tree-ssa-threadupdate.c (thread_block): Ditto.
16893         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
16894         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
16895         verify_loop_closed_ssa): Check number_of_loops instead of
16896         current_loops.
16897         * predict.c (tree_estimate_probability): Ditto.
16898         * tree-if-conv.c (main_tree_if_conversion): Ditto.
16899         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
16900         * modulo-sched.c (sms_schedule): Ditto.
16901         * tree-scalar-evolution.c (scev_const_prop): Ditto.
16902         (scev_finalize): Do not do anything if scev analysis was not
16903         initialized.
16904         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
16905         current_loops == NULL.
16906         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
16907         * loop-init.c (loop_optimizer_init): Do not free current_loops when
16908         there are no loops.
16909         (loop_optimizer_finalize): Assert that loops were analyzed.
16910         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
16911         rtl_doloop): Check number_of_loops instead of current_loops.
16912         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
16913         current_loops == NULL.
16914         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
16915         gate_tree_vectorize tree_linear_transform, check_data_deps,
16916         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
16917         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
16918         Check number_of_loops instead of current_loops.
16919         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
16920         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
16921         free loops if available.
16922         (execute_pre): Do not pass do_fre to fini_pre.
16923
16924 2007-05-27  Tobias Burnus  <burnus@net-b.de>
16925
16926         PR middle-end/32083
16927         * real.c (mpfr_from_real): Fix sign of -Inf.
16928
16929 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
16930
16931         * tree-vect-transform.c (vectorizable_conversion): Initialize
16932         tree_code variables to ERROR_MARK.
16933         (vectorizable_type_demotion): Likewise.
16934         (vectorizable_type_promotion): Likewise.
16935
16936 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
16937
16938         PR target/32065
16939         * config/i386/i386.md (movti): Handle push operands via
16940         ix86_expand_push().
16941
16942 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
16943
16944         * basic-block.h: Remove the prototype for merge_seq_blocks.
16945         * cfgcleanup.c (merge_seq_blocks): Remove.
16946
16947         * tree-flow.h: Remove the prototype for is_aliased_with.
16948         * tree-ssa-alias.c (is_aliased_with): Remove.
16949
16950 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
16951
16952         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
16953
16954         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
16955
16956         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
16957         ix86_expand_sse4_unpack if SSE4.1 is enabled.
16958         (vec_unpacks_hi_v16qi): Likewise.
16959         (vec_unpacku_lo_v16qi): Likewise.
16960         (vec_unpacks_lo_v16qi): Likewise.
16961         (vec_unpacku_hi_v8hi): Likewise.
16962         (vec_unpacks_hi_v8hi): Likewise.
16963         (vec_unpacku_lo_v8hi): Likewise.
16964         (vec_unpacks_lo_v8hi): Likewise.
16965         (vec_unpacku_hi_v4si): Likewise.
16966         (vec_unpacks_hi_v4si): Likewise.
16967         (vec_unpacku_lo_v4si): Likewise.
16968         (vec_unpacks_lo_v4si): Likewise.
16969
16970 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
16971
16972         * c-typeck.c, config/arm/arm.c, config/darwin.c,
16973         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
16974         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
16975         follow spelling conventions in various
16976         warning/error/diagnostic messages.
16977
16978         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
16979         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
16980         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
16981         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
16982         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
16983         * doc/tm.texi: Follow spelling conventions.
16984
16985 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16986
16987         PR tree-opt/32090
16988         * tree-ssa-forwprop.c
16989         (forward_propagate_addr_into_variable_array_index): Remove
16990         the lhs argument.  Use the type of def_rhs instead of lhs.
16991         (forward_propagate_addr_expr_1): Update use of
16992         forward_propagate_addr_into_variable_array_index.
16993
16994 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
16995             Nigel Stephens  <nigel@mips.com>
16996
16997         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
16998         function attributes, "far" being an alias for "long_call".
16999         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
17000         (mips_near_type_p, mips_far_type_p): New.
17001         (mips_comp_type_attributes): New function to check that attributes
17002         attached to a function type are compatible.
17003         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
17004         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
17005         to the target function of the thunk.
17006         (mips_encode_section_info): Check for "near" and "far" function
17007         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
17008
17009         * config/mips/predicates.md (const_call_insn_operand): Test only
17010         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
17011
17012         * doc/extend.texi (Function Attributes): Document MIPS "near" and
17013         "far" attributes.
17014
17015         * testsuite/gcc.target/mips/near-far-1.c: New test case.
17016         * testsuite/gcc.target/mips/near-far-2.c: New test case.
17017         * testsuite/gcc.target/mips/near-far-3.c: New test case.
17018         * testsuite/gcc.target/mips/near-far-4.c: New test case.
17019
17020 2007-05-25  Eric Christopher  <echristo@apple.com>
17021
17022         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
17023         to x86-darwin configurations.
17024         * config/i386/t-darwin: Add softfp support.
17025         * config/i386/t-darwin64: Ditto.
17026         * config/i386/sfp-machine.h: If mach then don't use
17027         aliasing, emit a stub to call.
17028
17029 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
17030
17031         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
17032         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
17033         tree-predcom.c, tree-ssa-alias-warnings.c,
17034         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
17035         comment typos.  Follow spelling conventions.
17036         * doc/cpp.texi, doc/invoke.texi: Fix typos.
17037
17038 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
17039
17040         PR target/32065
17041         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
17042         constants into memory.  Expand unaligned memory references for
17043         SSE modes via x86_expand_vector_move_misalign() function.
17044
17045 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
17046
17047         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
17048         "memory" attribute for "sseishft" type insn without operands[2].
17049
17050 2007-05-25  Dirk Mueller  <dmueller@suse.de>
17051             Marcus Meissner <meissner@suse.de>
17052
17053         * doc/extend.texi (alloc_size): New attribute.
17054         * c-common.c (handle_alloc_size_attribute): New.
17055         * tree-object-size.c (alloc_object_size): Use alloc_size
17056         attribute, if available.
17057
17058 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
17059
17060         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
17061         with MASK_SSE2.
17062         (__builtin_ia32_vec_ext_v2di): Likewise.
17063         (__builtin_ia32_vec_ext_v4si): Likewise.
17064         (__builtin_ia32_vec_ext_v8hi): Likewise.
17065         (__builtin_ia32_vec_ext_v16qi): Likewise.
17066         (__builtin_ia32_vec_set_v8hi): Likewise.
17067
17068 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
17069
17070         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
17071
17072 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
17073
17074         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
17075         (arm_is_longcall_p): Rename to...
17076         (arm_is_long_call_p): ...this.  Take a single tree argument and
17077         return a bool.
17078         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
17079         (CUMULATIVE_ARGS): Remove call_cookie.
17080         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
17081         (ENCODED_LONG_CALL_ATTR_P): Delete.
17082         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
17083         LONG_CALL_FLAG_CHAR cases.
17084         (ARM_DECLARE_FUNCTION_SIZE): Delete.
17085         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
17086         ARM_DECLARE_FUNCTION_SIZE.
17087         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
17088         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
17089         (arm_encode_call_attribute, current_file_function_operand): Delete.
17090         (arm_function_in_section_p): New function.
17091         (arm_is_longcall_p): Rename to...
17092         (arm_is_long_call_p): ...this.  Take the target function as a single
17093         argument and return a bool.  Do not rely on call cookies.  Check
17094         whether the target symbol is in the same section as the current
17095         function, not just the same compilation unit.
17096         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
17097         (arm_encode_section_info): Don't encode a call type.
17098         * config/arm/arm.md (call, call_value): Update calls to
17099         arm_is_long(_)call_p.  Simplify logic.
17100         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
17101         Update calls to arm_is_long(_)call_p.
17102
17103 2007-05-25  Richard Guenther  <rguenther@suse.de>
17104
17105         PR tree-optimization/31982
17106         * tree-ssa-forwprop.c
17107         (forward_propagate_addr_into_variable_array_index): Handle arrays
17108         with element size one.
17109
17110 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17111
17112         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
17113         (umulsi3_highpart): Likewise.
17114
17115 2007-05-24  Ian Lance Taylor  <iant@google.com>
17116
17117         PR rtl-optimization/32069
17118         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
17119         is NULL.
17120
17121 2007-05-24  Ollie Wild  <aaw@google.com>
17122
17123         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
17124         description.
17125
17126 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
17127
17128         * postreload-gcse.c (reg_changed_after_insn_p): New function.
17129         (oprs_unchanged_p): Use it to check all registers in a REG.
17130         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
17131         (reg_set_between_after_reload_p): Delete.
17132         (reg_used_between_after_reload_p): Likewise.
17133         (reg_set_or_used_since_bb_start): Likewise.
17134         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
17135         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
17136         Use reg_set_between_p instead of reg_set_between_after_reload_p.
17137         * rtlanal.c (reg_set_p): Check whether REG overlaps
17138         regs_invalidated_by_call, rather than just checking the
17139         membership of REGNO (REG).
17140
17141 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
17142
17143         * doc/passes.texi: Document predictive commoning.
17144         * doc/invoke.texi (-fpredictive-commoning): Document.
17145         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
17146         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
17147         adding indices to the generated name.
17148         (schedule_sm): Pass 0 to get_lsm_tmp_name.
17149         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
17150         * tree-pretty-print.c (op_symbol_1): Renamed to ...
17151         (op_symbol_code): ... and exported.
17152         (dump_omp_clause, op_symbol): Use op_symbol_code
17153         instead of op_symbol_1.
17154         * tree-pass.h (pass_predcom): Declare.
17155         * timevar.def (TV_PREDCOM): New timevar.
17156         * tree-ssa-loop.c (run_tree_predictive_commoning,
17157         gate_tree_predictive_commoning, pass_predcom): New.
17158         * tree-data-ref.c (find_data_references_in_loop): Find the
17159         references in dominance order.
17160         (canonicalize_base_object_address): Ensure that the result has
17161         pointer type.
17162         (dr_analyze_innermost): Export.
17163         (create_data_ref): Code to fail for references with invariant
17164         address moved ...
17165         (find_data_references_in_stmt): ... here.
17166         * tree-data-ref.h (dr_analyze_innermost): Declare.
17167         * tree-affine.c: Include tree-gimple.h and hashtab.h.
17168         (aff_combination_find_elt, name_expansion_hash,
17169         name_expansion_eq, tree_to_aff_combination_expand,
17170         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
17171         New functions.
17172         * tree-affine.h (aff_combination_constant_multiple_p,
17173         tree_to_aff_combination_expand): Declare.
17174         * tree-predcom.c: New file.
17175         * common.opt (fpredictive-commoning): New option.
17176         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
17177         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
17178         * Makefile.in (tree-predcom.o): Add.
17179         (tree-affine.o): Add TREE_GIMPLE_H dependency.
17180         * passes.c (init_optimization_passes): Add dceloop after
17181         copy propagation in loop optimizer.  Add predictive commoning
17182         to loop optimizer passes.
17183
17184 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17185
17186         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
17187         default hook.
17188
17189 2007-05-24  Jan Hubicka  <jh@suse.cz>
17190
17191         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
17192         statistics.
17193         (genheader): Include statistics.h.
17194
17195         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
17196         notes are gone.
17197         * print-rtl.c (flag_dump_unnumbered): Update comments.
17198         (print_rtl): Fix my previous change.
17199         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
17200         specific data.
17201
17202 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
17203
17204         PR middle-end/32018
17205         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
17206         set_loop_copy.
17207         (thread_through_all_blocks): Call initialize_original_copy_tables
17208         and free_original_copy_tables.
17209         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
17210         Use set_loop_copy.
17211         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
17212         * cfghooks.c (duplicate_block): Use get_loop_copy.
17213         * cfg.c: Include cfgloop.h.
17214         (loop_copy): New hash table.
17215         (initialize_original_copy_tables): Initialize loop_copy table.
17216         (free_original_copy_tables): Free loop_copy table.
17217         (copy_original_table_clear, copy_original_table_set,
17218         set_loop_copy, get_loop_copy): New functions.
17219         (set_bb_original, set_bb_copy): Use copy_original_table_set.
17220         * cfgloop.h (struct loop): Remove copy field.
17221         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
17222         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
17223
17224 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17225
17226         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
17227         -msse/-msse2/-msse3.
17228
17229 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17230
17231         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
17232         __builtin_ia32_vec_set_v2di with MASK_64BIT.
17233
17234 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
17235
17236         PR target/27067
17237         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
17238         * targhooks.h (default_mangle_decl_assembler_name): Declare
17239         default hook.
17240         * targhooks.c (default_mangle_decl_assembler_name): Define
17241         default hook.
17242         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
17243         default hook.
17244         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
17245         * langhooks.c (lhd_set_decl_assembler_name): Call
17246         targetm.mangle_decl_assembler_name for names with global scope.
17247
17248         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
17249         default.
17250         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
17251         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
17252         Declare.
17253         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
17254         New. Factored out of i386_pe_encode_section_info.
17255         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
17256         Move check for prior decoration of stdcall
17257         symbols to i386_pe_encode_section_info.
17258         (i386_pe_encode_section_info): Adjust call to
17259         gen_stdcall_or_fastcall_suffix.  Use
17260         i386_pe_maybe_mangle_decl_assembler_name, if needed.
17261         (i386_pe_mangle_decl_assembler_name): New. Wrap
17262         i386_pe_maybe_mangle_decl_assembler_name.
17263
17264 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
17265
17266         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
17267         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
17268         * langhooks.c (get_signed_or_unsigned_type): Don't check for
17269         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
17270         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
17271         TYPE_UNSIGNED.
17272
17273 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
17274             Nigel Stephens  <nigel@mips.com>
17275             Richard Sandiford  <richard@codesourcery.com>
17276
17277         Fix up MIPS16 hard float and add support for complex.
17278
17279         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
17280         (TARGET_SOFT_FLOAT_ABI): New.
17281         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
17282         __mips_soft_float to reflect the ABI in use, not whether the
17283         FPU is directly accessible (e.g., in MIPS16 mode).
17284         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
17285         (UNITS_PER_FPVALUE): Likewise.
17286
17287         * config/mips/mips.c (mips_expand_call): Remove redundant
17288         TARGET_MIPS16 check.
17289         (mips_arg_regno): New.
17290         (function_arg_advance): When setting bits in cum->fp_code for
17291         MIPS16, don't subtract 1 from cum->arg_number, since it is now
17292         zero-based.
17293         (function_arg): Use mips_arg_regno.
17294         (mips_return_mode_in_fpr_p): New.
17295         (mips16_call_stub_mode_suffix): New.
17296         (mips16_cfun_returns_in_fpr_p): New.
17297         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
17298         (mips_output_function_prologue): Test mips16_hard_float, not
17299         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
17300         (mips_expand_epilogue): Call MIPS16 helper routines to copy
17301         return value into a floating-point register.
17302         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
17303         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
17304         (mips16_fp_args): Handle MIPS32r2 ISA which supports
17305         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
17306         word of double arguments from or to the high bits of 64-bit
17307         floating point registers.
17308         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
17309         (mips16_fpret_double): New helper function.
17310         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
17311         support for complex modes.  Fill in DECL_RESULT for stubdecl.
17312         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
17313
17314         * config/mips/mips16.S
17315         (RET, ARG1, ARG2): New.
17316         (MERGE_GPRf, MERGE_GPRt): New.
17317         (DELAYt, DELAYf): New.
17318         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
17319         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
17320         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
17321         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
17322         (SFOP): Renamed to...
17323         (OPSF3): This, and macro-ified.  Updated all uses.
17324         (SFOP2): Renamed to...
17325         (OPSF2): This, and macro-ified.  Updated all uses.
17326         (SFCMP): Renamed to...
17327         (CMPSF): This, and macro-ified.  Updated all uses.
17328         (SFREVCMP): Renamed to...
17329         (REVCMPSF): This, and macro-ified.  Updated all uses.
17330         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
17331         (LDDBL1, LDDBL2, RETDBL): Deleted.
17332         (DFOP): Renamed to...
17333         (OPDF3): This, and macro-ified.  Updated all uses.
17334         (DFOP2): Renamed to...
17335         (OPDF2): This, and macro-ified.  Updated all uses.
17336         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
17337         (DFCMP): Renamed to...
17338         (CMPDF): This, and macro-ified.  Updated all uses.
17339         (DFREVCMP): Renamed to...
17340         (REVCMPDF): This, and macro-ified.  Updated all uses.
17341         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
17342         (RET_FUNCTION): New.
17343         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
17344         (__mips16_ret_sc, __mips16_ret_dc): New.
17345         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
17346         STUB_ARGS_6, STUB_ARGS_10): New.
17347         (CALL_STUB_NO_RET): New.
17348         (__mips16_call_stub_1): Macro-ified.
17349         (__mips16_call_stub_5): Macro-ified.
17350         (__mips16_call_stub_2): Macro-ified.
17351         (__mips16_call_stub_6): Macro-ified.
17352         (__mips16_call_stub_9): Macro-ified.
17353         (__mips16_call_stub_10): Macro-ified.
17354         (CALL_STUB_RET): New.
17355         (__mips16_call_stub_sf_0): Macro-ified.
17356         (__mips16_call_stub_sf_1): Macro-ified.
17357         (__mips16_call_stub_sf_5): Macro-ified.
17358         (__mips16_call_stub_sf_2): Macro-ified.
17359         (__mips16_call_stub_sf_6): Macro-ified.
17360         (__mips16_call_stub_sf_9): Macro-ified.
17361         (__mips16_call_stub_sf_10): Macro-ified.
17362         (__mips16_call_stub_df_0): Macro-ified.
17363         (__mips16_call_stub_df_1): Macro-ified.
17364         (__mips16_call_stub_df_5): Macro-ified.
17365         (__mips16_call_stub_df_2): Macro-ified.
17366         (__mips16_call_stub_df_6): Macro-ified.
17367         (__mips16_call_stub_df_9): Macro-ified.
17368         (__mips16_call_stub_df_10): Macro-ified.
17369         (__mips16_call_stub_sc_0): New.
17370         (__mips16_call_stub_sc_1): New.
17371         (__mips16_call_stub_sc_5): New.
17372         (__mips16_call_stub_sc_2): New.
17373         (__mips16_call_stub_sc_6): New.
17374         (__mips16_call_stub_sc_9): New.
17375         (__mips16_call_stub_sc_10): New.
17376         (__mips16_call_stub_dc_0): New.
17377         (__mips16_call_stub_dc_1): New.
17378         (__mips16_call_stub_dc_5): New.
17379         (__mips16_call_stub_dc_2): New.
17380         (__mips16_call_stub_dc_6): New.
17381         (__mips16_call_stub_dc_9): New.
17382         (__mips16_call_stub_dc_10): New.
17383
17384         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
17385         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
17386         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
17387
17388 2007-05-23  Ian Lance Taylor  <iant@google.com>
17389
17390         * doc/invoke.texi (Invoking GCC): Document that the order of the
17391         -l option matters.
17392
17393 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
17394
17395         PR target/30987
17396         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
17397         * config/score/predicate.md (const_pow2, const_npow2): Remove.
17398         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
17399         undef.
17400
17401         PR target/30474
17402         * config/score/score.c (score_print_operand): Make sure that only
17403         lower bits are used.
17404
17405 2007-05-22  Ian Lance Taylor  <iant@google.com>
17406
17407         * tree-vrp.c (avoid_overflow_infinity): New static function,
17408         broken out of set_value_range_to_value.
17409         (set_value_range_to_value): Call avoid_overflow_infinity.
17410         (extract_range_from_assert): Likewise.
17411
17412 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17413
17414         PR middle-end/31095
17415          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
17416         change the type before looking for a COMPOUND_EXPR.
17417
17418 2007-05-22  Ian Lance Taylor  <iant@google.com>
17419
17420         * lower-subreg.c (decompose_multiword_subregs): If we change an
17421         insn, call remove_retval_note on it.
17422
17423 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
17424
17425         * regs.h (end_hard_regno): New function.
17426         (END_HARD_REGNO, END_REGNO): New macros.
17427         (add_to_hard_reg_set): New function.
17428         (remove_from_hard_reg_set): Likewise.
17429         (in_hard_reg_set_p): Likewise.
17430         (overlaps_hard_reg_set_p): Likewise.
17431         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
17432         (note_btr_set): Use END_HARD_REGNO.
17433         * caller-save.c (setup_save_areas): Use end_hard_regno.
17434         (mark_set_regs): Use END_HARD_REGNO.
17435         (add_stored_regs): Use end_hard_regno.
17436         (mark_referenced_regs): Use add_to_hard_reg_set.
17437         * combine.c (update_table_tick): Use END_REGNO.
17438         (record_value_for_reg): Likewise.
17439         (record_dead_and_set_regs): Likewise.
17440         (get_last_value_validate): Likewise.
17441         (use_crosses_set_p): Likewise.
17442         (reg_dead_at_p_1): Likewise.
17443         (reg_dead_at_p): Likewise.
17444         (mark_used_regs_combine): Use add_to_hard_reg_set.
17445         (move_deaths): Use END_HARD_REGNO.
17446         (reg_bitfield_target_p): Use end_hard_regno.
17447         (distribute_notes): Use END_HARD_REGNO.
17448         * cse.c (mention_regs): Use END_REGNO.
17449         (insert): Use add_to_hard_reg_set.
17450         (invalidate): Use END_HARD_REGNO.
17451         (invalidate_for_call): Likewise.
17452         (exp_equiv_p): Use END_REGNO.
17453         (cse_insn): Likewise.
17454         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
17455         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
17456         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
17457         * function.c (keep_stack_depressed): Use end_hard_regno.
17458         * global.c (global_alloc): Use end_hard_regno.
17459         (global_conflicts): Use add_to_hard_reg_set instead of
17460         mark_reg_live_nc.
17461         (find_reg): Likewise.
17462         (mark_reg_store): Likewise.
17463         (mark_reg_conflicts): Likewise.
17464         (mark_reg_death): Use remove_from_hard_reg_set.
17465         (mark_reg_live_nc): Delete.
17466         (set_preference): Use end_hard_regno.
17467         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
17468         remove_from_hard_reg_set.
17469         (post_mark_life): Use add_to_hard_reg_set.
17470         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
17471         (reg_becomes_live): Use add_to_hard_reg_set.
17472         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
17473         (peep2_find_free_register): Use add_to_hard_reg_set.
17474         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
17475         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
17476         * regrename.c (note_sets): Use add_to_hard_reg_set.
17477         (clear_dead_regs): Use remove_from_hard_reg_set.
17478         (regrename_optimize): Use add_to_hard_reg_set.
17479         (find_oldest_value_reg): Use in_hard_reg_set_p.
17480         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
17481         (hard_reg_set_here_p): Use end_hard_regno.
17482         (decompose): Likewise.
17483         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
17484         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
17485         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
17486         (mark_home_live): Use end_hard_regno.
17487         (spill_hard_reg): Likewise.
17488         (clear_reload_reg_in_use): Likewise.
17489         * reorg.c (delete_prior_computation): Use END_REGNO.
17490         * resource.c (update_live_status): Use END_HARD_REGNO.
17491         (mark_referenced_resources): Use add_to_hard_reg_set.
17492         (mark_set_resources): Likewise.
17493         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
17494         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
17495         (reg_overlap_mentioned_p): Likewise.
17496         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
17497         (covers_regno_no_parallel_p): Use END_REGNO.
17498         (find_regno_note): Likewise.
17499         (find_reg_fusage): Use END_HARD_REGNO.
17500         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
17501         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
17502
17503 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
17504
17505         * mode-switching.c (reg_dies): Change type of second argument to
17506         "HARD_REG_SET *".
17507         (optimize_mode_switching): Update accordingly.
17508
17509 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
17510
17511         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
17512         in favor of...
17513         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
17514         (hard_reg_set_empty_p): ...these new functions.
17515         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
17516         GO_IF_HARD_REG_SUBSET.
17517         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
17518         instead of GO_IF_HARD_REG_EQUAL.
17519         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
17520         instead of GO_IF_HARD_REG_EQUAL.
17521         * global.c (find_reg): Use hard_reg_set_empty_p instead of
17522         GO_IF_HARD_REG_SUBSET.
17523         (modify_reg_pav): Use hard_reg_set_empty_p instead of
17524         GO_IF_HARD_REG_EQUAL.
17525         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
17526         of GO_IF_HARD_REG_SUBSET.
17527         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
17528         instead of GO_IF_HARD_REG_EQUAL.
17529         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
17530         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
17531         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
17532         of GO_IF_HARD_REG_SUBSET,
17533         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
17534         GO_IF_HARD_REG_SUBSET.
17535         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
17536         instead of GO_IF_HARD_REG_EQUAL.
17537         * config/sh/sh.c (push_regs, calc_live_regs): Use
17538         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
17539         (hard_regs_intersect_p): Delete.
17540
17541 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
17542
17543         * doc/sourcebuild.texi (Test Directives) Add dg-message.
17544
17545 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
17546             Richard Henderson  <rth@redhat.com>
17547
17548         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
17549         extra_headers.
17550         (x86_64-*-*): Likewise.
17551
17552         * i386/i386-modes.def (V2QI): New.
17553
17554         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
17555         SSE4A.
17556         (override_options): Support SSE4.1.
17557         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
17558         (IX86_BUILTIN_BLENDPS): Likewise.
17559         (IX86_BUILTIN_BLENDVPD): Likewise.
17560         (IX86_BUILTIN_BLENDVPS): Likewise.
17561         (IX86_BUILTIN_PBLENDVB128): Likewise.
17562         (IX86_BUILTIN_PBLENDW128): Likewise.
17563         (IX86_BUILTIN_DPPD): Likewise.
17564         (IX86_BUILTIN_DPPS): Likewise.
17565         (IX86_BUILTIN_INSERTPS128): Likewise.
17566         (IX86_BUILTIN_MOVNTDQA): Likewise.
17567         (IX86_BUILTIN_MPSADBW128): Likewise.
17568         (IX86_BUILTIN_PACKUSDW128): Likewise.
17569         (IX86_BUILTIN_PCMPEQQ): Likewise.
17570         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
17571         (IX86_BUILTIN_PMAXSB128): Likewise.
17572         (IX86_BUILTIN_PMAXSD128): Likewise.
17573         (IX86_BUILTIN_PMAXUD128): Likewise.
17574         (IX86_BUILTIN_PMAXUW128): Likewise.
17575         (IX86_BUILTIN_PMINSB128): Likewise.
17576         (IX86_BUILTIN_PMINSD128): Likewise.
17577         (IX86_BUILTIN_PMINUD128): Likewise.
17578         (IX86_BUILTIN_PMINUW128): Likewise.
17579         (IX86_BUILTIN_PMOVSXBW128): Likewise.
17580         (IX86_BUILTIN_PMOVSXBD128): Likewise.
17581         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
17582         (IX86_BUILTIN_PMOVSXWD128): Likewise.
17583         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
17584         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
17585         (IX86_BUILTIN_PMOVZXBW128): Likewise.
17586         (IX86_BUILTIN_PMOVZXBD128): Likewise.
17587         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
17588         (IX86_BUILTIN_PMOVZXWD128): Likewise.
17589         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
17590         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
17591         (IX86_BUILTIN_PMULDQ128): Likewise.
17592         (IX86_BUILTIN_PMULLD128): Likewise.
17593         (IX86_BUILTIN_ROUNDPD): Likewise.
17594         (IX86_BUILTIN_ROUNDPS): Likewise.
17595         (IX86_BUILTIN_ROUNDSD): Likewise.
17596         (IX86_BUILTIN_ROUNDSS): Likewise.
17597         (IX86_BUILTIN_PTESTZ): Likewise.
17598         (IX86_BUILTIN_PTESTC): Likewise.
17599         (IX86_BUILTIN_PTESTNZC): Likewise.
17600         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
17601         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
17602         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
17603         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
17604         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
17605         (bdesc_ptest): New.
17606         (bdesc_sse_3arg): Likewise.
17607         (bdesc_2arg): Likewise.
17608         (bdesc_1arg): Likewise.
17609         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
17610         with 3 args.
17611         (ix86_expand_sse_4_operands_builtin): New.
17612         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
17613         smaller than 8 bits as the 2nd arg.
17614         (ix86_expand_sse_ptest): New.
17615         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
17616         (ix86_expand_vector_set): Support SSE4.1.
17617         (ix86_expand_vector_extract): Likewise.
17618
17619         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
17620         __SSE4_1__ for -msse4.1.
17621
17622         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
17623         (UNSPEC_INSERTPS): Likewise.
17624         (UNSPEC_DP): Likewise.
17625         (UNSPEC_MOVNTDQA): Likewise.
17626         (UNSPEC_MPSADBW): Likewise.
17627         (UNSPEC_PHMINPOSUW): Likewise.
17628         (UNSPEC_PTEST): Likewise.
17629         (UNSPEC_ROUNDP): Likewise.
17630         (UNSPEC_ROUNDS): Likewise.
17631
17632         * config/i386/i386.opt (msse4.1): New for SSE4.1.
17633
17634         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
17635         (const_pow2_1_to_32768_operand): Likewise.
17636
17637         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
17638         file.
17639
17640         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
17641         SSE4.1.
17642         (sse4_1_insertps): Likewise.
17643         (*sse4_1_extractps): Likewise.
17644         (sse4_1_ptest): Likewise.
17645         (sse4_1_mulv2siv2di3): Likewise.
17646         (*sse4_1_mulv4si3): Likewise.
17647         (*sse4_1_smax<mode>3): Likewise.
17648         (*sse4_1_umax<mode>3): Likewise.
17649         (*sse4_1_smin<mode>3): Likewise.
17650         (*sse4_1_umin<mode>3): Likewise.
17651         (sse4_1_eqv2di3): Likewise.
17652         (*sse4_1_pinsrb): Likewise.
17653         (*sse4_1_pinsrd): Likewise.
17654         (*sse4_1_pinsrq): Likewise.
17655         (*sse4_1_pextrb): Likewise.
17656         (*sse4_1_pextrb_memory): Likewise.
17657         (*sse4_1_pextrw_memory): Likewise.
17658         (*sse4_1_pextrq): Likewise.
17659         (sse4_1_blendpd): Likewise.
17660         (sse4_1_blendps): Likewise.
17661         (sse4_1_blendvpd): Likewise.
17662         (sse4_1_blendvps): Likewise.
17663         (sse4_1_dppd): Likewise.
17664         (sse4_1_dpps): Likewise.
17665         (sse4_1_movntdqa): Likewise.
17666         (sse4_1_mpsadbw): Likewise.
17667         (sse4_1_packusdw): Likewise.
17668         (sse4_1_pblendvb): Likewise.
17669         (sse4_1_pblendw): Likewise.
17670         (sse4_1_phminposuw): Likewise.
17671         (sse4_1_extendv8qiv8hi2): Likewise.
17672         (*sse4_1_extendv8qiv8hi2): Likewise.
17673         (sse4_1_extendv4qiv4si2): Likewise.
17674         (*sse4_1_extendv4qiv4si2): Likewise.
17675         (sse4_1_extendv2qiv2di2): Likewise.
17676         (*sse4_1_extendv2qiv2di2): Likewise.
17677         (sse4_1_extendv4hiv4si2): Likewise.
17678         (*sse4_1_extendv4hiv4si2): Likewise.
17679         (sse4_1_extendv2hiv2di2): Likewise.
17680         (*sse4_1_extendv2hiv2di2): Likewise.
17681         (sse4_1_extendv2siv2di2): Likewise.
17682         (*sse4_1_extendv2siv2di2): Likewise.
17683         (sse4_1_zero_extendv8qiv8hi2): Likewise.
17684         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
17685         (sse4_1_zero_extendv4qiv4si2): Likewise.
17686         (*sse4_1_zero_extendv4qiv4si2): Likewise.
17687         (sse4_1_zero_extendv2qiv2di2): Likewise.
17688         (*sse4_1_zero_extendv2qiv2di2): Likewise.
17689         (sse4_1_zero_extendv4hiv4si2): Likewise.
17690         (*sse4_1_zero_extendv4hiv4si2): Likewise.
17691         (sse4_1_zero_extendv2hiv2di2): Likewise.
17692         (*sse4_1_zero_extendv2hiv2di2): Likewise.
17693         (sse4_1_zero_extendv2siv2di2): Likewise.
17694         (*sse4_1_zero_extendv2siv2di2): Likewise.
17695         (sse4_1_roundpd): Likewise.
17696         (sse4_1_roundps): Likewise.
17697         (sse4_1_roundsd): Likewise.
17698         (sse4_1_roundss): Likewise.
17699         (mulv4si3): Don't expand for SSE4.1.
17700         (smax<mode>3): Likewise.
17701         (umaxv4si3): Likewise.
17702         (uminv16qi3): Likewise.
17703         (umin<mode>3): Likewise.
17704         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
17705
17706         * doc/extend.texi: Document SSE4.1 built-in functions.
17707
17708         * doc/invoke.texi: Document -msse4.1.
17709
17710 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
17711
17712         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
17713         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
17714         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
17715         (ASM_SPEC): Add asm_pcrel_spec.
17716         (EXTRA_SPECS): Add asm_pcrel_spec.
17717
17718 2007-05-21  David Daney  <ddaney@avtrex.com>
17719
17720         * doc/install.texi (Building a cross compiler): Add requirements
17721         for Java cross compiler.
17722
17723 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17724
17725         PR middle-end/31995
17726         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
17727         Add loopno argument.  Use evolution_function_is_invariant_rec_p
17728         instead of evolution_function_is_constant_p.
17729         Update calls to evolution_function_is_affine_multivariate_p.
17730         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
17731         Add loopno argument.
17732         * tree-scalar-evolution.c (gather_chrec_stats): Call
17733         evolution_function_is_affine_multivariate_p with a loop
17734         number of 0.
17735         * tree-data-ref.c (analyze_miv_subscript): Likewise.
17736         (analyze_overlapping_iterations): Likewise.
17737         (access_functions_are_affine_or_constant_p): Likewise.
17738         (build_classic_dist_vector_1): If the access functions
17739         are equal, don't do anything.
17740
17741 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
17742             Paolo Carlini  <pcarlini@suse.de>
17743             Uros Bizjak  <ubizjak@gmail.com>
17744
17745         * c-cppbuiltin.c (c_cpp_builtins): Define
17746         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
17747         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
17748         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
17749         * doc/cpp.texi ([Standard Predefined Macros]): Document.
17750
17751 2007-05-21  Mike Stump  <mrs@apple.com>
17752
17753         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
17754         handling as well.
17755         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
17756
17757 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
17758
17759         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
17760         implementation if __OPTIMIZE__ is not defined.
17761         (_mm_alignr_pi8): Ditto.
17762         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
17763         (_mm_inserti_si64): Ditto.
17764         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
17765         (_mm_slli_epi16): Ditto.
17766         (_mm_slli_epi32): Ditto.
17767         (_mm_slli_epi64): Ditto.
17768         (_mm_srai_epi16): Ditto.
17769         (_mm_srai_epi32): Ditto.
17770         (_mm_srli_si128): Ditto.
17771         (_mm_slli_si128): Ditto.
17772         (_mm_srli_epi16): Ditto.
17773         (_mm_srli_epi32): Ditto.
17774         (_mm_srli_epi64): Ditto.
17775         (_mm_extract_epi16): Ditto.
17776         (_mm_insert_epi16): Ditto.
17777         (_mm_shufflehi_epi16): Ditto.
17778         (_mm_shufflelo_epi16): Ditto.
17779         (_mm_shuffle_epi32): Ditto.
17780         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
17781         (_m_pextrw): Ditto.
17782         (_mm_insert_pi16): Ditto.
17783         (_m_pinsrw): Ditto.
17784         (_mm_shuffle_pi16): Ditto.
17785         (_m_pshufw): Ditto.
17786         (_mm_shufle_ps): Ditto.
17787         (_mm_prefetch): Ditto.
17788
17789 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
17790
17791         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
17792         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
17793         * real.c (encode_i370_single, decode_i370_single,
17794         encode_i370_double, decode_i370_double): Functions removed.
17795         (i370_single_format, i370_double_format): Initializations removed.
17796         (real_maxval, round_for_format, exact_real_truncate, significand_size):
17797         Consider the log2_b field to always be one.
17798         (ieee_single_format, mips_single_format, coldfire_single_format,
17799         ieee_double_format, mips_double_format, coldfire_double_format,
17800         ieee_extended_motorola_format, ieee_extended_intel_96_format,
17801         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
17802         ibm_extended_format, mips_extended_format, ieee_quad_format,
17803         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
17804         decimal_single_format, decimal_double_format, decimal_quad_format,
17805         c4x_single_format, c4x_extended_format, real_internal_format): Remove
17806         initialization of log2_b.
17807         * real.h (i370_single_format, i370_double_format): Declarations
17808         removed.
17809         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
17810         field to always be one.
17811
17812 2007-05-21  Andreas Schwab  <schwab@suse.de>
17813
17814         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
17815         NOTE_INSN_BASIC_BLOCK_P.
17816         (process_for_unwind_directive): Likewise.
17817
17818 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
17819
17820         * builtins.c (expand_builtin_setjmp_setup): Update comment.
17821         * function.h (struct function): Move va_list_gpr_size,
17822         va_list_fpr_size, function_frequency to front of bitfields.  Add
17823         calls_unwind_init.
17824         (current_function_calls_unwind_init): New.
17825         * except.c (expand_builtin_unwind_init): Set
17826         current_function_calls_unwind_init not
17827         current_function_has_nonlocal_label.
17828         * reload1.c (has_nonexceptional_receiver): New.
17829         (reload): Use it and current_function_calls_unwind_init to
17830         determine whether call-saved regs must be saved.
17831
17832 2007-05-20  Jan Hubicka  <jh@suse.cz>
17833
17834         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
17835         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
17836         * ddg.c (create_ddg): LIkewise.
17837         * final.c (final): Remove hunk moving line number notes around since
17838         they are no longer present at this stage.
17839         (final_scan_insn): Use NOTE_KIND instead of
17840         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
17841         (output_asm_label): Likewise.
17842         * reorg.c (dbr_schedule): Likewise.
17843         * haifa-sched.c (unlink_other_notes): Likewise.
17844         * mode-switching.c (optimize_mode_switching): Likewise.
17845         * graph.c (start_bb): Likewise.
17846         * rtl.def (NOTE): Update description.
17847         * jump.c (squeeze_notes): Delete.
17848         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
17849         NOTE_INSN_BASIC_BLOCK_P when possible.
17850         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
17851         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
17852         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
17853         (dwarf2out_var_location): Likewise.
17854         * cfgbuild.c (make_edges): Likewise.
17855         (find_basic_blocks_1): Likewise.
17856         * function.c (reorder_blocks_1): Likewise.
17857         (epilogue_done): Likewise.
17858         (reposition_prologue_and_epilogue_notes): Likewise.
17859         * print-rtl.c (print_rtx): Likewise; drop code for printing
17860         line number notes.
17861         (print_rtl): Likewise.
17862         (print_rtl_single): Likewise.
17863         * gcse.c (insert_insn_start_bb): Likewise.
17864         * alias.c (init_alias_analysis): Likewise.
17865         * calls.c (fixup_tail_calls): Likewise.
17866         * except.c (sjlj_emit_function_enter): Likewise.
17867         * emit-rtl.c (add_insn_after): Likeiwse.
17868         (emit_label_before): Likewise.
17869         (emit_label_after): Likewise.
17870         (emit_note_before, emit_note_after, emit_note): Update
17871         parameter to be enum insn_note; do not deal with source
17872         files.
17873         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
17874         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
17875         when possible.
17876         (merge_blocks_move_successor_nojumps): Simplify now when
17877         we don't have BLOCK notes.
17878         (try_optimize_cfg): Likewise.
17879         * cfglayout.c (skip_insns_after_block): Likewise.
17880         (record_effective_endpoints): Likewise.
17881         (duplicate_insn_chain): Likewise.
17882         * varasm.c (output_constant_pool_1): Likewise.
17883         * sched-deps.c (sched_analyze): Likewise.
17884         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
17885         Exterminate.
17886         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
17887         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
17888         (SET_INSN_DELETED): Simplify.
17889         (NOTE_LINE_NUMBER): Exterminate.
17890         (NOTE_LINE_KIND): New.
17891         (NOTE_INSN_BASIC_BLOCK_P): Update.
17892         (enum insn_note): Simplify.
17893         (GET_NOTE_INSN_NAME) Simplify.
17894         (emit_note_before, emit_note_after, emit_note): Update prototype.
17895         (squeeze_notes): Remove.
17896         * sched-int.h (NOTE_NOT_BB_P): Update.
17897         * resource.c (mark_target_live_regs): Update.
17898         * sched-rgn.c (debug_dependencies): Update.
17899         * sched-vis.c (print_insn): Update.
17900         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
17901         * config/i386/i386.c (ix86_output_function_epilogue): Update.
17902         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
17903         (TARGET_ADJUST_UNROLL_MAX): Likewise.
17904         (split_branches): Update.
17905         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
17906         4.0.0.
17907         (sh_adjust_unroll_max): Exterminate.
17908         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
17909         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
17910         (m68hc11_reorg): Likewise.
17911         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
17912         (emit_predicate_relation_info): Update.
17913         (process_for_unwind_directive): Update.
17914         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
17915         (output_call): Update.
17916         * config/pa/pa.c (output_lbranch): Update.
17917         (output_millicode_call): Update.
17918         (output_call): Update.
17919         (pa_combine_instructions): Update.
17920         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
17921         * config/bfin/bfin.c (gen_one_bundle): Update.
17922         * cfgrtl.c (can_delete_note_p): Update.
17923         (delete_insn): Update.
17924         (rtl_merge_blocks): Update.
17925         (commit_one_edge_insertion): Update.
17926         (rtl_verify_flow_info): Update.
17927         * stmt.c (expand_case): Do not call squeeze_notes.
17928
17929 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17930
17931         PR middle-end/7651
17932         PR c++/11856
17933         PR c/12963
17934         PR c/23587
17935         PR other/29694
17936         * c.opt (Wtype-limits): New.
17937         * doc/invoke.texi (Wtype-limits): Document it.
17938         (Wextra): Enabled by -Wextra.
17939         * c-opts.c (c_common_post_options): Enabled by -Wextra.
17940         * c-common.c (shorten_compare): Warn with Wtype-limits.
17941
17942 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
17943
17944         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
17945         inlined function, not as a macro.
17946         (_mm_alignr_pi8): Ditto.
17947         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
17948         (_mm_inserti_si64): Ditto.
17949         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
17950         (_mm_extract_epi16): Ditto.
17951         (_mm_insert_epi16): Ditto.
17952         (_mm_shufflehi_epi16): Ditto.
17953         (_mm_shufflelo_epi16): Ditto.
17954         (_mm_shuffle_epi32): Ditto.
17955         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
17956         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
17957         all functions.
17958         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
17959         float constant.
17960         (_m_to_float): Use C89 compatible assignment.
17961
17962 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
17963
17964         PR target/32007
17965         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
17966
17967 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17968
17969         PR middle-end/7651
17970         * doc/invoke.texi (Wreturn-type): Complete description.
17971         (Wextra): Delete item about return-type warning.
17972         * c-decl.c: Delete redundant Wextra warning.
17973
17974 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
17975
17976         PR target/31585
17977         * config/i386/pmmintrin.h: Do not include xmmintrin.h
17978         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
17979         inlined function, not as a macro.
17980         (_mm_prefetch): Ditto.
17981         (_m_pextrw): Ditto.
17982         (_mm_insert_pi16): Ditto.
17983         (_m_pinsrw): Ditto.
17984         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
17985         (_m_pshufw): Ditto. Add const to __N argument.
17986         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
17987         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
17988         (_mm_slli_epi32): Ditto.
17989         (_mm_srli_si128): Implement as always inlined function, not as a
17990         macro.  Add __inline to function declaration.
17991         (_mm_slli_si128): Ditto.
17992
17993 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
17994
17995         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
17996         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
17997         New constants.
17998         (struct fenv): New structure.
17999         (FP_HANDLE_EXCEPTIONS): New define.
18000         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
18001         (_FP_DECL_EXP): New define.
18002         (FP_INIT_ROUNDMODE): New define.
18003         (FP_ROUNDMODE): New define.
18004
18005 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18006
18007         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
18008         (Wconversion): Update description.
18009         (Wconversion-sign): New.
18010         * c.opt (Wconversion-sign): New.
18011         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
18012         means disabled for C++. Otherwise, take the status of Wconversion.
18013         * c-common.c (conversion_warning): Warn with either Wconversion or
18014         Wconversion-sign.
18015         (warnings_for_convert_and_check): Conditions are already checked by
18016         conversion_warning.
18017         (convert_and_check): Don't check warnings if the conversion failed.
18018
18019 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
18020            Anatoly Sokolov <aesok@dol.ru>
18021
18022         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
18023         avr_epilogue_uses) : Add declaration.
18024         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
18025         * config/avr/constraints.md (R): New constraint.
18026         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
18027         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
18028         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
18029         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
18030         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
18031         call_prologue_saves, epilogue_restores, return_from_epilogue,
18032         return_from_main_epilogue, return_from_interrupt_epilogue,
18033         return_from_naked_epilogue, prologue, epilogue): New patterns.
18034         (jump): Handle symbol reference.
18035         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
18036         avr_output_function_prologue, avr_output_function_epilogue): Remove
18037         functions.
18038         (avr_init_machine_status, expand_prologue, expand_epilogue,
18039         avr_asm_function_end_prologue, avr_epilogue_uses,
18040         avr_asm_function_begin_epilogue): New functions.
18041         (prologue_size, epilogue_size, jump_tables_size): Remove global
18042         variables.
18043         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
18044         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
18045         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
18046         (avr_override_options): Initialise init_machine_status.
18047         (output_movhi): Handle all stack pointer loads.
18048         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
18049         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
18050         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
18051         (EPILOGUE_USES) Redefine.
18052         (machine_function) Declare.
18053
18054 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
18055
18056         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
18057         Use a single return statement.
18058
18059 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18060
18061         PR middle-end/30250
18062         * builtins.c (do_mpfr_lgamma_r): New.
18063         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
18064         * tree.h (CASE_FLT_FN_REENT): New.
18065
18066 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
18067
18068         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
18069         (output_die): Use 'unsigned long' with %x.
18070         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
18071         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
18072         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
18073
18074         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
18075
18076 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
18077
18078         PR target/31989
18079         PR target/31681
18080         PR target/31666
18081         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
18082         true if function has no argument.
18083
18084 2007-05-18  DJ Delorie  <dj@redhat.com>
18085
18086         * config/mips/mips.c (mips_offset_within_alignment_p): New.
18087         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
18088
18089 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
18090
18091         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
18092         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
18093         count_trailing_zeros.
18094         (__i386__): Implement count_leading_zeros using __builtin_clz().
18095         Implement count_trailing_zeros usign __builtin_ctz().
18096
18097 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
18098
18099         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
18100
18101 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
18102
18103         PR middle-end/31344
18104         * expr.c (emit_move_change_mode): Change mode of push operands here.
18105
18106 2007-05-17  Ian Lance Taylor  <iant@google.com>
18107
18108         PR tree-optimization/31953
18109         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
18110         Change all callers.
18111         (set_value_range_to_null): Call set_value_range_to_value.
18112         (extract_range_from_comparison): Likewise.
18113
18114 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18115
18116         * toplev.c (print_version): Output GMP/MPFR version info.
18117
18118         * builtins.c (CASE_MATHFN_REENT): New macro.
18119         (mathfn_built_in): Use it.
18120         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
18121         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
18122         BUILT_IN_LGAMMAL_R): New.
18123         * doc/extend.texi: Document new builtins.
18124
18125         PR middle-end/31796
18126         * builtins.c (do_mpfr_remquo): New.
18127         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
18128         (fold_builtin_3): Handle BUILT_IN_REMQUO.
18129
18130         PR middle-end/30251
18131         * builtins.c (fold_builtin_1): Handle y0, y1.
18132         (fold_builtin_2): Handle yn.
18133
18134         PR middle-end/30251
18135         * builtins.c (do_mpfr_bessel_n): New.
18136         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
18137         (fold_builtin_2): Handle BUILT_IN_JN.
18138
18139 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
18140
18141         PR target/31965
18142         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
18143         TYPE_PRECISION (intmax_type_node).
18144
18145 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
18146
18147         PR target/31850
18148         * reload.c (subst_reloads): Remove checking.
18149
18150 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
18151
18152         PR rtl-optimization/31691
18153         * combine.c (simplify_set): Build a new src pattern instead of
18154         substituting its operands in the COMPARE case.
18155
18156 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
18157
18158         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
18159         (execute_vrp): Preserve loops through jump threading.
18160         * tree-ssa-threadupdate.c (thread_single_edge,
18161         dbds_continue_enumeration_p, determine_bb_domination_status,
18162         thread_through_loop_header): New functions.
18163         (create_edge_and_update_destination_phis,
18164         create_edge_and_update_destination_phis): Set loops for the new blocks.
18165         (prune_undesirable_thread_requests): Removed.
18166         (redirect_edges): Do not pretend that redirect_edge_and_branch can
18167         create new blocks.
18168         (thread_block): Do not call prune_undesirable_thread_requests.
18169         Update loops.
18170         (mark_threaded_blocks): Select edges to thread here.
18171         (thread_through_all_blocks): Take may_peel_loop_headers argument.
18172         Thread edges through loop headers independently.
18173         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
18174         * tree-pass.h (TODO_mark_first_instance): New.
18175         (first_pass_instance): Declare.
18176         * cfghooks.c (duplicate_block): Put the block to the original loop
18177         if copy is not specified.
18178         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
18179         jump threading.  Pass may_peel_loop_headers to
18180         thread_through_all_blocks according to first_pass_instance.
18181         * cfgloop.h (create_preheader): Declare.
18182         * tree-flow.h (thread_through_all_blocks): Declaration changed.
18183         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
18184         * passes.c (first_pass_instance): New variable.
18185         (next_pass_1): Set TODO_mark_first_instance.
18186         (execute_todo): Set first_pass_instance.
18187
18188 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
18189
18190         PR tree-optimization/24659
18191         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
18192         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
18193         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
18194         OTI_vec_pack_ufix_trunc.
18195         (vec_unpacks_float_hi_optab): Define new macro.
18196         (vec_unpacks_float_lo_optab): Ditto.
18197         (vec_unpacku_float_hi_optab): Ditto.
18198         (vec_unpacku_float_lo_optab): Ditto.
18199         (vec_pack_sfix_trunc_optab): Ditto.
18200         (vec_pack_ufix_trunc_optab): Ditto.
18201         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
18202         and vec_pack_[s|u]fix_trunc_optab using
18203         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
18204         * tree-vectorizer.c (supportable_widening_operation): Handle
18205         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
18206         (supportable_narrowing_operation): New function.
18207         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
18208         * tree-vect-transform.c (vectorizable_conversion): Handle
18209         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
18210         (vect_gen_widened_results_half): Move before vectorizable_conversion.
18211         (vectorizable_type_demotion): Call supportable_narrowing_operation()
18212         to check for target support.
18213         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
18214         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
18215         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
18216         for VEC_PACK_FIX_TRUNC_EXPR.
18217         (expand_binop): Special case mode of the result for
18218         vec_pack_[u|s]fix_trunc_optab.
18219         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
18220         vec_pack_[u|s]fix_trunc_optab.
18221
18222         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
18223         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
18224         * tree-pretty-print.c (dump_generic_node): Handle
18225         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
18226         VEC_PACK_FIX_TRUNC_EXPR.
18227         (op_prio): Ditto.
18228         * expr.c (expand_expr_real_1): Ditto.
18229         * tree-inline.c (estimate_num_insns_1): Ditto.
18230         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
18231
18232         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
18233         (vec_unpacks_float_lo_v8hi): Ditto.
18234         (vec_unpacku_float_hi_v8hi): Ditto.
18235         (vec_unpacku_float_lo_v8hi): Ditto.
18236         (vec_unpacks_float_hi_v4si): Ditto.
18237         (vec_unpacks_float_lo_v4si): Ditto.
18238         (vec_pack_sfix_trunc_v2df): Ditto.
18239
18240         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
18241         Document.
18242         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
18243         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
18244         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
18245         [vec_pack_ufix_trunc]: Ditto.
18246         [vec_unpacks_float_hi]: Ditto.
18247         [vec_unpacks_float_lo]: Ditto.
18248         [vec_unpacku_float_hi]: Ditto.
18249         [vec_unpacku_float_lo]: Ditto.
18250
18251 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
18252
18253         * soft-fp/README: Update for new files.
18254         * soft-fp/floattisf.c: New file.
18255         * soft-fp/floattidf.c: New file.
18256         * soft-fp/floattitf.c: New file.
18257         * soft-fp/floatuntisf.c: New file.
18258         * soft-fp/floatuntidf.c: New file.
18259         * soft-fp/floatuntitf.c: New file.
18260         * soft-fp/fixsfti.c: New file.
18261         * soft-fp/fixdfti.c: New file.
18262         * soft-fp/fixtfti.c: New file.
18263         * soft-fp/fixunssfti.c: New file.
18264         * soft-fp/fixunsdfti.c: New file.
18265         * soft-fp/fixunstfti.c: New file.
18266         * soft-fp/extendxftf.c: New file.
18267         * soft-fp/trunctfxf.c: New file.
18268
18269         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
18270         (__trunctfxf2): Ditto.
18271
18272         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
18273         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
18274         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
18275         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
18276         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
18277         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
18278
18279         * config/i386/t-fprules-softfp64: New file.
18280         * config/i386/sfp-machine.h: New file.
18281         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
18282         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
18283         and soft-fp/t-softfp to tmake_file.
18284         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
18285         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
18286
18287         * config/i386/t-linux64 (softfp_wrap_start): New.
18288         (softfp_wrap_end): New.
18289         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
18290         supported for TARGET_64BIT.
18291
18292 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
18293
18294         * c-common.c (c_common_signed_or_unsigned_type): Emulate
18295         c_common_unsigned_type behavior.
18296
18297 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
18298
18299         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
18300         calls as pure.
18301
18302 2007-05-16  Eric Christopher  <echristo@apple.com>
18303
18304         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
18305         saving after stack push. Set sp_offset whenever we push.
18306         (rs6000_emit_epilogue): Move altivec register restore before
18307         stack push.
18308
18309 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
18310
18311         * configure.ac: Allow sysroots to be relocated under $prefix as
18312         well as $exec_prefix.
18313         * configure: Regenerate.
18314
18315 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
18316
18317         Revert:
18318
18319         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
18320
18321         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
18322         (gcc_tooldir): Likewise.
18323         * configure: Regenerate.
18324         * Makefile.in (libsubdir_to_prefix): New variable, based on the
18325         old configure.ac gcc_tooldir setting.
18326         (prefix_to_exec_prefix): New variable.
18327         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
18328         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
18329
18330 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
18331
18332         * c-typeck.c (build_binary_op): Return early for error.
18333
18334 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
18335
18336         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
18337         struct nb_iter_bound.
18338         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
18339         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
18340         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
18341         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
18342         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
18343         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
18344         (del_scev_info): Use ggc_free.
18345         (scev_initialize): Allocate scalar_evolution_info in gc memory.
18346         * loop-init.c: Include ggc.h.
18347         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
18348         (loop_optimizer_finalize): Use ggc_free.
18349         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
18350         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
18351         pass_iv_optimize): Add TODO_ggc_collect.
18352         * function.h (struct function): Remove skip marker from
18353         x_current_loops.
18354         * cfgloop.c: Include ggc.h.
18355         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
18356         memory.
18357         (establish_preds): Vector superloops is gc allocated.
18358         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
18359         loop->exits list.
18360         (flow_loops_find): Vector larray is gc allocated.
18361         (loop_exit_free): Use ggc_free.
18362         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
18363         that head of exits list is now not a part of struct loop.
18364         (record_loop_exits): Allocate exits table in gc memory.
18365         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
18366         that head of exits list is now not a part of struct loop.
18367         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
18368         struct loop_exit): Add GTY marker.
18369         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
18370         Add skip marker to aux field.  Make head of exits list a separate
18371         object.
18372         (struct loops): Add GTY marker.  Make larray vector gc allocated.
18373         Add param marker to exits table.
18374         (get_loops): Type changed.
18375         * Makefile.in (tree-scalar-evolution.o): Add
18376         gt-tree-scalar-evolution.h dependency.
18377         (cfgloop.o, loop-init.o): Add ggc.h dependency.
18378         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
18379         * basic-block.h (struct basic_block_def): Remove skip marker from
18380         loop_father field.
18381
18382 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
18383
18384         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
18385         of 0 in the call to expand_expr().
18386         (expand_builtin_mathfn_3): Ditto.
18387         (expand_builtin_interclass_mathfn): Ditto.
18388         (expand_builtin_cexpi): Ditto.
18389         (expand_builtin_int_roundingfn): Ditto.
18390         (expand_builtin_int_roundingfn_2): Ditto.
18391         (expand_builtin_pow): Ditto.
18392         (expand_builtin_powi): Ditto.
18393         (expand_builtin_bswap): Ditto.
18394         (expand_builtin_unop): Ditto.
18395         (expand_builtin_fabs): Ditto.
18396         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
18397         the call to expand_expr().
18398         (expand_builtin_sync_operation): Ditto.
18399         (expand_builtin_compare_and_swap): Ditto.
18400         (expand_builtin_lock_test_and_set): Ditto.
18401         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
18402         instead of 0 in the call to expand_expr().
18403         (expand_builtin_extract_return_addr): Ditto.
18404         (expand_builtin_eh_return): Ditto.
18405         (expand_eh_return): Ditto.
18406         * explow.c (expr_size): Ditto.
18407         * expr.c (optimize_bitfield_assignment_op): Ditto.
18408         (expand_assignement): Ditto.
18409         (store_expr): Ditto.
18410         (store_field): Ditto.
18411         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
18412         the call to expand_expr().
18413         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
18414         in the call to expand_expr().
18415         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
18416         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
18417         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
18418         of expand_expr().
18419         * optabs.c (expand_vec_shift_expr): Ditto.
18420         (expand_vec_cond_expr): Ditto.
18421         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
18422         call to expand_expr().
18423         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
18424         in the call to expand_expr().
18425
18426 2007-05-14  Dave Korn  <dave.korn@artimi.com>
18427
18428         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
18429
18430 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
18431
18432         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
18433         instead of c_common_unsigned_type.
18434         (c_common_unsigned_type): Remove.
18435         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
18436         c_common_unsigned_type.
18437         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
18438         c_common_unsigned_type.
18439         * c-common.h (c_common_unsigned_type): Remove.
18440         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
18441         c_common_unsigned_type.
18442         * c-format.c (check_format_types): Use unsigned_type_for instead of
18443         c_common_unsigned_type.
18444         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
18445         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
18446         of c_common_unsigned_type.
18447         * convert.c (convert_to_integer): Use unsigned_type_for instead of
18448         lang_hooks.types.unsigned_type.
18449         * expmed.c (make_tree): Use unsigned_type_for instead of
18450         lang_hooks.types.unsigned_type.
18451         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
18452         lang_hooks.types.unsigned_type.
18453         (build_range_check): Likewise.
18454         (fold_unary): Likewise.
18455         (fold_binary): Likewise.
18456         (fold_ternary): Likewise.
18457         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
18458         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
18459         * tree.c (get_unsigned_type): New.
18460         (unsigned_type_for): Use get_unsigned_type instead of
18461         lang_hooks.types.unsigned_type.
18462
18463 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
18464
18465         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
18466         to m68k_get_function_kind.  Update its prototype.
18467         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
18468         interrupt_thread.
18469         (m68k_interrupt_function_p): Return enum m68k_function_type
18470         instead of bool.  Rename to m68k_get_function_kind.
18471         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
18472         target is not fido.
18473         (m68k_compute_frame_layout): Don't mark any register for save
18474         if an interrupt_thread attribute is specified.
18475         (m68k_hard_regno_rename_ok): Update a use of
18476         m68k_interrupt_function_p.
18477         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
18478         m68k_interrupt_function_p.
18479         (m68k_function_type): New.
18480         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
18481         for a function with an interrupt_thread attribute.
18482         * doc/extend.texi: Document the interrupt_thread attribute.
18483
18484 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
18485
18486         Fix PR tree-optimization/31911
18487         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
18488         if they didn't change the expression.
18489
18490 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
18491
18492         * tree-scalar-evolution.c (resolve_mixers): Exported.
18493         * tree-scalar-evolution.h (resolve_mixers): Declare.
18494         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
18495         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
18496         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
18497         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
18498         init_array_ref, init_pointer_ref, analyze_indirect_ref,
18499         strip_conversion, analyze_offset_expr, address_analysis,
18500         object_analysis, analyze_offset): Removed.
18501         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
18502         split_constant_offset, canonicalize_base_object_address,
18503         object_address_invariant_in_loop_p, disjoint_objects_p,
18504         dr_may_alias_p, dr_address_invariant_p): New functions.
18505         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
18506         and dr_analyze_alias.
18507         (initialize_data_dependence_relation): Use dr_may_alias_p
18508         and object_address_invariant_in_loop_p.
18509         (compute_self_dependence): Handle the case when
18510         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
18511         (find_data_references_in_stmt): Restrict the analysis of data
18512         references to the given loop nest.
18513         (find_data_references_in_loop): Made static.  Pass loop nest to
18514         find_data_references_in_stmt.
18515         (compute_data_dependences_for_loop): Use DR_VOPS.
18516         (free_data_ref): Free DR_VOPS.
18517         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
18518         (struct innermost_loop_behavior): ... new.
18519         (struct base_object_info): Replaced by ...
18520         (struct indices): ... new.
18521         (struct dr_alias): New.
18522         (enum data_ref_type): Removed.
18523         (struct data_reference): Consist of struct innermost_loop_behavior,
18524         struct indices and struct dr_alias.
18525         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
18526         (DR_MEMTAG): Renamed to ...
18527         (DR_SYMBOL_TAG): ... this.
18528         (find_data_references_in_loop): Declaration removed.
18529         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
18530         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
18531         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
18532         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
18533
18534 2007-05-13  Revital Eres  <eres@il.ibm.com>
18535
18536         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
18537         which walks virtual def-use chains to find redundant stores.
18538         (dse_optimize_stmt): Call it.
18539
18540 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
18541
18542         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
18543         * passes.c (init_optimization_passes): Move pass_jump_bypass
18544         after loop2.
18545
18546         * basic-block.h (bb_has_eh_pred): Fix style issue.
18547
18548 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
18549
18550         PR rtl-optimization/31848
18551         * loop-invariant.c (move_invariant_reg): If we move an insn
18552         with a REG_EQUAL note, and that insn is not always executed,
18553         remove the REG_EQUAL note.
18554
18555 2007-05-12  Richard Guenther  <rguenther@suse.de>
18556
18557         PR tree-optimization/31797
18558         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
18559         propagate into a stmt that has volatile ops.
18560
18561 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
18562
18563         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
18564         (gcc_tooldir): Likewise.
18565         * configure: Regenerate.
18566         * Makefile.in (libsubdir_to_prefix): New variable, based on the
18567         old configure.ac gcc_tooldir setting.
18568         (prefix_to_exec_prefix): New variable.
18569         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
18570         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
18571
18572 2007-05-11  Silvius Rus  <rus@google.com>
18573
18574         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
18575         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
18576         * c-common.h (strict_aliasing_warning): Change return type.
18577         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
18578         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
18579         (build_c_cast): Condition call to strict_aliasing_warning.
18580         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
18581         * flags.h (set_Wstrict_aliasing): Declare.
18582         * opts.c (set_Wstrict_alising): Define, add call to.
18583         * tree-flow.h (strict_aliasing_warning_backend): Declare.
18584         * tree-ssa-alias-warnings.c: New file.
18585         * tree-ssa-alias.c (compute_may_aliases): Add call to
18586         strict_aliasing_warning_backend.
18587
18588 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
18589
18590         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
18591         Use loop_depth and loop_outer accessor functions.
18592         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
18593         determine_invariantness_stmt, move_computations_stmt): Ditto.
18594         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
18595         add_loop, loopify, unloop, fix_loop_structure): Ditto.
18596         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
18597         * tree-scalar-evolution.c (interpret_loop_phi,
18598         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
18599         instantiate_parameters_1, scev_const_prop): Ditto.
18600         * cfghooks.c (make_forwarder_block): Ditto.
18601         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
18602         * modulo-sched.c (loop_canon_p): Ditto.
18603         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
18604         slpeel_can_duplicate_loop_p): Ditto.
18605         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
18606         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
18607         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
18608         cancel_loop, verify_loop_structure): Ditto.
18609         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
18610         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
18611         superloops vector instead of "pred" array.
18612         (establish_preds): Take father loop as an argument.  Initialize the
18613         superloops vector.
18614         (flow_loop_tree_node_add): Pass father loop to establish_preds.
18615         Do not initialize loop->outer.
18616         (flow_loop_tree_node_remove): Truncate the superloops vector.
18617         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
18618         "pred" merged to "superloops" vector.
18619         (loop_depth, loop_outer): New.
18620         (fel_init): Use loop_outer.
18621
18622 2007-05-11  Jan Hubicka  <jh@suse.cz>
18623
18624         * cgraphunit.c: Include gt-cgraphunit.h
18625         (static_ctors, static_dtors): New static vars.
18626         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
18627         based on implementation in c-common.c
18628         (cgraph_finalize_function): Call record_cdtor_fn.
18629         (cgraph_optimize): Call cgraph_build_cdtor_fns.
18630         * decl.c (finish_function): Do not call c_record_cdtor_fn.
18631         (c_write_global_declarations): Do not call c_build_cdtor_fns.
18632         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
18633         build_cdtor, c_build_cdtor_fns): Remove.
18634         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
18635         c_build_cdtor_fns): Remove prototype.
18636
18637 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
18638
18639         PR other/31852
18640         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
18641         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
18642         * builtins.c (fold_builtin_memchr): New.
18643         (expand_builtin_memchr): Call the latter.
18644         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
18645         * doc/extend.texi ([Other built-in functions provided by GCC]):
18646         Document memchr.
18647
18648 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
18649
18650         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
18651         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
18652         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
18653         PFPO_OP1_TYPE_SHIFT): Constants added.
18654         (DFP_ALL): Mode macro defined.
18655         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
18656         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
18657         Insn definitions added.
18658         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
18659         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
18660         Expanders added.
18661
18662 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
18663
18664         PR tree-optimization/31885
18665         * tree-chrec.c (chrec_contains_undetermined): Do not consider
18666         NULL_TREE to be undetermined.
18667         (automatically_generated_chrec_p): Return false for NULL.
18668
18669 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
18670
18671         * config/bfin/bfin.h (MOVE_RATIO): Define.
18672
18673 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
18674
18675         * config.gcc (sparc-wrs-vxworks): New target.
18676         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
18677         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
18678         * config/sparc/sparc.h: Include vxworks-dummy.h.
18679         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
18680         include LABEL_REFs too.
18681         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
18682         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
18683         VxWorks.
18684         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
18685         on VxWorks.
18686         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
18687         (sparc_emit_call_insn): New function.
18688         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
18689         functions when generating VxWorks PIC.
18690         * config/sparc/sparc.md (vxworks_load_got): New pattern.
18691         (call, call_value): Use sparc_emit_call_insn instead of
18692         emit_call_insn.
18693
18694 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
18695
18696         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
18697
18698 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
18699
18700         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
18701         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
18702         split_double instead of operand_subword.
18703
18704 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
18705
18706         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
18707         * config/bfin/bfin.c (bfin_local_alignment): New function.
18708         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
18709
18710 2007-05-08  Chao-ying Fu  <fu@mips.com>
18711
18712         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
18713         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
18714         (smsub_widen_optab, umsub_widen_optab): Define.
18715         * optabs.c (init_optabs): Initialize smsub_widen_optab and
18716         umsub_widen_optab.
18717         * genopinit.c (optabs): Fill in smsub_widen_optab and
18718         umsub_widen_optab.
18719         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
18720         and umsub_widen_optab to implement multiply-subtract sequences.
18721         * config/mips/mips.md (*msac<u>_di): Rename to...
18722         (<u>msubsidi4): ...this.  Extend condition to include
18723         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
18724         of operand 0 to "ka" and use the three-operand form of msub<u>
18725         for TARGET_DSPR2.
18726         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
18727         to define_expands.
18728
18729 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
18730
18731         PR rtl-optimization/28011
18732         * reload.c (push_reload): Set dont_share if IN appears in OUT
18733         also when IN is a PLUS rtx.
18734         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
18735         are same PLUS rtx.
18736
18737 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
18738
18739         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
18740         call unshare_all_decls.
18741         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
18742         (unshare_all_decls): Remove.
18743
18744 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
18745
18746         PR 31847
18747         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
18748         dumps.
18749
18750 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
18751             Nigel Stephens  <nigel@mips.com>
18752
18753         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
18754         Update comments and all uses.
18755         (MIN_FPRS_PER_FMT): Define.
18756         * config/mips/mips.c (function_arg): Fix to correctly handle
18757         the -mips32r2 -mfp64 -mabi=32 case.
18758         (override_options): Enable use of odd-numbered registers for
18759         SFmode values on MIPS32.
18760         (mips_save_reg_p): Save whole floating-point register pair if
18761         either half is used.
18762         (compute_frame_size): Fix comment.
18763
18764 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
18765
18766         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
18767         argument of type bool.
18768         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
18769         argument. Safely select temporary P register according to it.
18770         (do_link): Change call site of add_to_reg accordingly.
18771         (do_unlink): Add epilogue_p as a fourth argument and pass it
18772         to add_to_reg.
18773         (expand_interrupt_handler_epilogue): Change call of do_unlink
18774         accordingly.
18775         (bfin_expand_prologue): Add a third argument sibcall_p.
18776         * config/bfin/bfin.md (epilogue): Change call of
18777         bfin_expand_epilogue accordingly.
18778         (sibcall_epilogue): Likewise.
18779         (eh_return_internal): Likewise.
18780
18781         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
18782         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
18783         * config/bfin/bfin.c (bfin_handle_option): Handle
18784         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
18785         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
18786         Support bf534, bf536 and bf561.
18787         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
18788
18789 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
18790
18791         PR target/31854
18792         * config/i386/i386.c (ix86_function_regparm): Process local
18793         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
18794
18795 2007-05-07  Mike Stump  <mrs@apple.com>
18796
18797         * doc/invoke.texi (Warning Options): Document that -Wempty-body
18798         also checks for and while statements in C++.
18799
18800 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
18801
18802         * gcc.c (at_file_supplied): New variable.
18803         (main): Set it if we expanded argv.
18804         (do_spec_1): Pass an @-file to the linker if we were called with
18805         an @-file argument and HAVE_GNU_LD.
18806         * collect2.c (at_file_supplied): New variable.
18807         (response_file): New variable.
18808         (collect_exit): Unlink response_file if necessary.
18809         (handler): Likewise.
18810         (do_wait): Likewise.
18811         (main): Set at_file_supplied if we expanded argv.
18812         (collect_execute): Pass an @-file to subprocesses if we were called
18813         with an @-file argument.
18814         * configure.ac: Add define for HAVE_GNU_LD.
18815         * configure: Regenerate.
18816         * config.in: Regenerate.
18817
18818 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
18819
18820         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
18821         operand to HI mode.
18822         (mulsi3): New.
18823         (divsi3): New.
18824         (udivsi3): New.
18825
18826 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
18827
18828         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
18829         (TARGET_ENCODE_SECTION_INFO): Re-define.
18830         (m32c_encode_section_info): New
18831         (function_vector_handler): New
18832         (current_function_special_page_vector): New
18833         (m32c_special_page_vector_p): New.
18834         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
18835         Prototype.
18836         * config/m32c/jump.md: Added instruction JSRS for functions
18837         with attribute "function_vector".
18838         * doc/extend.texi (function_vector): Added description
18839         for M16C, M32C targets.
18840
18841 2007-05-07  DJ Delorie  <dj@redhat.com>
18842
18843         PR 31794
18844         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
18845         ashrpsi3, lshrpsi3): Update shift count constraint.
18846
18847 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
18848             Nathan Froyd  <froydnj@codesourcery.com>
18849
18850         PR 22133
18851         * c-incpath.c (add_path): Strip trailing path separators.
18852
18853 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
18854
18855         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
18856         Free dominance info before purging EH edges.
18857         (eliminate_degenerate_phis): Likewise.
18858         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
18859
18860 2007-05-07  Jan Hubicka  <jh@suse.cz>
18861
18862         * gimplify.c (gimplify_expr): Do not crash when folding
18863         (void *)(int)&a + 4.
18864
18865 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18866
18867         PR driver/31694
18868         * c-opts.c (lang_fortran): Make it non static.
18869         * c-common.h (lang_fortran): New prototype.
18870         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
18871         -lang-fortran option was passed by the driver.
18872
18873 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
18874
18875         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
18876         of ASSERT_CHECKING.  Tweak message.
18877
18878 2007-05-06  Revital Eres  <eres@il.ibm.com>
18879
18880         PR 30957
18881         * loop-unroll.c (insert_var_expansion_initialization):
18882         Initialize the expansions with -zero instead of +zero.
18883
18884 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
18885
18886         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
18887         into pic and non-pic versions. Mark r19 as used for
18888         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
18889         for tgd_load, tld_load and tie_load .
18890         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
18891         version of tgd_load, tld_load and tie_load depending on the
18892         value of flag_pic.
18893
18894 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
18895             Jakub Jelinek  <jakub@redhat.com>
18896
18897         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
18898         (__do_global_dtors_aux): Use more paranoid loop to run
18899         destructors if HIDDEN_DTOR_LIST_END.
18900         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
18901
18902 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
18903
18904         * varasm.c (align_variable): Don't increase alignment for
18905         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
18906         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
18907
18908 2007-05-04  Josh Conner  <jconner@apple.com>
18909
18910         * basic-block.h (cdi_direction): Assign values to all enumeration
18911         constants.
18912         (dom_computed): Remove.
18913         (dom_info_state): New.
18914         (set_dom_info_availability): New.
18915         * tree-ssa-loop-im.c (determine_invariantness): Initialize
18916         walk_data.dom_direction.
18917         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
18918         instead of dom_computed[].
18919         (split_edge): Likewise.
18920         (create_basic_block): Likewise.
18921         (merge_blocks): Likewise.
18922         * ifcvt.c (find_if_header): Likewise.
18923         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
18924         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
18925         * tree-ssa.c (verify_ssa): Likewise.
18926         * tree-cfg.c (tree_verify_flow_info): Likewise.
18927         (remove_edge_and_dominated_blocks): Likewise.
18928         * dominance.c (dom_computed): Make static.
18929         (calc_dfs_tree_nonrec): Change third param to a bool.
18930         (calc_dfs_tree): Change second param to a bool.
18931         (calc_idioms): Change second param to a bool.  Use
18932         dom_convert_dir_to_idx.
18933         (init_dom_info): Validate dir before using.
18934         (dom_convert_dir_to_idx): New.
18935         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
18936         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
18937         (free_dominance_info): Use dom_convert_dir_to_idx.
18938         (get_immediate_dominator): Likewise.
18939         (set_immediate_dominator): Likewise.
18940         (get_dominated_by): Likewise.
18941         (redirect_immediate_dominators): Likewise.
18942         (nearest_common_denominator): Likewise.
18943         (dominated_by_p): Likewise.
18944         (bb_dom_dfs_in): Likewise.
18945         (bb_dom_dfs_out): Likewise.
18946         (recount_dominator): Likewise.
18947         (iterate_fix_dominators): Likewise.
18948         (add_to_dominance_info): Likewise.
18949         (delete_from_dominance_info): Likewise.
18950         (first_dom_son): Likewise.
18951         (next_dom_son): Likewise.
18952         (dom_info_available_p): Likewise.
18953         (dom_info_state): New.
18954         (set_dom_info_availability): New.
18955
18956 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
18957
18958         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
18959         Expander removed.
18960         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
18961
18962 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
18963
18964         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
18965         (subdi3, subdi_carry): Delete.
18966
18967 2007-05-04  Jan Hubicka  <jh@suse.cz>
18968             Richard Guenther  <rguenther@suse.de>
18969
18970         * opts.c (decode_options): Do not fiddle with inlining
18971         parameters in case of optimizing for size.
18972         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
18973         for size do nothing.
18974         (cgraph_decide_inlining_of_small_function): When optimizing for
18975         size never inline functions increasing caller size.
18976         (cgraph_early_inlining): Inline for size when optimizing for size.
18977
18978 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
18979
18980         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
18981         logical operations piecewise.
18982         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
18983         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
18984         subdi_sesidi_di): Delete.
18985         (add_with_carry): Produce carry in CC instead of a DREG to shorten
18986         the generated sequence.  Allow three-reg add in constraints.  Rewrite
18987         the rtl expression for carry to avoid zero_extend of a constant.
18988         (sub_with_carry): New pattern.
18989         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
18990         different sequence not involving jumps.
18991         (notbi): Now a named pattern.
18992
18993 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
18994
18995         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
18996         Add the note about a significant loss of accuracy of some
18997         mathematical routines when these options are used.
18998
18999 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19000
19001         * haifa-sched.c (rtx_vec_t): New typedef.
19002         (contributes_to_priority_p): Extract piece of priority () into new
19003         static function.
19004         (priority): Use the function.  Add assertion.
19005         (rank_for_schedule, set_priorities): Add assertion to check that
19006         insn's priority is initialized.
19007         (clear_priorities, calc_priorities): Change signature.  Make it update
19008         all relevant insns.  Update all callers ('add_to_speculative_block ()'
19009         and 'create_block_check_twin ()').
19010         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
19011         Add new field 'priority_status'.
19012         (INSN_PRIORITY_STATUS): New macro.
19013         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
19014
19015 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19016
19017         * sched-ebb.c (debug_ebb_dependencies): New static function.
19018         (init_ready_list): Use it.
19019
19020         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
19021         with changed signature and 'debug_rgn_dependencies ()'.
19022         (debug_rgn_dependencies): New static function.
19023         (init_ready_list): Use it.
19024
19025         * sched-int.h (debug_dependencies): Declare.
19026
19027 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
19028
19029         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
19030
19031 2007-05-04  Dirk Mueller  <dmueller@suse.de>
19032
19033         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
19034
19035 2007-05-03  Jan Hubicka  <jh@suse.cz>
19036
19037         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
19038         ((T1)X op (T1)Y), for pointer type in more cases than before.
19039
19040         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
19041
19042         * tree-object-size.c (plus_expr_object_size): When operand size is
19043         unknown, return unknown.
19044
19045 2007-05-03  Dirk Mueller  <dmueller@suse.de>
19046
19047         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
19048
19049         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
19050         options.
19051
19052         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
19053
19054 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
19055
19056         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
19057
19058 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
19059
19060         * config/soft-fp/double.h, config/soft-fp/extended.h,
19061         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
19062         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
19063         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
19064         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
19065         glibc CVS.
19066
19067 2007-05-03  Ian Lance Taylor  <iant@google.com>
19068
19069         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
19070         MASK_PPC_GFXOPT for 8540 or 8548.
19071
19072 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
19073
19074         * tree-vect-transform.c (vect_update_inits_of_drs): Use
19075         vect_print_dump_info() to output debug information.
19076
19077 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
19078
19079         PR target/31768
19080         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
19081         operands of size 2 when operand is not MEM_P.
19082
19083 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
19084
19085         PR tree-optimization/30565
19086         * lambda-code.c (perfect_nestify): Fix updating of dominators.
19087
19088 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
19089
19090         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
19091         (umulsi3_highpart): Use them.
19092         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
19093         for final accumulator to D regisster tranfser.
19094
19095 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
19096
19097         PR tree-optimization/31699
19098         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
19099         wrong code.
19100         (vect_enhance_data_refs_alignment): Compute peel amount using
19101         TYPE_VECTOR_SUBPARTS instead of vf.
19102         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
19103
19104 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
19105
19106         PR bootstrap/31776
19107         * system.h: Remove inclusion of double-int.h
19108         * tree.h: Include double-int.h
19109         * gengtype.c: Likewise
19110         * cfgloop.h: Likewise
19111         * Makefile.in: Adjust dependencies on double-int.h
19112
19113 2007-05-02  Eric Christopher  <echristo@apple.com>
19114
19115         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
19116         -shared to -Zdynamiclib.
19117
19118 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
19119
19120         PR c++/31663
19121         * c-common.c (strip_pointer_or_array_types): New function.
19122         * c-common.h (strip_pointer_or_array_types): New function declaration.
19123
19124 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
19125
19126         PR tree-optimization/31771
19127         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
19128
19129 2007-05-02  Paul Brook  <paul@codesourcery.com>
19130
19131         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
19132
19133 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19134
19135         PR middle-end/29715
19136         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
19137         transformation.
19138
19139 2007-05-02  Nick Clifton  <nickc@redhat.com>
19140
19141         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
19142
19143 2007-05-02  Richard Guenther  <rguenther@suse.de>
19144
19145         PR tree-optimization/31146
19146         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
19147         argument, single_use_p.  If we have a single use that is
19148         a conversion to the definition rhs type, propagate that rhs.
19149         (forward_propagate_addr_expr): Pass single_use_p argument
19150         to forward_propagate_addr_expr_1.
19151
19152 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19153
19154         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
19155         variable.
19156
19157 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
19158
19159         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
19160         'AMD Family 10 core'.
19161
19162 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
19163
19164         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
19165         and athlon64-sse3 as improved versions of k8, opteron and athlon64
19166         with SSE3 instruction set support.
19167         * doc/invoke.texi: Likewise.
19168
19169 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
19170
19171         * config/i386/i386.c (override_options): Tuning 32-byte loop
19172         alignment for amdfam10 architecture. Increasing the max loop
19173         alignment to 24 bytes.
19174
19175 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
19176
19177         * config/m68k/constraints.md: New.
19178         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
19179         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
19180         EXTRA_CONSTRAINT): Remove.
19181         * config/m68k/m68k.md: Include constraints.md.
19182         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
19183
19184 2007-05-01  Ian Lance Taylor  <iant@google.com>
19185
19186         PR tree-optimization/31739
19187         * tree-vrp.c (vrp_val_is_max): New static function.
19188         (vrp_val_is_min): New static function.
19189         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
19190         copying the node.
19191         (set_value_range): Use vrp_val_is_{max,min}.
19192         (extract_range_from_assert): Likewise.
19193         (extract_range_from_binary_expr): Likewise.
19194         (extract_range_from_unary_expr): Likewise.
19195         (dump_value_range, vrp_meet): Likewise.
19196         (vrp_visit_phi_node): Likewise.
19197         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
19198
19199 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
19200
19201         * config/i386/gmon-sol2.c (size_t): New type.
19202         (intptr_t): Likewise.
19203         (s_textsize): Declare as size_t.
19204         (sbrk): Declare.
19205         (monstartup): Use size_t for sizes.
19206         (_mcount): Save and restore registers.
19207         (internal_mcount): Pass 0 as the first argument to monstartup
19208         in 64-bit mode.
19209         (moncontrol): Convert pointer to appropriately sized integer
19210         before passing to profil.
19211
19212 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
19213
19214         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
19215         __NO_FPRS__, not just if _SOFT_DOUBLE.
19216         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
19217         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
19218         also for E500 double.
19219         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
19220         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
19221         && !TARGET_FPRS).
19222
19223 2007-05-01  Richard Guenther  <rguenther@suse.de>
19224
19225         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
19226         is NULL.
19227
19228 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
19229
19230         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
19231
19232 2007-05-01  Jan Hubicka  <jh@suse.cz>
19233
19234         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
19235         invariant.
19236
19237 2007-05-01  Jan Hubicka  <jh@suse.cz>
19238
19239         * tree.h (maybe_fold_offset_to_component_ref): Remove.
19240         (maybe_fold_offset_to_reference): Declare.
19241         * fold-const.c (fold_unary): Do not fold
19242         (type *)&A into &A->field_of_type_and_offset_0
19243         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
19244         size is unknown, give up.
19245         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
19246         offsets.
19247         (maybe_fold_offset_to_reference): New.
19248         (maybe_fold_stmt_indirect): Use it.
19249         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
19250         * gimplify.c (gimplify_conversion): Canonicalize conversions to
19251         field references.
19252         (gimplify_expr): Likewise for plus_expr.
19253
19254 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
19255
19256         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
19257         bsi_after_labels.  Always insert statements before bsi.
19258         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
19259         * predict.c (apply_return_prediction): Check for empty blocks.
19260         * cfgexpand.c (lab_rtx_for_bb): New variable.
19261         (label_rtx_for_bb): Do not create new tree labels.
19262         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
19263         (tree_expand_cfg): Initialize lab_rtx_for_bb.
19264         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
19265         creating edges.
19266         (label_for_bb): Add field used.
19267         (update_eh_label, main_block_label): Mark the label used.
19268         (cleanup_dead_labels): Remove unused labels.
19269
19270 2007-05-01  Richard Guenther  <rguenther@suse.de>
19271
19272         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
19273         if it is not about to be set.
19274         (get_value_range): Do not pre-allocate equiv bitmap.
19275         (update_value_range): No need to clear equiv field.
19276         (add_equivalence): Change prototype to get bitmap pointer.
19277         Allocate bitmap here if it is not already.
19278         (extract_range_from_assert): Do not allocate bitmap here.
19279         Update callers to add_equivalence.
19280         (extract_range_from_ssa_name): Likewise.
19281         (get_vr_for_comparison): New static helper.
19282         (compare_name_with_value): Handle NULL equiv bitmap by
19283         peeling the first iteration of the comparison loop.
19284         Use get_vr_for_comparison.
19285         (compare_names): Handle NULL equiv bitmaps by using fake
19286         ones.  Use get_vr_for_comparison.
19287
19288 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
19289
19290         * double-int.c (mpz_set_double_int): Moved from
19291         tree-ssa-loop-niter.c.
19292         (mpz_get_double_int): Likewise; also, add option to wrap
19293         out-of-range integers.
19294         * double-int.h: New prototypes for above.
19295         * tree.c (get_static_type_bounds): Moved from
19296         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
19297         TYPE_MAX_VALUE if they exist..
19298         * tree.h: New prototype for above.
19299         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
19300         get_type_bounds calls.
19301         (mpz_set_double_int): Move to double-int.c.
19302         (get_type_bounds): Move to tree.c, rename to
19303         get_static_type_bounds.
19304         (mpz_to_double_int): Move to double-int.c, rename to
19305         mpz_get_double_int.
19306
19307 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
19308
19309         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
19310         DIV0 exception can fall through to a normal return.
19311
19312 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
19313
19314         PR middle-end/22156
19315         Temporarily revert:
19316         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
19317         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
19318         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19319         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
19320         initialize align to silence bogus warning.
19321         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19322         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
19323         all_no_warning.
19324         (struct sra_walk_fns): Remove use_all parameter from use.
19325         (sra_hash_tree): Handle BIT_FIELD_REFs.
19326         (sra_elt_hash): Don't hash bitfld blocks.
19327         (sra_elt_eq): Skip them in parent compares as well.  Handle
19328         BIT_FIELD_REFs.
19329         (sra_walk_expr): Don't maintain or pass down use_all_p.
19330         (scan_use): Remove use_all parameter.
19331         (scalarize_use): Likewise.  Re-expand assignment to
19332         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
19333         output, and re-scalarize after output.  Don't mark anything
19334         for no warning.
19335         (scalarize_ldst): Adjust.
19336         (scalarize_walk_gimple_modify_statement): Likewise.
19337         (build_element_name_1): Handle BIT_FIELD_REFs.
19338         (instantiate_element): Don't warn for any element whose parent
19339         is used as a whole.
19340         (instantiate_missing_elements_1): Return the sra_elt.
19341         (canon_type_for_field): New.
19342         (try_instantiate_multiple_fields): New.
19343         (instantiate_missing_elemnts): Use them.
19344         (mark_no_warning): Removed.
19345         (generate_one_element_ref): Handle BIT_FIELD_REFs.
19346         (REPLDUP, sra_build_elt_assignment): New.
19347         (generate_copy_inout): Use them.
19348         (generate_element_copy): Likewise.  Handle bitfld differences.
19349         (generate_element_zero): Don't recurse for blocks.  Use
19350         sra_build_elt_assignment.
19351         (generate_one_element_int): Take elt instead of var.  Use
19352         sra_build_elt_assignment.
19353         (generate_element_init_1): Adjust.
19354         (scalarize_use, scalarize_copy): Use REPLDUP.
19355         (scalarize_ldst): Move assert before dereference.
19356         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
19357
19358 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19359
19360         PR C++/31721
19361         * tree.c (reconstruct_complex_type): Reconstruct a reference
19362         correctly.
19363         Also use the same mode for the pointer as the old pointer type.
19364
19365 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
19366
19367         * doc/trouble.texi (Interoperation): Remove note about Ultrix
19368         Fortran compiler.
19369
19370 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
19371
19372         PR rtl-optimization/31676
19373         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
19374         (df_refs_record): Call it.
19375
19376 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
19377
19378         * rtl.def (SS_ABS): New code.
19379         * config/bfin/bfin.c (print_operand): New modifier 'v'.
19380         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
19381         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
19382         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
19383         (bfin_init_builtins): Define them.
19384         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
19385         (bfin_expand_builtin): ... and handle the others here.
19386         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
19387         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
19388         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
19389         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
19390         operand is only HImode.
19391
19392 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
19393
19394         * regclass.c (scan_one_insn): Remove splitting of
19395         two address insns.
19396
19397 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
19398             Nigel Stephens  <nigel@mips.com>
19399
19400         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
19401
19402 2007-04-28  Jan Hubicka  <jh@suse.cz>
19403
19404         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
19405         insn_locators_alloc instead of insn_locators_initialize;
19406         call reset_block_changes.
19407         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
19408         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
19409         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
19410         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
19411         * config/score/score.c (th_output_mi_thunk): Likewise.
19412         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
19413         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
19414         tolerate uninitialized locator info.
19415
19416         Re-apply:
19417         * function.c (init_function_start): Don't init line number info.
19418         (expand_function_end): Update.
19419         (reset_block_changes, record_block_change, finalize_block_changes,
19420         check_block_change, free_block_changes): Kill.
19421         * function.h (reset_block_changes, record_block_change,
19422         finalize_block_changes, check_block_change, free_block_changes):
19423         Remove prototypes.
19424         (struct function): Remove ib_boundaries_block.
19425         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
19426         Use curr_insn_locator to initialize locator.
19427         (emit_line_note): Remove.
19428         * cfgexpand.c (expand_gimple_cond_expr): Update.
19429         (construct_exit_block): Likewise.
19430         (tree_expand_cfg): Initialize/finalize locators.
19431         * expr.c (expand_expr_real): Update.
19432         * cfglayout.c (line_locators_locs, line_locators_lines,
19433         file_locators_locs, file_locators_files): Remove.
19434         (set_block_levels): Move to cfgexpand.c.
19435         (insn_locators_initialize): Remove.
19436         (pass_insn_locators_initialize): Remove.
19437         (locations_locators_locs, locations_locators_vals): New static vars.
19438         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
19439         Likewise.
19440         (insn_locators_alloc, insn_locators_finalize,
19441         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19442         New functions.
19443         (locator_location): New.
19444         (locator_line, locator_file): Rewrite.
19445         * rtl.h (emit_line_note): Kill.
19446         (insn_locators_alloc, insn_locators_finalize,
19447         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19448         Declare.
19449         * tree-inline.c (initialize_cfun): Do not initialize
19450         ib_boundaries_block.
19451         * passes.c (pass_insn_locators_initialize): Remove.
19452
19453 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
19454
19455         * tree-cfg.c (move_block_to_fn): Release bb from dominance
19456         info.  Update last_basic_block correctly.
19457
19458 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
19459
19460         PR target/31701
19461         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
19462         register itself to hold the offset constant.  Tell flow the use
19463         of r4 and r5 when they are used.
19464
19465 2007-04-27  Richard Guenther  <rguenther@suse.de>
19466
19467         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
19468         if we simplified anything.
19469         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
19470         warnings until we did a simplification and the stmt was not
19471         marked as TREE_NO_WARNING.
19472
19473 2007-04-27  Mike Stump  <mrs@apple.com>
19474
19475         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
19476
19477 2007-04-27  Ian Lance Taylor  <iant@google.com>
19478
19479         PR middle-end/31710
19480         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
19481         TYPE_MAX_VALUE exist, convert them to the new type.
19482
19483 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
19484
19485         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
19486         if it claims to be available.
19487         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
19488         edge is redirected.
19489         (perform_tree_ssa_dce): Always free postdominators.
19490
19491 2007-04-27  Richard Henderson  <rth@redhat.com>
19492
19493         * config/alpha/predicates.md (aligned_memory_operand): Mark
19494         as define_special_predicate.
19495         (unaligned_memory_operand, normal_memory_operand): Likewise.
19496         (reg_or_unaligned_mem_operand): Remove.
19497         (any_memory_operand): Match the documentation and check for
19498         non-renumbered pseudos during reload.
19499         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
19500         alpha_secondary_reload_class, update to new interface, make static.
19501         Handle CQImode like HImode.  Remove FP subreg check.
19502         (alpha_expand_mov): Use replace_equiv_address.
19503         (alpha_expand_mov_nobwx): Use any_memory_operand.
19504         (TARGET_SECONDARY_RELOAD): New.
19505         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
19506         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
19507         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
19508         * config/alpha/alpha.md: ... here.
19509         (RELOAD12, reloadmode): New.
19510         (movcqi): New.
19511         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
19512         Don't handle the aligned case here.
19513         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
19514         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
19515         reload_inhi_help.  Don't expect a scratch register.
19516         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
19517         reload_outhi_help.
19518         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
19519
19520 2007-04-27  Richard Guenther  <rguenther@suse.de>
19521
19522         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
19523
19524 2007-04-27  Richard Guenther  <rguenther@suse.de>
19525
19526         PR tree-optimization/30965
19527         PR tree-optimization/30978
19528         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
19529         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
19530         (find_equivalent_equality_comparison): Likewise.
19531         (simplify_cond): Likewise.
19532         (get_prop_source_stmt): New helper.
19533         (get_prop_dest_stmt): Likewise.
19534         (can_propagate_from): Likewise.
19535         (remove_prop_source_from_use): Likewise.
19536         (combine_cond_expr_cond): Likewise.
19537         (forward_propagate_comparison): New function.
19538         (forward_propagate_into_cond): Rewrite to use fold for
19539         tree combining.
19540         (tree_ssa_forward_propagate_single_use_vars): Call
19541         forward_propagate_comparison to propagate comparisons.
19542
19543 2007-04-27  Richard Guenther  <rguenther@suse.de>
19544
19545         PR tree-optimization/31715
19546         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
19547         sure to do computation on the offset in an appropriate
19548         signed type.
19549
19550 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
19551
19552         * reload.h (elimination_target_reg_p): Declare.
19553         * reload.c (find_reloads): Don't apply the reg_rtx move
19554         optimization if the SET_DEST satisfies elimination_target_reg_p.
19555         * reload1.c (elimination_target_reg_p): New function.
19556         (gen_reload): In the move/add2 fallback, make sure that op0
19557         does not overlap the destination register.
19558
19559 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
19560
19561         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
19562         transform only GIMPLE_MODIFY_STMTs.
19563         * tree-complex.c (expand_complex_operations_1): Ditto.
19564         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
19565         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
19566         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
19567         branches.
19568         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
19569         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
19570         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
19571         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
19572         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
19573         slpeel_add_loop_guard): Ditto.
19574         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
19575         * lambda-code.c (perfect_nestify): Ditto.
19576         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
19577         before the first statement.
19578         * tree-optimize.c (execute_free_datastructures): Fix comments.
19579         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
19580         * tree-flow.h (disband_implicit_edges): Declaration removed.
19581         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
19582         branches.
19583         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
19584         COND_EXPRs without gotos.
19585         (disband_implicit_edges, has_label_p): Removed.
19586         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
19587         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
19588         branches.
19589         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
19590         side effects.
19591         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
19592         also for COND_EXPRs.
19593         * cfgexpand.c (label_rtx_for_bb): New function.
19594         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
19595         Use label_rtx_for_bb to find the labels.
19596         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
19597         last block.  Detect fallthru edges.
19598
19599 2007-04-26  Ian Lance Taylor  <iant@google.com>
19600
19601         PR target/28675
19602         * reload.c (find_reloads_subreg_address): If the address was valid
19603         in the original mode but not in the new mode, reload the whole
19604         address.
19605
19606 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
19607
19608         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
19609         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
19610         (cleanup_control_expr_graph): Do not invalidate dominance info.
19611         Record altered blocks.
19612         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
19613         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
19614         cleanup_tree_cfg_bb): New functions.
19615         (remove_forwarder_block): Do not maintain the worklist of blocks.
19616         Record altered blocks.
19617         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
19618         not over whole cfg.
19619         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
19620         delete_unreachable_blocks if dominators are not available.
19621         * tree-inline.c (optimize_inline_calls): Free dominance information
19622         earlier.
19623         * tree-flow.h (remove_edge_and_dominated_blocks,
19624         cfgcleanup_altered_bbs): Altered.
19625         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
19626         blocks.
19627         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
19628         functions.
19629         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
19630         do not invalidate dominators.
19631
19632 2007-04-26  Anatoly Sokolov <aesok@post.ru>
19633
19634         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
19635         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
19636         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
19637         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
19638
19639 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
19640
19641         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
19642
19643 2007-04-26  Richard Guenther  <rguenther@suse.de>
19644
19645         PR tree-optimization/31703
19646         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
19647         the right type for the target of the bittest.
19648
19649 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
19650
19651         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
19652         ix86_sol10_return_in_memory.
19653
19654 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
19655
19656         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
19657         variables.
19658
19659 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
19660
19661         PR c++/31598
19662         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
19663
19664         PR tree-optimization/30558
19665         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
19666         clear this_state.prev_try.
19667
19668 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
19669             Mark Mitchell  <mark@codesourcery.com>
19670
19671         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
19672         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
19673         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
19674
19675 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
19676
19677         PR driver/31107
19678         * doc/invoke.texi (%:print-asm-header): Document.
19679         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
19680         and -ftarget-help.
19681         (static_spec_functions): Add print-asm-header.
19682         (main): Print a banner before the --target-help linker options.
19683         (print_asm_header_spec_function): New function.
19684
19685 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
19686
19687         PR target/31403
19688         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
19689         (movsf_ie): Likewise.
19690
19691 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
19692
19693         * doc/extend.texi ([Type Traits]): Adjust per N2255.
19694
19695 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
19696
19697         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
19698         exception for divide-by-zero.
19699         (__umodsi3, __modsi3): Likewise.
19700
19701 2007-04-25  Dirk Mueller  <dmueller@suse.de>
19702
19703         * c-typeck.c (build_compound_expr): Annotate warning()
19704         call with OPT_Wunused_value.
19705         * tree-ssa.c (warn_uninit): Annotate warning with
19706         OPT_Wunintialized.
19707         * c-common.c (handle_sentinel_attribute): Annotate warning
19708         call with OPT_Wattributes.
19709
19710 2007-04-25  Thiemo Seufer  <ths@mips.com>
19711
19712         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
19713         (mips16): Fix typo.
19714         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
19715         on to the assembler.  Improve handling of -mno-mips16.  Add handling
19716         of -mno-mips3d, -mno-dsp, -mno-dspr2.
19717         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
19718         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
19719         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
19720
19721 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
19722
19723         PR target/31680
19724         * config/i386/winnt.c (i386_pe_file_end): Strip only
19725         USER_LABEL_PREFIX when writing export name.
19726
19727 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
19728
19729         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
19730         sh/elf.h, vx-common.h and vxworks.h.
19731         * config/sh/sh.h: Include config/vxworks-dummy.h.
19732         (SUBTARGET_OVERRIDE_OPTIONS): Define.
19733         (OVERRIDE_OPTIONS): Use it.
19734         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
19735         (vxworks_picreg): New pattern.
19736         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
19737         VXWORKS_OS_CPP_BUILTINS.
19738         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
19739         to their VXWORKS_* equivalents.
19740         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
19741         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
19742         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
19743         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
19744         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
19745         -mrtp/-fPIC multilibs.
19746         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
19747         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
19748         (MULTILIB_OSDIRNAMES): Delete.
19749
19750 2007-04-25  Anatoly Sokolov <aesok@post.ru>
19751
19752         PR target/18989
19753         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
19754
19755 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
19756
19757         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
19758         rounding mode to be specified by the caller.
19759         (real_to_mpfr) Likewise.
19760         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
19761         include new arguments.
19762         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
19763
19764 2007-04-24  Ian Lance Taylor  <iant@google.com>
19765
19766         PR tree-optimization/31605
19767         * tree-vrp.c (set_value_range): Check that min and max are not
19768         both overflow infinities.
19769         (set_value_range_to_value): New static function.
19770         (extract_range_from_binary_expr): Call set_value_range_to_value.
19771         (extract_range_from_cond_expr): Likewise.
19772         (extract_range_from_expr): Likewise.
19773         (extract_range_from_unary_expr): Likewise.  Don't create a range
19774         which overflows on both sides.
19775         (vrp_meet): Check for a useless range.
19776         (vrp_visit_phi_node): If we see a constant which looks like an
19777         overflow infinity, turn off the TREE_OVERFLOW flag.
19778
19779 2007-04-24  Ian Lance Taylor  <iant@google.com>
19780
19781         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
19782
19783 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
19784
19785         PR diagnostic/25923
19786         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
19787         diagnostic message is being built.
19788         * tree-pretty-print.c (dump_generic_node): Only write the
19789         formatted text into BUFFER's stream if we are not building a
19790         diagnostic message.
19791         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
19792         dump_generic_node.
19793         * Makefile.in (toplev.o): Depend on tree-pass.h.
19794
19795 2007-04-24  Ian Lance Taylor  <iant@google.com>
19796
19797         PR tree-optimization/31602
19798         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
19799         conditionals in the copied loop header.
19800         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
19801         warnings if TREE_NO_WARNING is set.
19802         * doc/invoke.texi (Warning Options): Clarify that
19803         -Wstrict-overflow does not warn about loops.
19804
19805 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
19806
19807         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
19808         expand on the comment about _Decimal128 arguments and check the
19809         integer result of the modulus operation; for 64-bit ELF ABI, ensure
19810         that _Decimal128 argument uses even/odd register pair.
19811         (function_arg): Ditto.
19812
19813 2007-04-24  Hui-May Chang <hm.chang@apple.com>
19814
19815         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
19816         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
19817
19818 2007-04-24  Richard Guenther  <rguenther@suse.de>
19819             Olga Golovanevsky  <olga@il.ibm.com>
19820
19821         * fold-const.c (multiple_of_p): Check for bottom
19822         to be zero.
19823
19824 2007-04-24  Richard Henderson  <rth@redhat.com>
19825
19826         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
19827         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
19828         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
19829         looking for non-zero bits shifted out.  Avoid a recursive call
19830         when constructing the scalar.
19831         (__floatundisf): Likewise.
19832
19833 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
19834
19835         * dwarf2out.c (field_byte_offset): Move the existing logic
19836         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
19837         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
19838
19839 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
19840
19841         PR target/31641
19842         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
19843         length argument of 0 for memset.
19844         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
19845         unsigned shift instead of the signed variant.
19846
19847 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
19848
19849         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
19850         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
19851         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
19852         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
19853         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
19854         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
19855         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
19856         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
19857         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
19858         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
19859         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
19860         "mul<mode>3", "div<mode>3"): Insn definitions added.
19861         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
19862         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
19863         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
19864         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
19865         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
19866         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
19867         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
19868         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
19869         TARGET_FLOAT_FORMAT): Macro definitions removed.
19870         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
19871         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
19872         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
19873         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
19874         (s390_gen_rtx_const_DI): Function removed.
19875         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
19876
19877 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
19878
19879         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
19880         over an external ffs function.
19881
19882 2007-04-24  Chao-ying Fu  <fu@mips.com>
19883             Richard Sandiford  <richard@nildram.co.uk>
19884
19885         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
19886         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
19887         (smadd_widen_optab, umadd_widen_optab): Define.
19888         * optabs.c (init_optabs): Initialize smadd_widen_optab and
19889         umadd_widen_optab.
19890         * genopinit.c (optabs): Fill in smadd_widen_optab and
19891         umadd_widen_optab.
19892         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
19893         and umadd_widen_optab to implement multiply-add sequences.
19894         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
19895         (<u>maddsidi4): ...this.  Extend condition to include
19896         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
19897         of operand 0 to "ka" and use the three-operand form of madd<u>
19898         for TARGET_DSPR2.
19899         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
19900         to define_expands.
19901         * config/mips/constraints.md (ka): New register constraint.
19902
19903 2007-04-24  Jan Hubicka  <j@suse.cz>
19904
19905         Revert:
19906
19907         2007-04-23  Jan Hubicka  <jh@suse.cz>
19908         * function.c (init_function_start): Don't init line number info.
19909         (expand_function_end): Update.
19910         (reset_block_changes, record_block_change, finalize_block_changes,
19911         check_block_change, free_block_changes): Kill.
19912         * function.h (reset_block_changes, record_block_change,
19913         finalize_block_changes, check_block_change, free_block_changes):
19914         Remove prototypes.
19915         (struct function): Remove ib_boundaries_block.
19916         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
19917         Use curr_insn_locator to initialize locator.
19918         (emit_line_note): Remove.
19919         * cfgexpand.c (expand_gimple_cond_expr): Update.
19920         (construct_exit_block): Likewise.
19921         (tree_expand_cfg): Initialize/finalize locators.
19922         * expr.c (expand_expr_real): Update.
19923         * cfglayout.c (line_locators_locs, line_locators_lines,
19924         file_locators_locs, file_locators_files): Remove.
19925         (set_block_levels): Move to cfgexpand.c.
19926         (insn_locators_initialize): Remove.
19927         (pass_insn_locators_initialize): Remove.
19928         (locations_locators_locs, locations_locators_vals): New static vars.
19929         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
19930         Likewise.
19931         (insn_locators_alloc, insn_locators_finalize,
19932         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19933         New functions.
19934         (locator_location): New.
19935         (locator_line, locator_file): Rewrite.
19936         * rtl.h (emit_line_note): Kill.
19937         (insn_locators_alloc, insn_locators_finalize,
19938         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19939         Declare.
19940         * tree-inline.c (initialize_cfun): Do not initialize
19941         ib_boundaries_block.
19942         * passes.c (pass_insn_locators_initialize): Remove.
19943
19944 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
19945
19946         * doc/invoke.texi: Removed leading '-' from option index entries.
19947
19948 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
19949
19950         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
19951         Use phi_nodes_ptr.
19952         (create_phi_node): Use set_phi_nodes.
19953         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
19954         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
19955         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
19956         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
19957         (bsi_start, bsi_last): Use bb_stmt_list.
19958         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
19959         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
19960         Traverse the statements using tsi iterator.
19961         * basic-block.h (struct basic_block_def): Fields stmt_list
19962         and phi_nodes moved to ...
19963         (struct tree_bb_info): ... new structure.
19964         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
19965         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
19966         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
19967         (tree_verify_flow_info): Verify that il.tree is not set for
19968         entry and exit block.
19969         (tree_split_block): Use set_bb_stmt_list.
19970
19971 2007-04-23  Mike Stump  <mrs@apple.com>
19972
19973         * config/i386/i386.c (ix86_tune_features
19974         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
19975         nocona and core2.
19976
19977 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
19978
19979         * config/i386/i386.md (prefix_extra): New attribute.
19980         (length): Add prefix_extra.
19981
19982         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
19983         (sse2_movntv2di): Likewise.
19984         (sse2_cvtps2dq): Likewise.
19985         (sse2_cvtpd2pi): Likewise.
19986         (sse2_cvttpd2pi): Likewise.
19987         (*sse2_cvtpd2ps): Likewise.
19988         (*add<mode>3): Likewise.
19989         (sse2_ssadd<mode>3): Likewise.
19990         (sse2_usadd<mode>3): Likewise.
19991         (*sub<mode>3): Likewise.
19992         (sse2_sssub<mode>3): Likewise.
19993         (sse2_ussub<mode>3): Likewise.
19994         (*mulv8hi3): Likewise.
19995         (*smulv8hi3_highpart): Likewise.
19996         (*umulv8hi3_highpart): Likewise.
19997         (sse2_umulv2siv2di3): Likewise.
19998         (sse2_pmaddwd): Likewise.
19999         (ashr<mode>3): Likewise.
20000         (lshr<mode>3): Likewise.
20001         (ashl<mode>3): Likewise.
20002         (sse2_ashlti3): Likewise.
20003         (sse2_lshrti3): Likewise.
20004         (*umaxv16qi3): Likewise.
20005         (*smaxv8hi3): Likewise.
20006         (*uminv16qi3): Likewise.
20007         (*sminv8hi3): Likewise.
20008         (sse2_eq<mode>3): Likewise.
20009         (sse2_gt<mode>3): Likewise.
20010         (*and<mode>3): Likewise.
20011         (sse2_nand<mode>3): Likewise.
20012         (*ior<mode>3): Likewise.
20013         (*xor<mode>3): Likewise.
20014         (sse2_packsswb): Likewise.
20015         (sse2_packssdw): Likewise.
20016         (sse2_packuswb): Likewise.
20017         (sse2_punpckhbw): Likewise.
20018         (sse2_punpcklbw): Likewise.
20019         (sse2_punpckhwd): Likewise.
20020         (sse2_punpcklwd): Likewise.
20021         (sse2_punpckhdq): Likewise.
20022         (sse2_punpckldq): Likewise.
20023         (sse2_punpckhqdq): Likewise.
20024         (sse2_punpcklqdq): Likewise.
20025         (*sse2_pinsrw): Likewise.
20026         (*sse2_pextrw): Likewise.
20027         (sse2_pshufd_1): Likewise.
20028         (sse2_uavgv16qi3): Likewise.
20029         (sse2_uavgv8hi3): Likewise.
20030         (sse2_psadbw): Likewise.
20031         (sse2_pmovmskb): Likewise.
20032         (*sse2_maskmovdqu): Likewise.
20033         (*sse2_maskmovdqu_rex64): Likewise.
20034         (sse4a_extrqi): Likewise.
20035         (sse4a_extrq): Likewise.
20036         (sse3_lddqu): Set prefix_rep.
20037         (sse3_addsubv4sf3): Likewise.
20038         (sse3_haddv4sf3): Likewise.
20039         (sse3_hsubv4sf3): Likewise.
20040         (sse_cvtss2si): Likewise.
20041         (sse_cvtss2si_2): Likewise.
20042         (sse_cvtss2siq): Likewise.
20043         (sse_cvtss2siq_2): Likewise.
20044         (sse_cvttss2si): Likewise.
20045         (sse_cvttss2siq): Likewise.
20046         (sse2_cvttps2dq): Likewise.
20047         (sse3_movshdup): Likewise.
20048         (sse3_movsldup): Likewise.
20049         (sse2_cvtsd2si): Likewise.
20050         (sse2_cvtsd2si_2): Likewise.
20051         (sse2_cvtsd2siq): Likewise.
20052         (sse2_cvtsd2siq_2): Likewise.
20053         (sse2_cvttsd2si): Likewise.
20054         (sse2_cvttsd2siq): Likewise.
20055         (*sse2_cvtpd2dq): Likewise.
20056         (*sse2_cvttpd2dq): Likewise.
20057         (sse2_pshuflw_1): Likewise.
20058         (sse2_pshufhw_1): Likewise.
20059         (sse4a_insertqi): Likewise.
20060         (sse4a_insertq): Likewise.
20061         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
20062         (ssse3_phadddv4si3): Likewise.
20063         (ssse3_phaddswv8hi3): Likewise.
20064         (ssse3_phsubwv8hi3): Likewise.
20065         (ssse3_phsubdv4si3): Likewise.
20066         (ssse3_phsubswv8hi3): Likewise.
20067         (ssse3_pmaddubswv8hi3): Likewise.
20068         (ssse3_pmulhrswv8hi3): Likewise.
20069         (ssse3_pshufbv16qi3): Likewise.
20070         (ssse3_psign<mode>3): Likewise.
20071         (ssse3_palignrti): Likewise.
20072         (abs<mode>2): Likewise.
20073         (ssse3_phaddwv4hi3): Set prefix_extra.
20074         (ssse3_phadddv2si3): Likewise.
20075         (ssse3_phaddswv4hi3): Likewise.
20076         (ssse3_phsubwv4hi3): Likewise.
20077         (ssse3_phsubdv2si3): Likewise.
20078         (ssse3_phsubswv4hi3): Likewise.
20079         (ssse3_pmaddubswv4hi3): Likewise.
20080         (ssse3_pmulhrswv4hi3): Likewise.
20081         (ssse3_pshufbv8qi3): Likewise.
20082         (ssse3_psign<mode>3): Likewise.
20083         (ssse3_palignrdi): Likewise.
20084         (abs<mode>2): Likewise.
20085         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
20086         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
20087         (sse2_pmovmskb): Set mode to SI instead of V2DF.
20088
20089 2007-04-23  Nick Clifton  <nickc@redhat.com>
20090
20091         * params.def: Fix formatting of emacs local variables.
20092
20093 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
20094
20095         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
20096         move if inter-unit move isn't allowed.
20097         Don't split moving the first element of V2DI to DI to inter-unit
20098         move if inter-unit move isn't allowed.
20099
20100 2007-04-23  Richard Guenther  <rguenther@suse.de>
20101
20102         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
20103         and CDI_POST_DOMINATORS separately.
20104
20105 2007-04-23  Nick Clifton  <nickc@redhat.com>
20106
20107         * c.opt (Wformat-contains-nul): Add warning attribute.
20108
20109 2007-04-23  Jan Hubicka  <jh@suse.cz>
20110
20111         * function.c (init_function_start): Don't init line number info.
20112         (expand_function_end): Update.
20113         (reset_block_changes, record_block_change, finalize_block_changes,
20114         check_block_change, free_block_changes): Kill.
20115         * function.h (reset_block_changes, record_block_change,
20116         finalize_block_changes, check_block_change, free_block_changes):
20117         Remove prototypes.
20118         (struct function): Remove ib_boundaries_block.
20119         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
20120         Use curr_insn_locator to initialize locator.
20121         (emit_line_note): Remove.
20122         * cfgexpand.c (expand_gimple_cond_expr): Update.
20123         (construct_exit_block): Likewise.
20124         (tree_expand_cfg): Initialize/finalize locators.
20125         * expr.c (expand_expr_real): Update.
20126         * cfglayout.c (line_locators_locs, line_locators_lines,
20127         file_locators_locs, file_locators_files): Remove.
20128         (set_block_levels): Move to cfgexpand.c.
20129         (insn_locators_initialize): Remove.
20130         (pass_insn_locators_initialize): Remove.
20131         (locations_locators_locs, locations_locators_vals): New static vars.
20132         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
20133         Likewise.
20134         (insn_locators_alloc, insn_locators_finalize,
20135         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20136         New functions.
20137         (locator_location): New.
20138         (locator_line, locator_file): Rewrite.
20139         * rtl.h (emit_line_note): Kill.
20140         (insn_locators_alloc, insn_locators_finalize,
20141         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20142         Declare.
20143         * tree-inline.c (initialize_cfun): Do not initialize
20144         ib_boundaries_block.
20145         * passes.c (pass_insn_locators_initialize): Remove.
20146
20147 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20148
20149         PR middle-end/31448
20150         * expr.c (reduce_to_bit_field_precision): Handle
20151         CONST_INT rtx's.
20152
20153 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
20154
20155         PR tree-optimization/24659
20156         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
20157         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
20158         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
20159         * genopinit.c (optabs): Rename vec_pack_mod_optab
20160         to vec_pack_trunc_optab.
20161         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
20162         early for scalar floating point operands for NOP_EXPR.
20163         (vectorizable_type_promotion): Ditto.
20164         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
20165         vec_pack_trunc_optab.
20166         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
20167
20168         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
20169         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
20170         Rename from VEC_PACK_MOD_EXPR.
20171         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
20172         * expr.c (expand_expr_real_1): Ditto.
20173         * tree-inline.c (estimate_num_insns_1): Ditto.
20174         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
20175
20176         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
20177         (vec_unpacks_lo_v4sf): Ditto.
20178         (vec_pack_trunc_v2df): Ditto.
20179         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
20180         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
20181         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
20182
20183         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
20184         vec_pack_mod_v8hi.
20185         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
20186
20187         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
20188         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
20189         packing of floating point operands.
20190         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
20191         represent unpacking of floating point operands.
20192         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
20193         [vec_unpacks_hi]: Ditto.
20194         [vec_unpacks_lo]: Ditto.
20195
20196 2007-04-22  Jan Hubicka  <jh@suse.cz>
20197
20198         * final.c (rest_of_handle_final): Call
20199         targetm.asm_out.constructor/targetm.asm_out.destructor
20200         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
20201         proper priority via decl_*_priority_insert.
20202         * c-common.c (c_expand_body): Likewise.
20203
20204 2007-04-22  Richard Guenther  <rguenther@suse.de>
20205
20206         PR tree-optimization/29789
20207         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
20208         (rewrite_reciprocal): New helper split out from
20209         determine_invariantness_stmt.
20210         (rewrite_bittest): Likewise.
20211         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
20212         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
20213         is not.
20214
20215 2007-04-22  Revital Eres  <eres@il.ibm.com>
20216
20217         * loop-unroll.c (var_to_expand): New field to support also
20218         insns of the form x = something + x.
20219         (analyze_insn_to_expand_var): Use it.
20220         (expand_var_during_unrolling): Likewise.
20221
20222 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
20223
20224         * predict.c: Include pointer-set.h.
20225         (bb_predictions): New variable.
20226         (tree_predicted_by_p, tree_predict_edge,
20227         remove_predictions_associated_with_edge): Use bb_predictions map
20228         instead of bb->predictions.
20229         (clear_bb_predictions, assert_is_empty): New functions.
20230         (combine_predictions_for_bb): Use bb_predictions map.  Call
20231         clear_bb_predictions.
20232         (tree_estimate_probability): Create and free bb_predictions map.
20233         * Makefile.in (predict.o): Add pointer-set.h dependency.
20234         * basic-block.h (struct basic_block_def): Remove predictions
20235         field.
20236         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
20237
20238 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
20239
20240         PR target/31480
20241         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
20242         is null.
20243
20244 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20245
20246         * timevar.c (timevar_print): Change reference of --disable-checking to
20247         --enable-checking=release.  Also warn if assert checking is disabled.
20248
20249 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20250
20251         PR C/30265
20252         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
20253         decl as addressable if the compound literal was marked as
20254         addressable.
20255         Mark the decl as a gimple register if it is a complex or
20256         vector decl and does not live in memory.
20257
20258 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20259
20260         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
20261         (GENERIC_NEXT): New function macro.
20262         (PHI_CHAIN): Use phi_node's new chain variable.
20263         (tree_phi_node): Change tree_common to tree_base
20264         and add the chain field.
20265         * tree-phinodes.c (make_phi_node): Don't set
20266         TREE_TYPE on the new node.
20267         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
20268         instead of checking GIMPLE_TUPLE_P in chain_next.
20269         * tree-vect-transform.c
20270         (get_initial_def_for_induction): Look at
20271         PHI_RESULT_TREE for the type of the phi node.
20272         (update_vuses_to_preheader): Use PHI_CHAIN
20273         instead of TREE_CHAIN on the phi node.
20274         * tree-ssa-structalias.c (compute_points_to_sets):
20275         Likewise.
20276         (ipa_pta_execute): Likewise.
20277
20278 2007-04-21  Richard Guenther  <rguenther@suse.de>
20279
20280         PR middle-end/31136
20281         * fold-const.c (fold_unary): Call fold_convert_const on the
20282         original tree.
20283
20284 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
20285
20286         * gcse.c (store_killed_in_insn): Handle PARALLELs.
20287         (store_killed_in_pat): New.
20288
20289 2007-04-20  Richard Henderson  <rth@redhat.com>
20290
20291         PR target/31628
20292         * config/i386/i386.c (type_has_variadic_args_p): Look for any
20293         TREE_LIST with a void_type_node value, not void_list_node exactly.
20294
20295 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
20296
20297         * doc/standards.texi: Re-arrange into language-specific
20298         subsections. Add a C++ section, documenting which standards we
20299         support.
20300
20301 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
20302
20303         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
20304         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
20305
20306 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
20307
20308         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
20309         ecrti.o and crtbegin.o.
20310         (LIB_DEFAULT_SPEC): Include -lc.
20311         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
20312
20313 2007-04-20  Richard Henderson  <rth@redhat.com>
20314
20315         PR target/28623
20316         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
20317         argument; update all callers.
20318         (get_unaligned_offset): New.
20319         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
20320         get_unaligned_address, just pass on the address directly.
20321         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
20322         the subreg in the helper patterns.
20323         (unaligned_extendqidi_le): Use get_unaligned_offset.
20324         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
20325         (unaligned_extendhidi_be): Likewise.
20326         (unaligned_extendhidi): Tidy.
20327         * config/alpha/alpha-protos.h: Update.
20328
20329 2007-04-20  Richard Henderson  <rth@redhat.com>
20330
20331         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
20332         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
20333         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
20334         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
20335         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
20336         (CPP_SPEC): Don't include %(cpp_subtarget).
20337         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
20338         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
20339         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
20340
20341 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
20342
20343         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
20344         for __builtin_ia32_cmpordss.
20345
20346         PR tree-optimization/31632
20347         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
20348         and arg1 for optimizations of comparison against min/max values.
20349         Fold arg0 to arg1's type for optimizations of comparison against
20350         min+1 and max-1 values.
20351
20352 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
20353
20354         * reload.c (combine_reloads): When trying to use a dying register,
20355         check whether it's uninitialized and don't use if so.
20356
20357 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
20358
20359         * fold-const.c: Remove prototypes for native_encode_expr and
20360         native_interpret_expr.
20361         (native_encode_expr): Make non-static.
20362         (native_interpret_expr): Likewise.
20363         * tree.h: Add prototypes for the above.
20364
20365 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
20366
20367         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
20368         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
20369         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
20370         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
20371         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
20372         Add length attributes.
20373
20374 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
20375
20376         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
20377         not that it is 1.
20378
20379         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
20380         __STDC_WANT_DEC_FP__.
20381
20382 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
20383
20384         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
20385         for long double compatibility.
20386         * configure: Regenerate.
20387
20388 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
20389
20390         PR rtl-optimization/29841
20391         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
20392         trap instructions.
20393         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
20394         that may cause control flow transfer from being moved.
20395
20396 2007-04-18  Jan Hubicka  <jh@suse.cz>
20397
20398         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
20399         types.
20400
20401 2007-04-18  Eric Christopher  <echristo@apple.com>
20402
20403         * config/rs6000/darwin.md (load_macho_picbase): Use link register
20404         only. Update operands.
20405         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
20406         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
20407         link register to pic register.
20408
20409 2007-04-18  Dirk Mueller  <dmueller@suse.de>
20410
20411         PR diagnostic/31227
20412         * tree-vrp.c (search_for_addr_array): New.
20413         (check_array_bounds): Suppress warning about
20414         address taken of array refs if its not de-referenced.
20415
20416 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
20417
20418         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
20419         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
20420
20421         * tree-vectorizer.h (NITERS_KNOWN_P): New.
20422         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
20423         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
20424
20425         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
20426         dump print.
20427         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
20428         print message.
20429         (vect_analyze_scalar_cycles): Fix indentation.
20430         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
20431         (vect_mark_relevant): Include phis in relevance analysis.
20432
20433         * tree-vect-transform.c (vect_transform_loop): Add an assert.
20434
20435 2007-04-18  Anatoly Sokolov <aesok@post.ru>
20436
20437         * config/avr/avr.c (ptrreg_to_str): Replace error() with
20438         output_operand_lossage().
20439
20440 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
20441
20442         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
20443         the unused code for reduction without adjust-in-epilog to simplify the
20444         function.
20445
20446 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
20447
20448         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
20449         (S390_TDC_NEGATIVE_ZERO): New constant.
20450         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
20451         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
20452         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
20453         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
20454         (S390_TDC_POSITIVE_INFINITY): New constant.
20455         (S390_TDC_NEGATIVE_INFINITY): New constant.
20456         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
20457         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
20458         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
20459         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
20460         (S390_TDC_INFINITY): New constant.
20461         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
20462         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
20463         optimization for UNSPEC_CCZ_TO_INT.
20464         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
20465         ("*ccz_to_int"): New insn.
20466         ("isinf<mode>2"): New insn.
20467         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
20468         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
20469         (UNSPEC_CCZ_TO_INT): New constant.
20470
20471 2007-04-18  Richard Guenther  <rguenther@suse.de>
20472
20473         PR tree-optimization/19431
20474         PR tree-optimization/21463
20475         * tree-pass.h (pass_phiprop): Declare.
20476         * passes.c (init_optimization_passes): New phiprop pass.
20477         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
20478         (phivn_valid_p): New helper function.
20479         (phiprop_insert_phi): Likewise.
20480         (propagate_with_phi): Likewise.
20481         (tree_ssa_phiprop): New propagator propagating loads
20482         through phi nodes if profitable.
20483
20484 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
20485
20486         * tree-vect-analyze.c (process_use): New function.
20487         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
20488         Check phis in all bbs.
20489         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
20490         assert.
20491
20492 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
20493
20494         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
20495         we use REG_EQUAL.
20496
20497 2007-04-17  Anatoly Sokolov <aesok@post.ru>
20498
20499         PR target/30483
20500         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
20501         error().
20502
20503 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
20504
20505         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
20506         on "0".
20507         (sse_vmmulv4sf3): Likewise.
20508         (sse2_vmaddv2df3): Likewise.
20509         (sse2_vmmulv2df3): Likewise.
20510
20511 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
20512
20513         PR rtl-optimization/31360
20514         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
20515         (target_reg_cost): New.
20516         (init_set_costs): Initialize target_reg_cost.  Add comments
20517         regarding the rationale of the costs.
20518         (global_cost_for_size): Renamed to...
20519         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
20520         of register pressure.
20521         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
20522         estimate_reg_pressure_cost.  Add number of ivs.
20523         (determine_set_costs): Dump target_reg_cost.
20524         * loop-invariant.c (gain_for_invariant): Use
20525         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
20526         (best_gain_for_invariant, find_invariants_to_move): Remove
20527         n_inv_uses.
20528         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
20529         (target_reg_cost): Declare.
20530         (global_cost_for_size): Declaration removed.
20531         (estimate_reg_pressure_cost): Declare.
20532
20533 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
20534
20535         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
20536         regnos into even/odd register pairs.
20537         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
20538         TDmode similar to the other floating point modes.
20539         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
20540         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
20541         define_expand's.
20542         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
20543         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
20544         (movdd_hardfloat64): Use TARGET_MFPGPR.
20545
20546 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
20547
20548         * reload1.c (delete_output_reload): Don't count output in n_inherited.
20549
20550         Revert
20551         2005-01-05  Richard Henderson  <rth@redhat.com>
20552         PR rtl-opt/10692
20553         * reload1.c (do_input_reload): Restrict the optimization deleteing
20554         a previous output reload to RELOAD_FOR_INPUT.
20555
20556 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
20557
20558         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
20559         induc_vec_info_type.
20560         (vectorizable_induction): New function declaration.
20561         * tree-vect-transform.c (get_initial_def_for_induction): No need to
20562         check if already vectorized.  Find first place in BB where new stmts
20563         can be inserted.  Takes only one argument.
20564         (vectorizable_induction): New function.
20565         (vect_transform_stmt): Add case for induc_vec_info_type to call
20566         vectorizable_induction.
20567         (vect_transform_loop): Consider phis for vectorization.
20568         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
20569         condition.
20570         (analyze_operations): Call vectorizable_induction when analyzing phis.
20571         Fix comment.
20572         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
20573         (vect_mark_relevant): Include phis in relevance analysis.
20574         (vect_mark_stmts_to_be_vectorize): Likewise.
20575         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
20576
20577 2007-04-16  Lawrence Crowl  <crowl@google.com>
20578
20579         * doc/invoke.texi (Debugging Options): Add documentation for the
20580         -femit-struct-debug options -femit-struct-debug-baseonly,
20581         -femit-struct-debug-reduced, and
20582         -femit-struct-debug-detailed[=...].
20583
20584         * c-opts.c (c_common_handle_option): Add
20585         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
20586         and OPT_femit_struct_debug_detailed_.
20587         * c.opt: Add specifications for
20588         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
20589         and -femit-struct-debug-detailed[=...].
20590         * opts.c (set_struct_debug_option): Parse the
20591         -femit-struct-debug-... options.
20592         * opts.c (matches_main_base, main_input_basename,
20593         main_input_baselength, base_of_path, matches_main_base): Add
20594         variables and functions to compare header base name to compilation
20595         unit base name.
20596         * opts.c (should_emit_struct_debug): Add to determine to emit a
20597         structure based on the option.
20598         (dump_struct_debug) Also disabled function to debug this
20599         function.
20600         * opts.c (handle_options): Save the base name of the
20601         compilation unit.
20602
20603         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
20604         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
20605         This hook indicates if a type is generic.  Set it by default
20606         to "never generic".
20607         * langhooks.h (struct lang_hooks_for_types): Add a new hook
20608         to determine if a struct type is generic or not.
20609         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
20610         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
20611         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
20612         with live C++ hook.
20613
20614         * flags.h (enum debug_info_usage): Add an enumeration to describe
20615         a program's use of a structure type.
20616         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
20617         to indicate the program's usage of the type.  Filter structs based
20618         on the -femit-struct-debug-... specification.
20619         (gen_type_die): Split into two routines, gen_type_die and
20620         gen_type_die_with_usage.  gen_type_die is now a wrapper
20621         that assumes direct usage.
20622         (gen_type_die_with_usage): Replace calls to gen_type_die
20623         with gen_type_die_with_usage adding the program usage of
20624         the referenced type.
20625         (dwarf2out_imported_module_or_decl): Suppress struct debug
20626         information using should_emit_struct_debug when appropriate.
20627
20628 2007-04-16  Ian Lance Taylor  <iant@google.com>
20629
20630         PR tree-optimization/31522
20631         * tree-vrp.c (vr_phi_edge_counts): New static variable.
20632         (vrp_initialize): Allocate vr_phi_edge_counts.
20633         (vrp_visit_phi_node): Don't push to infinity if we saw a new
20634         executable edge.  Drop test for all constants.
20635         (vrp_finalize): Free vrp_phi_edge_counts.
20636
20637         * doc/cpp.texi (Common Predefined Macros): Clarify description of
20638         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
20639
20640         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
20641         predecessors at head rather than tail.
20642
20643 2007-04-16  Matthias Klose  <doko@debian.org>
20644
20645         * config/alpha/linux.h (CPP_SPEC): Define.
20646         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
20647
20648 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
20649
20650         * function.h: Remove sequence_stack extern declaration.
20651
20652 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
20653
20654         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
20655         TARGET_FIDOA.
20656         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
20657         defined.
20658
20659 2007-04-16  Anatoly Sokolov <aesok@post.ru>
20660
20661         * config/avr/avr.c (avr_arch_types): Rearranging  array.
20662         (enum avr_arch): Add.
20663         (avr_mcu_types): Use avr_arch enumeration constants instead of
20664         numbers.
20665         * config/avr/avr.h (LINK_SPEC): Simplify.
20666
20667 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
20668
20669         * config/m68k/m68k.c (m68k_libcall_value,
20670         m68k_function_value): Use macros for register names more.
20671
20672         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
20673         instead.
20674         (M68K_REGNAME): Use A6_REG.
20675         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
20676
20677 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20678
20679         PR middle-end/28071
20680         * sched-int.h (struct deps): Split field 'pending_lists_length' into
20681         'pending_read_list_length' and 'pending_write_list_length'.  Update
20682         comment.
20683         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
20684         to handle two length counters instead of one.  Update all uses.
20685         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
20686         two length counters instead of one.
20687         * sched-rgn.c (propagate_deps): Update to handle two length counters
20688         instead of one.
20689
20690 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
20691
20692         PR target/31582
20693         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
20694         copy of source, pass it to ix86_expand_vector_set and return
20695         it as target.
20696
20697 2007-04-16  David Ung  <davidu@mips.com>
20698             Joseph Myers  <joseph@codesourcery.com>
20699
20700         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
20701         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
20702         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
20703         Add 74K processor information.
20704         * config/mips/mips.md: Include 74k.md.
20705         (cpu): Add 74kc,74kf,74kx.
20706         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
20707         * config/mips/74k.md: New.
20708         * doc/invoke.texi (MIPS Options): Document 74K support.
20709
20710 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
20711
20712         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
20713         vectorizable_* functions.
20714         * tree-vect-transform.c (vectorizable_call): Add check for
20715         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
20716         (vectorizable_store): likewise.
20717         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
20718         Add comments.
20719         (vectorizable_operation, vectorizable_type_demotion): Likewise.
20720         (vectorizable_type_promotion, vectorizable_load): Likewise.
20721         (vectorizable_live_operation, vectorizable_condition): Likewise.
20722         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
20723         STMT_VINFO_LIVE_P.
20724         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
20725
20726 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
20727
20728         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
20729         register numbers more.
20730         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
20731         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
20732         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
20733         FUNCTION_VALUE_REGNO_P): Likewise.
20734         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
20735         STATIC_CHAIN_REGNUM): Likewise.
20736         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
20737         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
20738         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
20739         * config/m68k/m68k.md (FP_REG): New.
20740
20741 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
20742
20743         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
20744         alignment on fido.
20745
20746 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
20747
20748         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
20749         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
20750         comment typos.
20751
20752 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
20753
20754         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
20755         cold loops.
20756
20757 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20758
20759         PR c/31520
20760         * c-decl.c (finish_decl): Grab the type of the decl after the call
20761         to store_init_value.
20762
20763 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
20764
20765         * common.opt (fforward-propagate): Fix "Optimization" annotation.
20766
20767 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
20768
20769         PR c++/25874
20770         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
20771         dominators, post dominators and cleanup cfg before returning.
20772
20773 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
20774
20775         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
20776         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
20777
20778 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
20779
20780         * config.gcc: Recognize fido.
20781         * config/m68k/m68k-devices.def (fidoa): New.
20782         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
20783         __mfido__.
20784         (FL_FIDOA, TARGET_FIDOA): New.
20785         * config/m68k/m68k.opt (mfidoa): New.
20786
20787 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20788
20789         PR middle-end/31322
20790         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
20791         when a personality function is used.
20792
20793 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
20794
20795         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
20796
20797 2007-04-13  Mike Stump  <mrs@apple.com>
20798
20799         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
20800         we can...
20801         * config/darwin.opt (fapple-kext): Make C++ only.
20802         * config/darwin.c (darwin_override_options): Remove code to ensure
20803         -fapple-kext is given for C++ only.
20804
20805 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
20806
20807         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
20808         * config/mips/mips.c (override_options): Call
20809         SUBTARGET_OVERRIDE_OPTIONS, if defined.
20810
20811 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
20812
20813         * config/i386/i386.opt (msvr3-shlib): Removed.
20814
20815         * doc/invoke.texi: Remove -msvr3-shlib.
20816
20817 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
20818
20819         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
20820         with "popcnt" instruction.
20821
20822 2007-04-13  Richard Guenther  <rguenther@suse.de>
20823
20824         PR tree-optimization/21258
20825         * tree-vrp.c (compare_case_labels): New helper.
20826         (find_switch_asserts): New function.
20827         (find_assert_locations): Call it for SWITCH_EXPRs.
20828
20829 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
20830
20831         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
20832         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
20833         check is now implied in X87_FLOAT_MODE_P.
20834         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
20835         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
20836         (fix_trunc<mode>_i386_fisttp): Ditto.
20837         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
20838         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
20839         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
20840         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
20841         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
20842         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
20843         (unnamed_splitters): Ditto.
20844         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
20845         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
20846         FIRST_SSE_REG for local functions when SSE math is enabled or
20847         for functions with sseregparm attribute.
20848         (standard_80387_constant_p): Return -1 if mode is not
20849         X87_FLOAT_MODE_P.
20850         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
20851         (ix86_expand_compare): Ditto.
20852         (ix86_expand_carry_flag_compare): Ditto.
20853         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
20854         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
20855         DECIMAL_FLOAT_MODE_P.
20856         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
20857         of SCALAR_FLOAT_MODE_P.
20858         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
20859         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
20860         checks before FLOAT_MODE_P.
20861         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
20862         before FLOAT_MODE_P.
20863         [DIV]: Ditto.
20864         [NEG]: Ditto.
20865         [ABS]: Ditto.
20866         [SQRT]: Ditto.
20867         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
20868
20869 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
20870             Charles Wilson  <libtool@cwilson.fastmail.fm>
20871
20872         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
20873         (libgcc.mvars): Don't depend on them.
20874         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
20875         * exec-tool.in: New.
20876
20877 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
20878
20879         * doc/invoke.text (--help): Document --help=common.
20880
20881 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
20882
20883         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
20884
20885 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20886
20887         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
20888         * genemit.c (main): Emit #include "integrate.h".
20889         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
20890         (LOADGP_RTP): New mips_loadgp_style.
20891         * config/mips/mips.h: Include config/vxworks-dummy.h.
20892         (TARGET_RTP_PIC): New macro.
20893         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
20894         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
20895         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
20896         for TARGET_RTP_PIC.
20897         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
20898         -mvxworks-pic when using -mrtp and a PIC option.
20899         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
20900         for RTP PIC.
20901         (mips_symbolic_constant_p, mips_symbolic_address_p)
20902         (mips_symbol_insns): Handle SYMBOL_HALF.
20903         (override_options): Warn about -G and -mrtp being used together.
20904         Initialize mips_lo_relocs[SYMBOL_HALF].
20905         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
20906         (mips_emit_loadgp): Handle LOADGP_RTP.
20907         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
20908         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
20909         (tablejump): Handle function-relative case table entries if
20910         TARGET_RTP_PIC.
20911         * config/mips/predicates.md (symbol_ref_operand): New predicate.
20912
20913 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20914
20915         * config/mips/mips.md (load_call<mode>): Allow any general register.
20916         destination.
20917         (sibcall_value_internal, sibcall_value_multiple_internal)
20918         (call_value_internal, call_value_split, call_value_multiple_internal)
20919         (call_value_multiple_split): Remove constraints from operand 0.
20920
20921 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20922
20923         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
20924         rather than loadgp_noshared.
20925         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
20926         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
20927         gen_loadgp.
20928         * config/mips/mips.md (loadgp): Rename to...
20929         (loadgp_newabi): ...this.
20930         (loadgp_noshared): Rename to...
20931         (loadgp_absolute): ...this.
20932
20933 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20934
20935         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
20936         false for locally-binding symbols.
20937         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
20938
20939 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20940
20941         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
20942         (SYMBOL_GOT_PAGE_OFST): ...this.
20943         (SYMBOL_GOT_GLOBAL): Rename to...
20944         (SYMBOL_GOT_DISP): ...this.
20945         (SYMBOL_GOTOFF_GLOBAL): Rename to...
20946         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
20947         * config/mips/mips.c (mips_global_symbol_p): New function.
20948         (mips_symbol_binds_local_p): Likewise.
20949         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
20950         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
20951         mips_global_symbol_p and mips_symbol_binds_local_p.
20952         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
20953         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
20954         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
20955         SYMBOL_GOTOFF_DISP.
20956         (mips_ok_for_lazy_binding_p): New function.
20957         (mips_load_call_address, mips_expand_call): Use it.
20958         (mips_dangerous_for_la25_p): Likewise.
20959         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
20960         (*got_disp<mode>): Use got_disp_operand instead of
20961         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
20962         SYMBOL_GOTOFF_GLOBAL.
20963         (*got_page<mode>): Use got_page_ofst_operand instead of
20964         local_got_operand.
20965         * config/mips/predicates.md (const_call_insn_operand): Use
20966         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
20967         (global_got_operand): Rename to...
20968         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
20969         SYMBOL_GOT_GLOBAL.
20970         (local_got_operand): Rename to...
20971         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
20972         of SYMBOL_GOT_LOCAL.
20973
20974 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
20975
20976         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
20977         TARGET_CALL_CLOBBERED_GP.
20978         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
20979         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
20980         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
20981         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
20982         of TARGET_ABICALLS && !TARGET_NEWABI.
20983         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
20984         * config/mips/mips.c (mips_load_call_address): Check
20985         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
20986         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
20987         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
20988         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
20989         TARGET_ABICALLS && TARGET_NEWABI.
20990         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
20991         TARGET_ABICALLS.
20992         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
20993         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
20994         TARGET_ABICALLS && TARGET_NEWABI.
20995         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
20996         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
20997         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
20998         whether indirect calls must use $25.
20999         (mips_extra_live_on_entry): Check TARGET_GOT instead of
21000         TARGET_ABICALLS.
21001         * config/mips/mips.md (jal_macro): Check flag_pic and
21002         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
21003         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
21004         instead of TARGET_ABICALLS.
21005         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
21006         TARGET_ABICALLS && TARGET_OLDABI.
21007         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
21008         (sibcall): In the comment above the define_insn, mention
21009         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
21010         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
21011         instead of TARGET_ABICALLS.
21012
21013 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
21014
21015         * doc/md.texi (Blackfin family constraints): Document PA and PB.
21016         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
21017         (MACFLAGS_MATCH_P): New macro.
21018         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
21019         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
21020         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
21021         the other MACFLAG constants.
21022         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
21023         (flag_machi): Tighten constraints.  Renumber some of the operands.
21024         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
21025         output template.
21026         (flag_machi_parts_acconly): New pattern.
21027         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
21028         used.
21029         (flag_macinit1hi): Tighten constraints.
21030         (flag_mul_macv2hi_parts_acconly): New pattern.
21031
21032         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
21033         Use a more efficient implementation.
21034         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
21035         inline sequences when not optimizing for size.
21036
21037         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
21038         movhi_high2low): Delete, merge functionality into...
21039         (packv2hi): ... this pattern.
21040
21041         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
21042         * config/bfin/bfin.opt (msim): New option.
21043         (mcpu=): New option.
21044         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
21045         (bfin_cpu_t): Typedef of enum bfin_cpu.
21046         (bfin_cpu_type): New declaration.
21047         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
21048         -msim and -mcpu= options.
21049         (LIB_SPEC): Likewise.
21050         * config/bfin/bfin.c (bfin_cpu_type): Define.
21051         (bfin_handle_option): Handle -mcpu= option.
21052         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
21053         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
21054         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
21055
21056 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21057
21058         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
21059         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
21060         (powerpc-wrs-vxworksae): Use ${tm_file}.
21061         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
21062         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
21063         * config/i386/vx-common.h: New file.
21064
21065 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21066
21067         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
21068         of crt0.o%s.
21069
21070 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
21071
21072         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
21073         ldxtr.
21074
21075 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
21076
21077         PR c++/31078
21078         PR c++/31103
21079         * c-common.c (c_build_qualified_type): Set canonical type
21080         appropriately.
21081
21082 2007-04-12  Richard Guenther  <rguenther@suse.de>
21083
21084         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
21085         lower bound and element size if lower bound is not zero
21086         or either of the ARRAY_REF operands is set.
21087
21088 2007-04-12  Richard Guenther  <rguenther@suse.de>
21089
21090         PR tree-optimization/24689
21091         PR tree-optimization/31307
21092         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
21093         indices by value.
21094         * gimplify.c (canonicalize_addr_expr): To be consistent with
21095         gimplify_compound_lval only set operands two and three of
21096         ARRAY_REFs if they are not gimple_min_invariant.  This makes
21097         it never at this place.
21098         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
21099
21100 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21101
21102         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
21103         null before emitting a .nsubspa directive.
21104
21105 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
21106
21107         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
21108         need_to_partition_p if there are no memory statements in the
21109         function.
21110
21111 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
21112
21113         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
21114         (gcd_of_steps_may_divide_p): New function.
21115         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
21116
21117 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
21118
21119         * reload.c (find_reloads_toplev, find_reloads_address,
21120         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
21121         not a pointer equality test, to decide if we need to call
21122         push_reg_equiv_alt_mem.
21123
21124 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
21125
21126         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
21127         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
21128         New.
21129         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
21130
21131 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
21132
21133         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
21134         vector to be positive.
21135
21136 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
21137
21138         PR 30735
21139         PR 31090
21140         * doc/invoke.texi: Document --params max-aliased-vops and
21141         avg-aliased-vops.
21142         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
21143         debug_memory_partitions): Move to tree-flow.h
21144         * params.h (AVG_ALIASED_VOPS): Define.
21145         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
21146         users.
21147         (mp_info_t): Likewise.
21148         (get_mem_sym_stats_for): New.
21149         (set_memory_partition): Move from tree-flow-inline.h.
21150         (mark_non_addressable): Only clear the set of symbols for the
21151         partition if it exists.
21152         (dump_memory_partitions): Move from tree-ssa-operands.c
21153         (debug_memory_partitions): Likewise.
21154         (need_to_partition_p): New.
21155         (dump_mem_ref_stats): New.
21156         (debug_mem_ref_stats): New.
21157         (dump_mem_sym_stats): New.
21158         (debug_mem_sym_stats): New.
21159         (update_mem_sym_stats_from_stmt): New.
21160         (compare_mp_info_entries): New.
21161         (mp_info_cmp): Call it.
21162         (sort_mp_info): Change argument to a list of mem_sym_stats_t
21163         objects.
21164         (get_mpt_for): Move from tree-ssa-operands.c.
21165         (find_partition_for): New.
21166         (create_partition_for): Remove.
21167         (estimate_vop_reduction): New.
21168         (update_reference_counts): New.
21169         (build_mp_info): New.
21170         (compute_memory_partitions): Refactor.
21171         Document new heuristic.
21172         Call build_mp_info, update_reference_counts,
21173         find_partition_for and estimate_vop_reduction.
21174         (compute_may_aliases): Populate virtual operands before
21175         calling debugging dumps.
21176         (delete_mem_sym_stats): New.
21177         (delete_mem_ref_stats): New.
21178         (init_mem_ref_stats): New.
21179         (init_alias_info): Call it.
21180         (maybe_create_global_var): Remove alias_info argument.
21181         Get number of call sites and number of pure/const call sites
21182         from gimple_mem_ref_stats().
21183         (dump_alias_info): Call dump_memory_partitions first.
21184         (dump_points_to_info_for): Show how many times a pointer has
21185         been dereferenced.
21186         * opts.c (decode_options): For -O2 set --param
21187         max-aliased-vops to 500.
21188         For -O3 set --param max-aliased-vops to 1000 and --param
21189         avg-aliased-vops to 3.
21190         * fortran/options.c (gfc_init_options): Remove assignment to
21191         MAX_ALIASED_VOPS.
21192         * tree-flow-inline.h (gimple_mem_ref_stats): New.
21193         * tree-dfa.c (dump_variable): Dump memory reference
21194         statistics.
21195         Dump NO_ALIAS* settings.
21196         (referenced_var_lookup): Tidy.
21197         (mem_sym_stats): New.
21198         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
21199         and ORIG are different SSA names for a memory partition.
21200         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
21201         * tree-flow.h (struct mem_sym_stats_d): Define.
21202         (mem_sym_stats_t): Define.
21203         (struct mem_ref_stats_d): Define.
21204         (struct gimple_df): Add field mem_ref_stats.
21205         (enum noalias_state): Define.
21206         (struct var_ann_d): Add bitfield noalias_state.
21207         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
21208         debug_mem_ref_stats, debug_memory_partitions,
21209         debug_mem_sym_stats): Declare.
21210         * tree-ssa-structalias.c (update_alias_info): Update call
21211         sites, pure/const call sites and asm sites in structure
21212         returned by gimple_mem_ref_stats.
21213         Remove local variable IS_POTENTIAL_DEREF.
21214         Increase NUM_DEREFS if the memory expression is a potential
21215         dereference.
21216         Call update_mem_sym_stats_from_stmt.
21217         If the memory references memory, call
21218         update_mem_sym_stats_from_stmt for all the direct memory
21219         symbol references found.
21220         (intra_create_variable_infos): Set noalias_state field for
21221         pointer arguments according to the value of
21222         flag_argument_noalias.
21223         * tree-ssa-structalias.h (struct alias_info): Remove fields
21224         num_calls_found and num_pure_const_calls_found.
21225         (update_mem_sym_stats_from_stmt): Declare.
21226         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
21227         Set default value to 100.
21228         (PARAM_AVG_ALIASED_VOPS): Define.
21229
21230 2007-04-11  Richard Guenther  <rguenther@suse.de>
21231
21232         PR middle-end/31530
21233         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
21234         a * -b + c as c - a * b if we honor sign dependent rounding.
21235
21236 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
21237
21238         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
21239         bfin_expand_strmov.
21240         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
21241         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
21242         variables.
21243         (initialize_trampoline): Don't use old-style function definition.
21244         (bfin_secondary_reload): Mark IN_P argument as unused.
21245
21246 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
21247
21248         PR tree-optimization/31343
21249         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
21250         (build_polynomial_chrec): Return a scalar when the evolution is zero.
21251         * testsuite/gcc.dg/vect/pr31343.c: New.
21252
21253 2007-04-10  Eric Christopher  <echristo@apple.com>
21254
21255         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
21256         * config/i386/i386.md (*cmpfp0): Use.
21257         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
21258         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
21259         (fix_trunc<mode>_i386_fisttp): Ditto.
21260         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
21261         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
21262         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
21263         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
21264         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
21265         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
21266         (unnamed_splitters): Ditto.
21267         * config/i386/i386.c (output_fix_trunc): Assert that
21268         we're not being passed a TFmode operand.
21269
21270 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
21271
21272         PR tree-optimization/31526
21273         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
21274         n_basic_blocks to find newly added blocks.
21275
21276 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
21277
21278         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
21279         alternative.
21280         (fix_trunc<mode>si_sse): Ditto.
21281         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
21282         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
21283         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
21284         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
21285         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
21286         expander using SSEMODEF mode macro.
21287         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
21288         expander using SSEMODEF mode macro.
21289         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
21290         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
21291         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
21292         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
21293         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
21294         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
21295         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
21296         Macroize insn using X87MODEF mode macro.
21297
21298 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
21299
21300         * config/i386/sse.md (sse2_pinsrw): Removed.
21301         (sse2_pextrw): Renamed to ...
21302         (*sse2_pextrw): This.
21303
21304 2007-04-09  Jan Hubicka  <jh@suse.cz>
21305
21306         PR target/27869
21307         * config/i386/sse.md
21308         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
21309         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
21310         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
21311         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
21312
21313 2007-04-09  Jan Hubicka  <jh@suse.cz>
21314
21315         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
21316         multiple fields of union.
21317
21318 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
21319
21320         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
21321         (create_preheaders): Check that loops are available.
21322         (fix_loop_structure): Clean up, improve comments.
21323         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
21324         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
21325         state flags.
21326         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
21327         * predict.c (tree_estimate_probability): Do not call
21328         calculate_dominance_info.  Call create_preheaders.
21329         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
21330         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
21331         flags.
21332         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
21333         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
21334         * tree-cfg.c (tree_split_edge): Make an assert more precise.
21335         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
21336         arguments.
21337
21338 2007-04-08  Jan Hubicka  <jh@suse.cz>
21339
21340         * tree.h (maybe_fold_offset_to_component_ref): Declare.
21341         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
21342         * fold-const.c (fold_unary): Use it.
21343
21344 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21345
21346         * varasm.c (assemble_variable): Remove call to
21347         lang_hooks.decls.prepare_assemble_variable.
21348         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
21349         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
21350         * langhooks.h (lang_hooks_for_decls): Remove
21351         prepare_assemble_variable.
21352
21353 2007-04-08  Mike Stump  <mrs@apple.com>
21354
21355         * config/i386/i386.c: Use inc/dec on Core2.
21356
21357 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
21358
21359         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
21360         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
21361         lhd_tree_inlining_end_inlining): Remove.
21362         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
21363         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
21364         end_inlining hooks.
21365         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
21366         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
21367         lhd_tree_inlining_end_inlining): Remove prototypes.
21368         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
21369         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
21370         LANG_HOOKS_TREE_INLINING_START_INLINING,
21371         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
21372
21373         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
21374         not set it.
21375
21376 2007-04-08  Anatoly Sokolov <aesok@post.ru>
21377
21378         PR target/29932
21379         * config/avr/predicates.md (io_address_operand): Delete predicate.
21380         (low_io_address_operand): Don't use 'mode' argument.
21381         (higth_io_address_operand): Rename ...
21382         (high_io_address_operand): ... to this. Don't use 'mode' argument.
21383         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
21384         for above change.
21385
21386 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
21387
21388         Revert change removing staticp.
21389
21390 2007-04-07  Anatoly Sokolov <aesok@post.ru>
21391
21392         PR target/30289
21393         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
21394         earlyclobber.
21395
21396 2007-04-07  Bruce Korb  <bkorb@gnu.org>
21397
21398         * c.opt: Add -Wformat-contains-nul.
21399         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
21400           -Wformat setting.
21401         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
21402         the NUL byte warning.
21403
21404 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
21405
21406         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
21407
21408 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
21409
21410         * tree.c (staticp): No longer use staticp langhook.
21411         * langhooks.c (lhd_staticp): Removed.
21412         * langhooks.h (struct lang_hooks): Remove staticp.
21413         * c-common.c (c_staticp): Remove.
21414         * c-common.h (c_staticp): Ditto.
21415         * langhooks-defs.h (lhd_staticp): Ditto.
21416         (LHD_HOOKS_STATICP): Ditto
21417         * tree.h (gcc_assert_lowered): New macro.
21418
21419 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
21420
21421         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
21422         argument "reliable".
21423         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
21424         Add argument "reliable".  Propagate it through calls.
21425         (infer_loop_bounds_from_undefined): Derive number of iterations
21426         estimates from references in blocks that do not dominate loop latch.
21427         (gcov_type_to_double_int): New function.
21428         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
21429         and expected_loop_iterations_unbounded.
21430         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
21431         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
21432         * tree-data-ref.c (estimated_loop_iterations): Export.
21433         (get_references_in_stmt): Fix -- do not return addresses of local
21434         objects.
21435         * cfgloop.h (expected_loop_iterations_unbounded,
21436         estimated_loop_iterations): Declare.
21437
21438 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
21439
21440         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
21441
21442 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
21443
21444         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
21445         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
21446         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
21447         Use output_387_reg_move().
21448         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
21449         expander using X87MODEF12 mode macro.
21450         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
21451         choosing register preferences.  Use output_387_reg_move().
21452         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
21453         instead of "x".  Use output_387_reg_move().
21454         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
21455         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
21456         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
21457         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
21458         Use output_387_reg_move().
21459         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
21460         mode macro.
21461         (*truncxf?f_i387 splitter): Ditto.
21462
21463 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
21464
21465         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
21466         LANG_HOOKS_SAFE_FROM_P.
21467         * expr.c (safe_from_p): Remove langhook call.
21468         * langhooks.h (lang_hooks): Remove safe_from_p.
21469         (lhd_safe_from_p): Remove prototype.
21470         * langhooks.c (lhd_safe_from_p): Remove.
21471
21472 2007-04-06  Jan Hubicka  <jh@suse.cz>
21473
21474         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
21475         functions.
21476
21477 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
21478
21479         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
21480         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
21481         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
21482         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
21483         alternative.
21484         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
21485         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
21486
21487 2007-04-05  Richard Henderson  <rth@redhat.com>
21488
21489         * config/alpha/alpha.c (print_operand) [+]: Remove.
21490         (alpha_end_function): Print nop if call at end of function.
21491         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
21492         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
21493         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
21494         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
21495         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
21496         the call pattern. Update peepholes to match.
21497
21498 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
21499
21500         * doc/extend.texi (Other Builtins): Add decimal float variants
21501         of signbit.
21502         * builtins.def: Ditto.
21503         * builtins.c (expand_builtin): Ditto.
21504
21505 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
21506             H.J. Lu  <hongjiu.lu@intel.com>
21507
21508         PR target/31478
21509         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
21510         of V8HImode when calling ix86_binary_operator_ok.
21511         (sse2_pmaddwd): Call ix86_binary_operator_ok.
21512         (sdot_prodv8hi): Operands 1 and 2 must be register.
21513
21514 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
21515
21516         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
21517         initialize align to silence bogus warning.
21518
21519 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
21520
21521         PR middle-end/22156
21522         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
21523         all_no_warning.
21524         (struct sra_walk_fns): Remove use_all parameter from use.
21525         (sra_hash_tree): Handle BIT_FIELD_REFs.
21526         (sra_elt_hash): Don't hash bitfld blocks.
21527         (sra_elt_eq): Skip them in parent compares as well.  Handle
21528         BIT_FIELD_REFs.
21529         (sra_walk_expr): Don't maintain or pass down use_all_p.
21530         (scan_use): Remove use_all parameter.
21531         (scalarize_use): Likewise.  Re-expand assignment to
21532         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
21533         output, and re-scalarize after output.  Don't mark anything
21534         for no warning.
21535         (scalarize_ldst): Adjust.
21536         (scalarize_walk_gimple_modify_statement): Likewise.
21537         (build_element_name_1): Handle BIT_FIELD_REFs.
21538         (instantiate_element): Don't warn for any element whose parent
21539         is used as a whole.
21540         (instantiate_missing_elements_1): Return the sra_elt.
21541         (canon_type_for_field): New.
21542         (try_instantiate_multiple_fields): New.
21543         (instantiate_missing_elemnts): Use them.
21544         (mark_no_warning): Removed.
21545         (generate_one_element_ref): Handle BIT_FIELD_REFs.
21546         (REPLDUP, sra_build_elt_assignment): New.
21547         (generate_copy_inout): Use them.
21548         (generate_element_copy): Likewise.  Handle bitfld differences.
21549         (generate_element_zero): Don't recurse for blocks.  Use
21550         sra_build_elt_assignment.
21551         (generate_one_element_int): Take elt instead of var.  Use
21552         sra_build_elt_assignment.
21553         (generate_element_init_1): Adjust.
21554         (scalarize_use, scalarize_copy): Use REPLDUP.
21555         (scalarize_ldst): Move assert before dereference.
21556         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
21557
21558 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
21559
21560         * regmove.c: Fix unused variable warnings due to previous commit.
21561
21562 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
21563
21564         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
21565         (regmove_bb_head): Remove.
21566         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
21567         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
21568         problems with fixup_match_1.
21569         Don't initialize/free regmove_bb_head.
21570
21571         (reg_is_remote_constant_p): If an insn is in the same basic block
21572         but not before INSN, consider it remote, too.
21573
21574 2007-04-05  Anatoly Sokolov <aesok@post.ru>
21575
21576         PR target/25448
21577         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
21578         DECL_ASSEMBLER_NAME, not the DECL_NAME.
21579
21580 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
21581
21582         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
21583         (CONDITIONAL_REGISTER_USAGE): Likewise.
21584
21585 2007-04-04  Richard Henderson  <rth@redhat.com>
21586
21587         * config/alpha/lib1funcs.asm: Remove unused file.
21588
21589 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
21590
21591         PR other/31356
21592         * opts.c (print_specific_help): Fix --help=<language>
21593         header line.
21594         (common_handle_option): Support --help=common.
21595
21596 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
21597
21598         PR other/31353
21599         * gcc.c (main): Do not run the linker if
21600         print_subprocess_help indicates that it shouldn't be
21601         run.
21602
21603 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
21604
21605         PR doc/31355
21606         * doc/invoke.texi (--help=): Document <languages> value, fix
21607         formatting in tables of values.
21608
21609 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
21610
21611         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
21612         dllimport attribute of virtual methods.
21613
21614 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
21615
21616         * config/score/crti.asm: Change _bss_start to __bss_start.
21617         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
21618         (OUTGOING_REG_PARM_STACK_SPACE) update.
21619         * config/score/score.opt: add options to make backend support
21620         score5, score5u, score7 and score7d.
21621         * config/score/score.md: Likewise.
21622         * config/score/misc.md: Likewise.
21623         * config/score/mac.md: Likewise.
21624         * doc/invoke.texi: Likewise.
21625         * doc/md.texi: update constraints define.
21626
21627 2007-04-03  Richard Henderson  <rth@redhat.com>
21628
21629         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
21630         an appropriate type, use the mode instead.
21631
21632 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
21633
21634         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
21635         Set the default --with-arch setting to mips2.
21636         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
21637         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
21638         (MULTILIB_OSDIRNAMES): Delete.
21639         (MULTILIB_DIRNAMES): Define.
21640         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
21641         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
21642         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
21643         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
21644         VXWORKS_OS_CPP_BUILTINS.
21645         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
21646         (MIPS_DEBUGGING_INFO): Undefine.
21647         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
21648
21649 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
21650
21651         PR middle-end/30704
21652         * fold-const.c (native_encode_real): Encode real.c provided longs
21653         as a series of 32-bit native integers.
21654         (native_interpret_real): Interpret buffer as a series of 32-bit
21655         native integers.
21656
21657 2007-04-03  Richard Guenther  <rguenther@suse.de>
21658
21659         * genpreds.c (write_insn_constraint_len): Write function
21660         optimized for CONSTRAINT_LEN implementation.
21661         (write_tm_preds_h): Output insn_constraint_len inline and
21662         use it for CONSTRAINT_LEN.
21663         (write_insn_preds_c): Don't output insn_constraint_len.
21664         * doc/md.texi (define_register_constraint): Document multi-letter
21665         constraints shall have the same length if they start with the same
21666         letter.
21667
21668 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
21669
21670         PR target/31175
21671         * config/i386/i386.md (isinf<mode>2): Expand only when
21672         TARGET_C99_FUNCTIONS is set.
21673
21674 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
21675
21676         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
21677         (x86_64-*-linux*): Ditto.
21678         * config/i386/i386.opt (mpc): New option.
21679         * config/i386/i386.c (overrride_options): Handle
21680         ix87_precision_string.
21681         * config/i386/crtprec.c: New file.
21682         * config/i386/t-crtpc: Ditto.
21683         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
21684         and -mpc80 options.
21685         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
21686         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
21687         crtprec32.o, crtprec64.o and crtprec80.o.
21688
21689         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
21690         and -mpc80 options.
21691         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
21692
21693 2007-04-02  Eric Christopher  <echristo@apple.com>
21694
21695         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
21696         limitations on darwin.
21697
21698 2007-04-02  Anatoly Sokolov <aesok@post.ru>
21699
21700         PR target/31137
21701         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
21702
21703 2007-04-02  Dave Korn  <dave.korn@artimi.com>
21704
21705         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
21706
21707 2007-04-02  Dave Korn  <dave.korn@artimi.com>
21708
21709         * libgcc2.h (exception_descriptor): Don't forward-declare.
21710         (__get_eh_table_language, __get_eh_table_version): Delete
21711         prototypes of long-dead functions.
21712
21713 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
21714
21715         * ebitmap.h: New file
21716         * ebitmap.c: New file
21717         * Makefile.in (ebitmap.o): New target.
21718
21719 2007-04-01  Jan Hubicka  <jh@suse.cz>
21720
21721         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
21722         before very first instruction.
21723
21724 2007-04-01  Jan Hubicka  <jh@suse.cz>
21725
21726         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
21727         waring on 64bit hosts.
21728         * bitmap.h: Fix typo in bitmap_head_def.
21729
21730 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
21731
21732         PR rtl-optimization/31391
21733         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
21734         into a DELETED_LABEL note, and the label is in an empty basic
21735         block, update BB_END as well as BB_HEAD.
21736
21737 2007-04-01  Richard Henderson  <rth@redhat.com>
21738
21739         PR tree-optimization/31169
21740         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
21741         to varying if the range is outside [0,  prec-1].
21742
21743 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
21744
21745         PR target/31388
21746         * config/mips/mips.md (load_const_gp): New insn.
21747         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
21748         the MIPS16 GP pseudo register if no_new_pseudos.
21749         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
21750
21751 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21752
21753         PR target/31364
21754         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
21755         secureplt.
21756         (call_value): Likewise.
21757
21758 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
21759             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21760
21761         PR 14737
21762         * doc/invoke.texi: (optimization options): Reword description
21763         of -ffast-math. Document its primary purpose.
21764
21765 2007-03-31  Richard Guenther  <rguenther@suse.de>
21766
21767         * omp-low.c (splay-tree.h): Include.
21768         (lookup_decl): Replace splay-tree usage by pointer-map.
21769         (maybe_lookup_decl): Likewise.
21770         (new_omp_context): Likewise.
21771         (delete_omp_context): Likewise.
21772         * gimplify.c (splay-tree.h): Include.
21773         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
21774         pointer-map.
21775         (remap_ssa_name): Likewise.
21776         (remap_decl): Likewise.
21777         (remap_type_1): Likewise.
21778         (remap_type): Likewise.
21779         (copy_body_r): Likewise.
21780         (expand_call_inline): Likewise.
21781         (clone_body): Likewise.
21782         (copy_tree_r): Likewise.
21783         (remap_save_expr): Likewise.
21784         (unsave_r): Likewise.
21785         (unsave_expr_now): Likewise.
21786         (tree_function_versioning): Likewise.
21787         (build_duplicate_type): Likewise.
21788         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
21789         (struct copy_body_data): Replace splay-tree by pointer-map.
21790         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
21791         not $(SPLAY_TREE_H).
21792         (gimplify.o): Depend on $(SPLAY_TREE_H).
21793         (omp-low.p): Likewise.
21794
21795 2007-03-31  Anatoly Sokolov <aesok@post.ru>
21796
21797         * config/avr/predicates.md (even_register_operand,
21798         odd_register_operand): New predicates.
21799         * config/avr/avr.md (movw peephole2): New.
21800         (movw_r peephole2): New.
21801
21802 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
21803
21804         * tree.h (get_signed_or_unsigned_type): New.
21805         * fold-const.c (operand_equal_for_comparison_p): Use
21806         get_signed_or_unsigned_type instead of
21807         lang_hooks.types.signed_or_unsigned_type.
21808         * expr.c (store_expr): Ditto.
21809         * langhooks.c (get_signed_or_unsigned_type): New.
21810         (lhd_signed_or_unsigned_type): New.
21811         * langhooks.h (lhd_signed_or_unsigned_type): New.
21812         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
21813
21814 2007-03-30  Richard Henderson  <rth@redhat.com>
21815
21816         * tree-ssa-loop-ivopts.c: Include target.h.
21817         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
21818         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
21819         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
21820         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
21821
21822 2007-03-30  Richard Henderson  <rth@redhat.com>
21823             Kai Tietz  <kai.tietz@onevision.com>
21824
21825         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
21826         default for 64-bit.
21827         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
21828         (TARGET_64BIT_MS_ABI): New.
21829         (DBX_REGISTER_NUMBER): Handle 64-bit.
21830         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
21831         (LONG_TYPE_SIZE): Force to 32.
21832         (REG_PARM_STACK_SPACE): New.
21833         (OUTGOING_REG_PARM_STACK_SPACE): New.
21834         (REGPARM_MAX, SSE_REGPARM_MAX): New.
21835         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
21836         (STACK_BOUNDARY): Use 128 for 64-bit.
21837         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
21838         Add 64-bit implementation.
21839         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
21840         argument unused.
21841         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
21842         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
21843         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
21844         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
21845         (ix86_handle_cconv_attribute): Don't warn when ignoring if
21846         TARGET_64BIT_MS_ABI.
21847         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
21848         (ix86_pass_by_reference): Likewise.
21849         (ix86_function_value_regno_p): Likewise.
21850         (ix86_build_builtin_va_list): Likewise.
21851         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
21852         (function_arg_advance_ms_64): New.
21853         (function_arg_advance): Call it.
21854         (function_arg_ms_64): New.
21855         (function_arg): Call it.
21856         (function_value_ms_64): New.
21857         (ix86_function_value_1): Call it.
21858         (return_in_memory_ms_64): New.
21859         (ix86_return_in_memory): Call it.
21860         (setup_incoming_varargs_ms_64): New.
21861         (ix86_setup_incoming_varargs): Call it.
21862         (ix86_expand_prologue): Handle 64-bit stack probing.
21863         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
21864         (output_pic_addr_const): Likewise.
21865         (x86_this_parameter): Likewise.
21866         (x86_output_mi_thunk): Likewise.
21867         (x86_function_profiler): Likewise.
21868         (TARGET_STRICT_ARGUMENT_NAMING): New.
21869         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
21870         (TARGET_64BIT_MS_ABI): New.
21871         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
21872         * config/i386/i386.md (allocate_stack_worker): Remove.
21873         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
21874         describe the clobber of eax without a match_scratch.
21875         (allocate_stack_worker_postreload): Remove.
21876         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
21877         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
21878         (allocate_stack_worker_rex64_postreload): Remove.
21879         (allocate_stack): Handle 64-bit.
21880         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
21881         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
21882         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
21883         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
21884         (STANDARD_STARTFILE_PREFIX_1): Likewise.
21885         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
21886         * config.build (x86_64-*-mingw*): New host.
21887         * config.host (x86_64-*-mingw*): New host.
21888         * config.gcc (x86_64-*-mingw*): New target.
21889         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
21890
21891 2007-03-30  Richard Henderson  <rth@redhat.com>
21892             Kai Tietz  <kai.tietz@onevision.com>
21893
21894         * c-pragma.c (struct def_pragma_macro_value): New.
21895         (struct def_pragma_macro): New.
21896         (pushed_macro_table): New.
21897         (dpm_hash, dpm_eq): New.
21898         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
21899         (init_pragma): Install them.
21900         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
21901
21902 2007-03-30  Anatoly Sokolov <aesok@post.ru>
21903
21904         * config/avr/avr.c (avr_override_options): Clear
21905         'flag_delete_null_pointer_checks'.
21906
21907 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
21908
21909         PR c++/26099
21910         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
21911         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
21912         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
21913         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
21914         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
21915         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
21916         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
21917         C++ extensions.
21918         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
21919
21920 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
21921
21922         * regmove.c: Move all of pass_stack_adjustments from here...
21923         * combine-stack-adj.c: ...to this new file.
21924         * Makefile.in: Add rules for combine-stack-adj.o.
21925
21926 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
21927
21928         PR tree-optimization/31383
21929         * tree-data-ref.c (affine_function_equal_p): Do not require the
21930         vectors to have the same length.
21931
21932 2007-03-30  Jan Hubicka  <jh@suse.cz>
21933
21934         PR middle-end/30700
21935         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
21936         availablility; add more sanity checking; ask varpool only about
21937         VAR_DECL.
21938
21939 2007-03-29  Richard Henderson  <rth@redhat.com>
21940
21941         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
21942         to decide, but __SIZEOF_LONG_LONG__.
21943
21944 2007-03-29  Richard Henderson  <rth@redhat.com>
21945
21946         * emutls.c (struct __emutls_array): New.
21947         (emutls_destroy): Use it instead of casting element 0 from void*.
21948         (__emutls_get_address): Likewise.
21949
21950 2007-03-29  Richard Henderson  <rth@redhat.com>
21951
21952         * varasm.c (initializer_constant_valid_p): Don't deny
21953         DECL_DLLIMPORT_P on functions.
21954
21955         * config/i386/cygming.h: Remove function declarations.
21956         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
21957         (ASM_OUTPUT_LABELREF): Remove.
21958         (COMMON_ASM_OP): Remove.
21959         (ASM_OUTPUT_COMMON): Remove.
21960         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
21961         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
21962         (ASM_DECLARE_FUNCTION_NAME): Likewise.
21963         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
21964         Rename from TARGET_ENCODE_SECTION_INFO.
21965         * config/i386/netware.h: Likewise.
21966         * config/i386/i386-protos.h: Update.
21967         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
21968         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
21969         (legitimate_constant_p): Reject dllimports.
21970         (dllimport_map, get_dllimport_decl): New.
21971         (legitimize_dllimport_symbol): New.
21972         (legitimize_address, ix86_expand_move): Use it.
21973         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
21974         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
21975         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
21976         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
21977         * config/i386/predicates.md (constant_call_address_operand): Only
21978         accept symbols; reject dllimport_p symbols.
21979         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
21980         i386_pe_maybe_record_exported_symbol.
21981         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
21982         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
21983         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
21984         trust the setting of DECL_DLLIMPORT_P.
21985         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
21986         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
21987         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
21988         tidy the argument scanning loop.
21989         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
21990         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
21991         (i386_pe_strip_name_encoding): Remove.
21992         (i386_pe_binds_local_p): New.
21993         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
21994         (i386_pe_output_labelref): Remove.
21995         (i386_pe_asm_output_aligned_decl_common): New.
21996         (i386_pe_maybe_record_exported_symbol): Rename from
21997         i386_pe_record_exported_symbol; check for dllexported symbols.
21998
21999 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
22000
22001         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
22002         add comment explaining why vsnprintf cannot be used.
22003
22004 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
22005
22006         PR tree-optimization/30666
22007         * tree.c (build_complex_type): When creating type names for DWARF2
22008         debug info, create TYPE_DECLs for TYPE_NAME instead of
22009         IDENTIFIER_NODEs.
22010         (build_common_tree_nodes_2): Use build_complex_type when building
22011         predefined complex types, to preserve canonical types.
22012
22013 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
22014
22015         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
22016         (noce_get_alt_condition): Look at it to determine whether to
22017         reverse the condition or not.
22018         (noce_get_condition): Substitute the truth for lies.
22019         (noce_find_if_block): Set the then_else_reversed field.
22020
22021 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
22022
22023         * config/fr30/fr30.md (movdi): Do not accept immediates as the
22024         destination of this insn.
22025         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
22026         than calling gen_rtx_SET directly.  Use r0 to hold the value of
22027         'address + 4' rather than a stack based temporary which can be
22028         mis-optimized away.
22029
22030 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22031
22032         * config/s390/s390.c (s390_secondary_input_reload_class,
22033         s390_secondary_output_reload_class): Functions removed.
22034         (s390_secondary_reload): New function.
22035         (TARGET_SECONDARY_RELOAD): Target macro defined.
22036         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
22037         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
22038         * config/s390/s390.md ("reload_outti", "reload_outdi",
22039         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
22040         "reload_out<mode>"): Expanders removed.
22041         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
22042         "reload<mode>_nonoffmem_out"): Expanders added.
22043
22044 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22045
22046         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
22047         action if SRC->DEST replacement failed anyway.
22048
22049 2007-03-28  Mike Stump  <mrs@apple.com>
22050
22051         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
22052         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
22053         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
22054
22055 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
22056
22057         * config.gcc: Accept barcelona as a variant of amdfam10.
22058         * config/i386/i386.c (override_options): Likewise.
22059         * doc/invoke.texi: Likewise.
22060
22061 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
22062
22063         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
22064         offsets for BIT_FIELD_REF and COMPONENT_REF.
22065
22066 2007-03-28  Richard Guenther  <rguenther@suse.de>
22067
22068         * tree.c (is_global_var): Move ...
22069         * tree-flow-inline.h (is_global_var): ... here.
22070         * tree.h (is_global_var): Remove declaration.
22071
22072 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
22073
22074         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
22075         option.
22076         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
22077         * config/i386/i386.c (ix86_tune_features): Initialize new
22078         tuning option.
22079         * config/i386/predicates.md (promotable_binary_operator): Use
22080         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
22081
22082 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
22083
22084         PR target/31380
22085         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
22086
22087 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
22088
22089         * config/fr30/fr30.md (movsi_internal): Change destination
22090         constraint from m to V and add m to the end.
22091
22092 2007-03-28  Christian Bruel  <christian.bruel@st.com>
22093
22094         * config/sh/sh.md (movsi_i): Fix type attribute.
22095
22096 2007-03-28  Christian Bruel  <christian.bruel@st.com>
22097
22098         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
22099         (movsf_ie): Likewise.
22100
22101 2007-03-28  Christian Bruel  <christian.bruel@st.com>
22102
22103         * config.gcc: Add sh4-300 to multilib.
22104         * config/sh/t-mlib-sh4-300: New file.
22105
22106 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
22107
22108         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
22109         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
22110         fix_trunc<mode>di2.
22111         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
22112         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
22113         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
22114         "fixuns_trunctddi2"): Whitespace fix.
22115
22116 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
22117
22118         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
22119         the definition of struct sh_args.
22120         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
22121         CALL_COOKIE_INT_REG_GET): Likewise.
22122
22123 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
22124
22125         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
22126         transformations are applied successfully.
22127
22128 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
22129
22130         * tree.c (tree_contains_struct): Permit 512 tree codes.
22131         * tree.h (tree_contains_struct): Ditto.
22132         (MAX_TREE_CODES): Ditto.
22133         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
22134         SPARE member to store remaining padding bits.
22135
22136 2007-03-27  Anatoly Sokolov <aesok@post.ru>
22137
22138         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
22139         architecture.
22140
22141 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
22142
22143         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
22144         * configure: Regenerate.
22145
22146         * configure: Regenerate using the correct version of autoconf.
22147
22148 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
22149
22150         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
22151         pointer regs.
22152         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
22153         regs to "__SP_L__" and "__SP_H__".
22154
22155 2007-03-27  Richard Guenther  <rguenther@suse.de>
22156
22157         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
22158         computations with it with a HOST_WIDE_INT variable.
22159
22160 2007-03-26  Mike Stump  <mrs@apple.com>
22161
22162         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
22163         objective-c-header, objective-c++-header and objc++-cpp-output
22164         support.
22165         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
22166
22167 2007-03-26  Richard Henderson  <rth@redhat.com>
22168
22169         PR target/31361
22170         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
22171         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
22172         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
22173         IX86_BUILTIN_PSRLQ128): New.
22174         (ix86_init_mmx_sse_builtins): Add them.
22175         (ix86_expand_builtin): Expand them.
22176         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
22177         operand 2 be TImode.
22178         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
22179         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
22180         _mm_srli_epi64): Mark __B const.
22181         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
22182         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
22183         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
22184         new two-vector shift builtins.
22185
22186 2007-03-26  Ian Lance Taylor  <iant@google.com>
22187
22188         PR tree-optimization/31345
22189         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
22190         [+INF, +INF(OVF)] into VARYING.
22191
22192 2007-03-26  Zack Weinberg  <zackw@panix.com>
22193
22194         * gengtype-parse.c: New file.
22195         * gengtype-yacc.y: Delete.
22196         * gengtype-lex.l: Don't include gengtype-yacc.h.
22197         Define YY_DECL and yyterminate appropriately for recursive
22198         descent parser.  yylval is now a string out-parameter to yylex.
22199         (HWS, EOID): New shorthand.
22200         (IWORD): Add a couple more types.
22201         (yylex): Add a setup stanza.  Remove the complex rules for
22202         detecting GTY'ed types and typedefs; replace with simple
22203         keyword detectors.  Adjust everything for the changed
22204         definition of yylval.  Ignore all pp-directives, not just #define.
22205         (yyerror): Delete.
22206         (parse_file): Rename yybegin; do not call yyparse.
22207         (yyend): New.
22208         * gengtype.c (xasprintf): Export again.
22209         (this_file): New.  Use everywhere __FILE__ was being used.
22210         (get_lang_bitmap): Special case types defined in gengtype.c.
22211         (do_typedef, new_structure): Suppress definition of certain types.
22212         (new_structure): Improve diagnostics of duplicate definitions.
22213         Make sure location_s is associated with input.h.
22214         (nreverse_pairs, define_location_structures): New functions.
22215         (main): Improve tagging of kludge types.  Remove old kludges
22216         for input.h types; use define_location_structures.
22217         * gengtype.h: Update prototypes.  Define token codes here.
22218         * Makefile.in: Remove all references to gengtype-yacc.
22219         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
22220         and gengtype.
22221         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
22222         add GTY((skip)) to the field that's only conditionally there.
22223         * doc/install.texi: Document that Bison is no longer required
22224         unless building treelang.
22225
22226         * gengtype.c: Don't include gtyp-gen.h.
22227         (srcdir): Declare here.
22228         (base_files, lang_dir_names): Allocate dynamically.
22229         (gt_files, num_gt_files, num_lang_dirs): New globals.
22230         (measure_input_list, read_input_line, read_input_list)
22231         (set_lang_bitmap): New functions.
22232         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
22233         simplify, relying on read_input_list to set up the bitmaps.
22234         (main): Arguments are no longer unused.  Check for correct number
22235         of command line arguments, set srcdir and srcdir_len, then call
22236         read_input_list, before doing anything else.  No need to worry
22237         about duplicates in main loop.
22238         * configure.ac: Simplify the calculation of all_gtfiles.
22239         Put language tags in there.  Don't set or substitute
22240         all_gtfiles_files_langs or all_gtfiles_files_frags.
22241         * Makefile.in: Revamp the way gengtype is invoked, now that it
22242         takes a file on its command line with a much simpler format.
22243         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
22244         (GTFILES): Remove duplicates and C source files.
22245         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
22246         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
22247         * configure: Regenerate.
22248
22249         * gengtype.h: Remove all type definitions to gengtype.c; leave
22250         only definitions of options_p, type_p, and pair_p as opaque
22251         pointers.  Update prototypes.
22252         * gengtype.c: Many type definitions moved here from gengtype.h.
22253         Consolidate type definitions at the top of the file.
22254         (xvasprintf): Delete.
22255         (xasprintf): Make static.
22256         (create_nested_pointer_option): Add 'next' parameter.
22257         (create_field_all, create_field_at): New functions.
22258         (create_field): Now a thin wrapper around create_field_all.
22259         (create_optional_field): Rename create_optional_field_ and add
22260         line argument.  Original name is now a macro which supplies
22261         __LINE__.
22262         (oprintf): Use vsnprintf directly.
22263         (close_output_files): Use fatal rather than perror/exit.
22264         (note_def_vec, note_def_vec_alloc): Use create_field_at.
22265         (main): Set progname.  Don't use exit.
22266         * gengtype-yacc.y (struct_fields): Use create_field_at.
22267         (option, optionseqopt): Delete.
22268         (optionseq): Consolidate productions from option here so we
22269         can use the first argument to create_option.
22270
22271         * gengtype-lex.l: Distinguish unions from structures in the
22272         token type.  Don't call find_structure; return the tag as a string.
22273         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
22274         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
22275         string.  Reorganize typedef_struct production accordingly.
22276         Use create_nested_ptr_option.
22277         * gengtype.c (create_nested_ptr_option): New function.
22278         * gengtype.h: Declare it.
22279
22280         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
22281         (string_type): Don't declare.
22282         (do_scalar_typedef): Declare.
22283         (create_scalar_type): Update prototype.
22284         * gengtype.c (string_type): Make static.
22285         (scalar_nonchar, scalar_char): New.
22286         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
22287         (resolve_typedef): Use scalar_nonchar for error recovery.
22288         (create_scalar_type): Remove name_len field.  Return scalar_char
22289         or scalar_nonchar as appropriate.
22290         (adjust_field_type): Look at scalar_is_char boolean to decide whether
22291         to use string_type.
22292         (throughout): Use scalar_nonchar instead of calling
22293         create_scalar_type, whenever possible.
22294         (main): Initialize scalar_char and scalar_nonchar before calling
22295         gen_rtx_next.
22296         * gengtype-lex.l: Adjust for removal of second argument to
22297         create_scalar_type.  Use yylval.s instead of yylval.t when
22298         returning SCALAR.
22299         * gengtype-yacc.y: Type of SCALAR is string.  Call
22300         create_scalar_type from type:SCALAR rule.  Adjust for removal of
22301         second argument to create_scalar_type.
22302
22303         * vec.h: Remove all #if IN_GENGTYPE blocks.
22304         Add comment saying that changes may require adjustments to gengtype.
22305         * gengtype.c: Don't include coretypes.h or tm.h.
22306         Add comment to inclusion of errors.h.
22307         (note_def_vec, note_def_vec_alloc): New functions.
22308         * gengtype.h: Declare new functions.
22309         * gengtype-lex.l: Don't include coretypes.h.
22310         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
22311         Delete.
22312         (update_lineno): Remove unnecessary prototype.
22313         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
22314         (VEC rule): Just return VEC_TOKEN.
22315         * gengtype-yacc.y (VEC_TOKEN): New token type.
22316         (type): Add a production for VEC(a,b).
22317         * Makefile.in: Update dependencies.
22318
22319         * gengtype-lex.l: Remove rules for parsing pointer-to-function
22320         typedefs that use the old PARAMS macro.
22321
22322         * gengtype-lex.l: Remove all rules and states relating to yacc
22323         input files.
22324         * gengtype-yacc.y: Similarly.
22325         * gengtype.c (note_yacc_type): Delete function.
22326         * gengtype.h: Update prototypes.
22327
22328 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
22329
22330         * tree-pretty-print.c (dump_generic_node): Report precision of
22331         unnamed integer types.
22332
22333 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
22334
22335         * ifcvt.c (noce_try_store_flag_constants): Don't check
22336         no_new_pseudos here.
22337         (noce_try_store_flag_constants): Don't check no_new_pseudos.
22338         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
22339         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
22340         noce_try_sign_mask): Likewise.
22341         (if_convert): Check no_new_pseudos here.
22342
22343         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
22344         Remove prototypes.
22345         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
22346         (noce_get_condition): Handle new then_else_reversed argument.
22347         (noce_init_if_info): Remove, fold into noce_find_if_block.
22348         (noce_process_if_block): Take a struct noce_if_info as the
22349         argument.  Don't set up one based on ce_if_info.  Update pointer
22350         references accordingly.
22351         (cond_move_process_if_block): Likewise.
22352         (process_if_block): Removed.
22353         (find_if_block): Removed.  Move functionality two new functions,
22354         noce_find_if_block and cond_exec_find_if_block.
22355         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
22356         blocks and the symmetric IF-ELSE-JOIN case.
22357         (cond_exec_find_if_block): Also new function mostly based on old
22358         find_if_block and process_if_block.
22359         (find_if_header): Replace find_if_block call with separately
22360         guarded calls to noce_find_if_block and cond_exec_find_if_block.
22361         (find_cond_trap): Update noce_get_condition call.
22362         (dead_or_predicable): Likewise.
22363
22364 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
22365
22366         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
22367         Remove.
22368         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
22369         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
22370         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
22371         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
22372         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
22373         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
22374         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
22375         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
22376         __builtin_ia32_psrad128 builtins.
22377
22378 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
22379
22380         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
22381         * config/i386/constraints.md
22382         (define_constraint "I"): Use IN_RANGE macro.
22383         (define_constraint "J"): Ditto.
22384         (define_constraint "K"): Ditto.
22385         (define_constraint "M"): Ditto.
22386         (define_constraint "N"): Ditto.
22387         (define_constraint "O"): Ditto.
22388         * config/i386/predicates.md
22389         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
22390         (define_predicate "const_0_to_3_operand"): Ditto.
22391         (define_predicate "const_0_to_7_operand"): Ditto.
22392         (define_predicate "const_0_to_15_operand"): Ditto.
22393         (define_predicate "const_0_to_63_operand"): Ditto.
22394         (define_predicate "const_0_to_255_operand"): Ditto.
22395         (define_predicate "const_1_to_31_operand"): Ditto.
22396         (define_predicate "const_2_to_3_operand"): Ditto.
22397         (define_predicate "const_4_to_7_operand"): Ditto.
22398
22399 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
22400
22401         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
22402         in SImode for save_world.
22403         * config/rs6000/altivec.md (save_world, restore_world): Convert to
22404         LR hard reg.
22405
22406 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
22407
22408         PR tree-optimization/30784
22409         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
22410         BIT_FIELD_REF.
22411
22412 2007-03-25  Revital Eres  <eres@il.ibm.com>
22413
22414         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
22415           Fold movement_possibility function into it.
22416
22417 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
22418
22419         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
22420         (load_macho_picbase_{si,di}): Convert to LR hard reg.
22421         (call_indirect_nonlocal_darwin64): Same.
22422         (call_nonlocal_darwin64): Same.
22423         (call_value_indirect_nonlocal_darwin64): Same.
22424         (call_value_nonlocal_darwin64): Same.
22425         (sibcall_nonlocal_darwin64): Same.
22426         (sibcall_value_nonlocal_darwin64): Same.
22427         (sibcall_symbolic_64): Same.
22428         (sibcall_value_symbolic_64): Same.
22429         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
22430         LR pseudo.
22431         (rs6000_emit_load_toc_table): Same.
22432         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
22433         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
22434         (mull_call): Same.
22435         (divss_call): Same.
22436         (divus_call): Same.
22437         (quoss_call): Same.
22438         (quous_call): Same.
22439         (load_toc_v4_pic_si): Same
22440         (load_toc_v4_PIC_1): Same.
22441         (load_toc_v4_PIC_1b): Same.
22442         (call_indirect_aix{32,64}): Same.
22443         (call_value_indirect_aix{32,64}): Same.
22444         (call): Same.
22445         (call_value): Same.
22446         (call_local{32,64}): Same.
22447         (call_value_local{32,64}): Same.
22448         (call_indirect_nonlocal_aix{32,64}): Same.
22449         (call_nonlocal_aix{32,64}): Same.
22450         (call_value_indirect_nonlocal_aix{32,64}): Same.
22451         (call_value_nonlocal_aix{32,64}): Same.
22452         (call_indirect_nonlocal_sysv<mode>): Same.
22453         (call_nonlocal_sysv<mode>): Same.
22454         (call_value_indirect_nonlocal_sysv<mode>): Same.
22455         (call_value_nonlocal_sysv<mode>): Same.
22456         (sibcall): Same.
22457         (sibcall_local{32,64}): Same.
22458         (sibcall_value_local{32,64}): Same.
22459         (sibcall_nonlocal_aix{32,64}): Same.
22460         (sibcall_value_nonlocal_aix{32,64}): Same.
22461         (sibcall_nonlocal_sysv<mode>): Same.
22462         (sibcall_value): Same.
22463         (sibcall_value_nonlocal_sysv<mode>): Same.
22464
22465 2007-03-24  Paul Brook  <paul@codesourcery.com>
22466
22467         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
22468         * config/arm/linux-eabi.h: Remove legacy syscall hack.
22469
22470 2007-03-24  Richard Henderson  <rth@redhat.com>
22471
22472         * config/ia64/constraints.md: New file.
22473         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
22474         satisfies_constraint_?.
22475         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
22476         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
22477         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
22478         ia64_output_mi_thunk): Likewise.
22479         (ia64_const_ok_for_letter_p): Remove.
22480         (ia64_const_double_ok_for_letter_p): Remove.
22481         (ia64_extra_constraint): Remove.
22482         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
22483         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
22484         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
22485         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
22486         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
22487         EXTRA_MEMORY_CONSTRAINT): Remove.
22488         * config/ia64/ia64.md: Include constriants.md.  Replace
22489         CONST_OK_FOR_? with satisfies_constraint_?.
22490
22491 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
22492             H.J. Lu  <hongjiu.lu@intel.com>
22493
22494         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
22495         DPD or BID name.
22496         (name macros): Use DPD_BID_NAME to convert names properly.
22497
22498         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
22499         decimal floating point format.
22500         (init_floating_libfuncs): Change decimal functions so that they
22501         have a "bid_" prefix if the decimal system uses the BID format,
22502         and "dpd_" prefix if the decimal system uses the DPD format.
22503         (init_interclass_conv_libfuncs): Ditto.
22504         (init_intraclass_conv_libfuncs): Ditto.
22505
22506         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
22507         using the BID format.
22508
22509         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
22510         whether we are using the BID decimal format.
22511         * configure: Regenerate.
22512
22513         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
22514         the compiler has decimal floating point enabled.  Define
22515         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
22516         instead of DPD.
22517
22518         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
22519         using the BID format.
22520
22521         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
22522         whether we are using the BID decimal format.
22523         * configure: Regenerate.
22524
22525         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
22526         the compiler has decimal floating point enabled.  Define
22527         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
22528         instead of DPD.
22529
22530         * doc/install.texi (--enable-decimal-float): Document BID and DPD
22531         options, and that it is enabled for i386/x86_64 systems.
22532
22533         * Makefile.in (enable_decimal_float): New.
22534         (DECNUMFMT): New.
22535         (DECNUMINC): Add  -I$(DECNUMFMT).
22536         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
22537         to $(DECNUMFMT) from $(DECNUM).
22538
22539         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
22540         Substitute enable_decimal_float.
22541         * configure: Regenerated.
22542
22543         PR other/30529
22544         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
22545         unsigned long.
22546
22547         * configure.ac: Enable decimal float for x86_64-*-linux*.
22548         * configure: Regenerated.
22549
22550         PR other/30530
22551         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
22552         decimal128ClearSign to flip and clear the sign bit in decimal128.
22553         (decimal_real_maxval): Set decimal128SetSign to set the sign
22554         bit in decimal128.
22555
22556 2007-03-23  Ian Lance Taylor  <iant@google.com>
22557
22558         * fold-const.c (fold_binary): Correct warning for X - c >= X.
22559
22560 2007-03-23  Ian Lance Taylor  <iant@google.com>
22561
22562         * tree-dump.c (dump_files): Correct comment.
22563
22564 2007-03-23  Ian Lance Taylor  <iant@google.com>
22565
22566         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
22567
22568 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
22569
22570         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
22571         in cfglayout mode.  Don't go into and out of cfglayout mode.
22572         Link the blocks in the order of the constructed traces.
22573         (rest_of_handle_tracer): Adjust call to tracer.
22574         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
22575         Don't go into cfglayout mode.
22576         (rtl_loop_done): Don't go out of cfglayout mode.
22577         * cfglayout.c (relink_block_chain): New function, split out from...
22578         (fixup_reorder_chain): ...here.  Remove redundant checking.
22579         (cfg_layout_finalize): Don't clear the header, footer, and aux
22580         fields here, move the code to do so to relink_block_chain.  Likewise
22581         for free_original_copy_tables.
22582         * rtl.h (tracer): Update prototype.
22583         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
22584         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
22585         mode.  Use relink_block_chain to serialize the CFG according to the
22586         new basic block order.  Move targetm.cannot_modify_jumps_p check from
22587         here...
22588         (gate_handle_reorder_blocks): ...to here.
22589         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
22590         from here...
22591         (gate_duplicate_computed_gotos): ...to here.
22592         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
22593         something always changes when going into and out of cfglayout mode.
22594         Perform an expensive cfg cleanup while going into cfglayout mode.
22595         Always update liveness information on HAVE_conditional_execution
22596         targets.  Reserialize the basic blocks and go out of cfglayout mode.
22597         * reg-stack.c: Include cfglayout.h.
22598         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
22599         the call to reorder_basic_blocks.
22600         * basic-block.h (reorder_basic_blocks): Update prototype.
22601         (relink_block_chain): New prototype.
22602         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
22603
22604 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
22605
22606         * config/mips/mips.md (type, hazard, *movdi_32bit,
22607         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
22608         *movhi_internal, *movqi_internal, *movsf_hardfloat,
22609         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
22610         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
22611         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
22612         applicable.
22613         (movcc): Change first xfer to multi.
22614         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
22615         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
22616         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
22617         config/mips/generic.md: Change reservations using "xfer" to use
22618         "mfc,mtc".
22619         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
22620         using match_operand.
22621         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
22622         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
22623         examining mode.
22624         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
22625
22626 2007-03-22  Richard Henderson  <rth@redhat.com>
22627
22628         * config/i386/i386.c: Remove unnecessary function declarations.
22629         Move targetm definition, and all related macros, to the end of
22630         the file.  Resort some functions to put definitions before uses.
22631         (ix86_attribute_table): Make static.  Move to end of file.
22632         (ix86_gimplify_va_arg): Make static.
22633
22634 2007-03-22  Richard Henderson  <rth@redhat.com>
22635
22636         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
22637         don't increase local_regparm with force_align_arg_pointer check.
22638         (ix86_function_sseregparm): Assert 32-bit.
22639         (type_has_variadic_args_p): New.
22640         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
22641         type_has_variadic_args_p.
22642         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
22643         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
22644         use memset instead.  Do maybe_vaarg check first; skip attribute
22645         tests if true; skip attribute tests for 64-bit.
22646         (construct_container): Remove TARGET_DEBUG_ARG.
22647         (function_arg_advance_32, function_arg_advance_64): Split out ...
22648         (function_arg_advance): ... from here.
22649         (function_arg_32, function_arg_64): Split out ...
22650         (function_arg): ... from here.
22651         (ix86_pass_by_reference): Tidy.
22652         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
22653         (function_value_32): New, from parts of ix86_function_value
22654         and ix86_value_regno.
22655         (function_value_64): New, from parts of ix86_function_value
22656         and ix86_libcall_value.
22657         (ix86_function_value_1): New.
22658         (ix86_function_value, ix86_libcall_value): Use it.
22659         (return_in_memory_32, return_in_memory_64): Split out ...
22660         (ix86_return_in_memory): ... from here.
22661         (ix86_struct_value_rtx): Skip for 64-bit.
22662         (ix86_libcall_value, ix86_value_regno): Remove.
22663         (setup_incoming_varargs_64): Split out ...
22664         (ix86_setup_incoming_varargs): ... from here.
22665         (ix86_va_start): Remove TARGET_DEBUG_ARG.
22666         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
22667         * config/i386/i386-protos.h (ix86_function_value): Remove.
22668         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
22669
22670 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22671
22672         PR other/23572
22673         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
22674         infinities not supported, otherwise emit warning if -Woverflow. On
22675         underflow, emit warning if -Woverflow.
22676         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
22677         and 0 otherwise.
22678         * real.h (real_from_string): Update declaration
22679
22680 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
22681             Richard Henderson  <rth@redhat.com>
22682
22683         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
22684         * calls.c (compute_argument_block_size, expand_call,
22685         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
22686         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
22687         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
22688         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
22689         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
22690         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
22691         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
22692         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
22693         Set to 1.
22694
22695 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
22696
22697         * c-incpath.c (add_sysroot_to_chain): New.
22698         (merge_include_chains): Add sysroot argument.  Call
22699         add_sysroot_to_chain if sysrooted.
22700         (register_include_chains): Update call to merge_include_chains.
22701         * doc/cppopts.texi: Document use of '=' in include directory
22702         arguments.
22703
22704 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
22705
22706         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
22707         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
22708         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
22709         insn pattern using X87MODEF12 mode macro.
22710
22711 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
22712
22713         * regmove.c (regmove_optimize): Use reg_mentioned_p
22714         instead of reg_overlap_mentioned_p for DST.
22715
22716 2007-03-21  Mike Stump  <mrs@apple.com>
22717
22718         * c.opt: Fixup for Objective-C/C++.
22719
22720 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
22721
22722         * explow.c (convert_memory_address): Fold memory reference when
22723         POINTERS_EXTEND_UNSIGNED < 0
22724
22725 2007-03-21  Richard Henderson  <rth@redhat.com>
22726
22727         PR target/31245
22728         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
22729         * config/i386/mmintrin.h (__m64): Likewise.
22730         * config/i386/xmmintrin.h (__m128): Likewise.
22731
22732 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
22733
22734         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
22735         (VXWORKS_OS_CPP_BUILTINS): Define.
22736         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
22737         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
22738
22739 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
22740
22741         * rtl.h (constant_pool_reference_p): Delete.
22742         (find_constant_src): Declare.
22743         * rtlanal.c (find_constant_src): New function.
22744         * simplify-rtx.c (constant_pool_reference_p): Delete.
22745         * config/i386/i386.md: Use find_constant_src instead of
22746         constant_pool_reference_p/avoid_constant_pool_reference pairs.
22747
22748 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
22749
22750         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
22751         * c-cppbuiltin.c (c_cpp_builtins): Define them.
22752
22753 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
22754
22755         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
22756         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
22757         (arm_elf_asm_constructor): Use it.
22758         (arm_elf_asm_destructor): New function.
22759
22760 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
22761
22762         * jump.c (mark_jump_label): Treat SEQUENCE specially.
22763
22764 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
22765
22766         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
22767
22768 2007-03-19  Andrew Haley  <aph@redhat.com>
22769
22770         PR tree-optimization/31264
22771         * tree-vrp.c (register_edge_assert_for_1): Don't look though
22772         VIEW_CONVERT_EXPRs.
22773
22774 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
22775
22776         PR rtl-optimization/30907
22777         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
22778         (fwprop_init): Always call loop_optimizer_initialize.
22779         (fwprop_done): Always call loop_optimizer_finalize.
22780         (fwprop): We always have loop info now.
22781         (gate_fwprop_addr): Remove.
22782         (pass_fwprop_addr): Use gate_fwprop as gate.
22783
22784         PR rtl-optimization/30841
22785         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
22786         df_chain_alloc): Call df_reorganize_refs unconditionally.
22787         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
22788         refs_organized to refs_organized_size.
22789         (df_ref_create_structure): Use refs_organized_size instead of
22790         bitmap_size if refs had been organized, and keep refs_organized_size
22791         up-to-date.
22792         * df.h (struct df_ref_info): Change refs_organized to
22793         refs_organized_size.
22794         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
22795         bitmap_size.
22796
22797 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
22798
22799         * except.c (output_function_exception_table): Do not reference the
22800         EH personality routine for functions that do not require an
22801         exception table.
22802
22803 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
22804
22805         PR c/30762
22806         * c-typeck.c (convert_for_assignment): Call comptypes for
22807         RECORD_TYPE or UNION_TYPE.
22808
22809         PR inline-asm/30505
22810         * reload1.c (reload): Do invalid ASM checking after
22811         cleanup_subreg_operands.
22812
22813 2007-03-19  Jeff Law  <law@redhat.com>
22814
22815         * tree-cfg.c (find_taken_edge): Tighten conditions for
22816         optimizing computed gotos.
22817
22818 2007-03-19  Michael Matz  <matz@suse.de>
22819
22820         * builtins.c (expand_builtin_sync_operation,
22821         expand_builtin_compare_and_swap,
22822         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
22823         correctly.
22824
22825         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
22826         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
22827         for operand 3.
22828
22829 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22830
22831         * doc/tm.texi: Add brackets around the return type of
22832         TARGET_SECONDARY_RELOAD.
22833
22834 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22835         Richard Guenther  <rguenther@suse.de>
22836
22837         PR tree-optimization/31254
22838         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
22839         Use handled_component_p () where appropriate.  Continue
22840         propagating into the rhs if we propagated into an INDIRECT_REF
22841         on the lhs.
22842
22843 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22844
22845         * config/s390/s390.md (op_type attribute): RRR instruction type added.
22846         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
22847         (xde, xdee): Mode attributes adjusted to support DFP modes.
22848         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
22849         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
22850         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
22851         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
22852         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
22853         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
22854         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
22855         numbers.
22856         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
22857         "movsf"): Insn definitions removed.
22858         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
22859         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
22860         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
22861         definitions added.
22862         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
22863         "reload_in<mode>", "reload_out<mode>"): Expander added.
22864         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
22865         Expander removed.
22866
22867 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22868
22869         * config/s390/s390.md: Only non-functional changes.  Renamed
22870         FPR mode macro to BFP all over the file.
22871
22872 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22873
22874         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
22875         (op_type attribute): RRF instruction type added.
22876         (fT0): New mode attribute.
22877         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
22878         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
22879         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
22880         instruction no secondary memory is needed when moving DFmode values
22881         between GPRs and FPRs.
22882
22883 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22884
22885         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
22886         inverted and documentation adjusted.
22887         ("mhard-dfp", "msoft-dfp"): New options.
22888         * config/s390/s390.c (s390_handle_arch_option): New architecture
22889         switch: z9-ec.
22890         (override_options): Sanity checks for the new options added.
22891         * config.gcc: New architecture switch: z9-ec.
22892         * config/s390/s390.h (processor_flags): PF_DFP added.
22893         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
22894         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
22895         when the bit is NOT set so remove it from the defaults.
22896
22897 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
22898
22899         * genemit.c (main): Print include statement for dfp.h.
22900         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
22901         is not available.
22902
22903 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
22904
22905         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
22906
22907 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
22908
22909         PR target/31022
22910         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
22911         instead of PATTERN.
22912
22913 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22914
22915         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
22916         attr_length_call, output_call, output_indirect_call): Cleanup
22917         formatting of targetm calls.
22918
22919 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
22920
22921         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
22922
22923 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22924
22925         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
22926         reservation, bypass and anti-bypass descriptions for these
22927         instructions.  Update move patterns.
22928         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
22929         TYPE_FPSTORE.
22930
22931 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
22932
22933         * tree-vect-transform.c (get_initial_def_for_induction): Replace
22934         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
22935         (get_initial_def_for_reduction): Likewise.
22936
22937 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
22938
22939         Fix PR tree-optimization/29922
22940         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
22941         (get_representative): Removed.
22942         (value_dies_in_block_x): Update for rvuse removal.
22943         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
22944         (compute_antic_aux): Handle when PHI nodes appear in
22945         non-single-successors.
22946         (dump_bitmap_of_names): Removed.
22947         (compute_antic_safe): Renamed and removed rvuse calculation.
22948         Calculate only antic safe.
22949         (insert_into_preds_of_block): Remove assert.
22950         (execute_pre): Update for renamed functions.
22951         (defer_or_phi_translate_block): New function.
22952
22953 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
22954
22955         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
22956         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
22957         typos.
22958         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
22959         Follow spelling conventions.
22960
22961         * tree-data-ref.h: Remove the prototype for analyze_array.
22962
22963 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
22964
22965         PR tree-optimization/31041
22966         * tree-vect-transform.c (get_initial_def_for_induction): Call
22967         force_gimple_operand.
22968
22969 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
22970
22971         * ipa-type-escape.c (look_for_casts) : Revert code to use
22972         handled_component_p due to ada test a-numaux.adb.
22973
22974 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
22975
22976         * final.c (final_scan_insn): Alter the condition of a
22977         conditional trap if we have nonstandard CC.
22978
22979 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
22980
22981         * configure.ac: Remove excess quoting from asm line 0 test.
22982         * configure: Rebuilt.
22983
22984 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22985
22986         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
22987         * c-common.c (convert_and_check): Move warning logic to...
22988         (warnings_for_convert_and_check): ...here. Define.
22989         * c-common.h (warnings_for_convert_and_check): Declare.
22990
22991 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22992
22993         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
22994         (output_call): Likewise.
22995
22996 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
22997
22998         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
22999
23000 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
23001
23002         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
23003
23004 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
23005
23006         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
23007         opteron, athlon-64 and athlon-fx processor_alias_table entries.
23008
23009 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
23010
23011         PR tree-optimization/31183
23012         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
23013         Use double_int instead of unsigned int for representing access_strides.
23014         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
23015
23016 2007-03-16  Richard Guenther  <rguenther@suse.de>
23017
23018         PR tree-optimization/31146
23019         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
23020         to allow recursion of forward_propagate_addr_expr.
23021         (forward_propagate_addr_into_variable_array_index): Likewise.
23022         (forward_propagate_addr_expr): Likewise.
23023         (tree_ssa_forward_propagate_single_use_vars): Likewise.
23024         (forward_propagate_addr_expr_1): Recurse on simple copies
23025         instead of propagating into them.  Do so for useless conversions
23026         as well.
23027         (forward_propagate_addr_expr): Clean up unused statements after
23028         recursion.
23029
23030 2007-03-16  Richard Guenther  <rguenther@suse.de>
23031
23032         * builtins.c (expand_builtin_cexpi): Use the right argument
23033         for the expansion via cexp.
23034
23035 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
23036
23037         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
23038         * configure: Rebuilt.
23039
23040 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
23041
23042         PR debug/29906
23043         * dwarf2out.c (force_type_die): Adjust comment.
23044         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
23045
23046 2007-03-15  DJ Delorie  <dj@redhat.com>
23047
23048         * config/frv/predicates.md (minmax_operator): Don't check operands
23049         here.
23050
23051 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
23052
23053         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
23054         Update constant estimates of number of iterations.
23055         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
23056         argument renamed to "realistic".
23057         (compute_estimated_nb_iterations): Removed.
23058         (record_niter_bound): New function.
23059         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
23060         call record_nonwrapping_iv with upper = false.
23061         (infer_loop_bounds_from_signedness): Pass upper argument to
23062         record_nonwrapping_iv.
23063         (estimate_numbers_of_iterations_loop): Do not call
23064         compute_estimated_nb_iterations.  Record estimate based on profile
23065         information.  Initialize the constant estimates of number of
23066         iterations.
23067         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
23068         estimates.
23069         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
23070         number of iterations is too small.
23071         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
23072         (EST_NOT_AVAILABLE): Removed.
23073         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
23074         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
23075         fields.
23076
23077 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
23078
23079         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
23080         Handle NE_EXPR guards.
23081
23082 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23083
23084         PR c++/24924
23085         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
23086         Set also -pedantic-errors by default for the  preprocessor unless
23087         -fpermissive is given.
23088
23089 2007-03-15  Richard Guenther  <rguenther@suse.de>
23090
23091         PR middle-end/29719
23092         PR middle-end/31161
23093         * builtins.c (expand_builtin_cexpi): As a fallback if we
23094         don't have builtins for sincos or cexp create a function
23095         declaration for cexp and expand to a call to that.
23096         (expand_builtin_int_roundingfn): Always fall
23097         back to floor/ceil and its variants even if they may be
23098         not available.
23099
23100 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
23101
23102         PR middle-end/31159
23103         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
23104         jump tables, move the call to delete_dead_jumptables from here...
23105         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
23106         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
23107         don't allow merging of blocks that try_redirect_by_replacing_jump
23108         also does not handle when not optimizing.
23109
23110 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
23111             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
23112
23113         * config/i386/i386.md (x86_sahf_1): Correctly handle
23114         HAVE_AS_IX86_SAHF.
23115
23116 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
23117
23118         PR target/31167
23119         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
23120         x86_64_general_operand as operand[2] predicate.  Remove "iF"
23121         from operand constraints and use "e" constraint instead.
23122         (*subti3_1, *subti3_1 splitter): Ditto.
23123         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
23124         operand[1] predicate.
23125
23126 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
23127
23128         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
23129         arrays, multiply the access strides by the size of the sub-array.
23130         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
23131
23132 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
23133
23134         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
23135         the configured assembler supports the sahf mnemonic.
23136         * configure: Regenerate.
23137         * config.in: Regenerate.
23138
23139         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
23140         emit "sahf" or ".byte\t0x9e" as asm template.
23141
23142 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
23143
23144         PR 31018
23145         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
23146         option to replace hard coded TARGET_xxx in md file.
23147         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
23148         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
23149         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
23150         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
23151         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
23152         (X86_TUNE_NOT_VECTORMODE): Ditto.
23153         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
23154         (TUNE_AVOID_VECTOR_DECODE): Ditto.
23155         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
23156         (TUNE_SLOW_IMUL_IMM8): Ditto.
23157         (TUNE_MOVE_M1_VIA_OR): Ditto.
23158         (TUNE_NOT_UNPAIRABLE): Ditto.
23159         (TUNE_NOT_VECTORMODE): Ditto.
23160
23161         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
23162         options.
23163
23164         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
23165         tuning options instead of hard coded TARGET_xxx.
23166         (fix ssemode peephole2's): Ditto.
23167         (imul peephole2's): Ditto.
23168         (movsi_or): Ditto.
23169         (movdi_or_rex64): Ditto.
23170         (move peephole2): Ditto.
23171         (not peephole2's): Ditto.
23172
23173 2007-03-14  Dirk Mueller  <dmueller@suse.de>
23174
23175         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
23176         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
23177         * c-parser.c (c_parser_if_body): Always add an empty statement in case
23178         of empty body.
23179         * c-parser.c (c_parser_do_statement): Warn about empty body in
23180         do/while statement.
23181         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
23182         * doc/invoke.texi (-Wempty-body): Update documentation.
23183
23184 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23185
23186         PR c/21438
23187         * c-common.h (warn_for_div_by_zero): Declare.
23188         * c-common.c (warn_for_div_by_zero): Define.
23189         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
23190         warning.
23191
23192 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
23193
23194         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
23195         to PREFIX and STANDARD_PREFIX.
23196
23197 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
23198             Phil Edwards  <phil@codesourcery.com>
23199
23200         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
23201         (__gthread_once_t): Remove busy field for RTPs.
23202         (__GTHREAD_ONCE_INIT): Update accordingly.
23203
23204 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
23205
23206         * doc/invoke.texi: Document VxWorks options.
23207
23208 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
23209
23210         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
23211
23212 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
23213
23214         PR tree-optimization/30590
23215         * tree-nrv.c (tree_nrv): Check for the partial update of the
23216         return value.
23217
23218 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
23219
23220         * flags.h (flag_random_seed): Remove declaration, in favor of...
23221         * toplev.h (get_random_seed, set_random_seed): ... these.
23222         * tree.c (get_file_function_name): Use the former.
23223         * opts.c (common_handle_option): Use the latter.
23224         * toplev.c
23225
23226 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
23227
23228         PR middle-end/31127
23229         * cse.c (cse_find_path): Do not bail out if a basic block that
23230         we already visited now becomes part of a path that starts at a
23231         different basic block.  Just disallow this, to make sure we
23232         visit each basic block at most once.
23233
23234 2007-03-13  Jan Hubicka  <jh@suse.cz>
23235
23236         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
23237         attributes, when profile esitmate is present, calls with very low
23238         frequency are cold.
23239
23240 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
23241
23242         PR tree-optimization/30730
23243         PR tree-optimization/26900
23244         * tree-ssa-loop-niter.c: Include gmp.h.
23245         (bounds): New type.
23246         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
23247         split_to_var_and_offset, determine_value_range,
23248         bound_difference_of_offsetted_base, refine_bounds_using_guard,
23249         bound_difference, bounds_add, bounds_negate,
23250         number_of_iterations_ne_max, dump_affine_iv): New functions.
23251         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
23252         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
23253         difference of initial and final value of control iv to validate
23254         results.
23255         (number_of_iterations_cond): Add loop parameter.  Determine bounds
23256         on the difference of the extremes of the control iv.  Add dumps.
23257         (expand_simple_operations): Handle phi nodes.
23258         (simplify_using_initial_conditions): Do not record used conditions.
23259         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
23260         Do not set additional_info.
23261         (implies_nonnegative_p, implies_ge_p): Removed.
23262         (derive_constant_upper_bound): Do not use parameter `additional'.
23263         (record_estimate): Parameter `additional' removed.  Parameter
23264         `i_bound' added.  Do not call derive_constant_upper_bound.
23265         (record_nonwrapping_iv): Use derive_constant_upper_bound to
23266         bound the number of iterations estimate.
23267         (estimate_numbers_of_iterations_loop): Pass the estimate from
23268         the number of iterations analysis to record_estimate.
23269         * tree.h (multiple_of_p): Declare.
23270         * tree-scalar-evolution.c (expression_expensive_p): Removed.
23271         (scev_const_prop): Do not check expression_expensive_p.
23272         * fold-const.c (multiple_of_p): Exported.
23273         * double-int.c (double_int_mask): Exported.
23274         * double-int.h (double_int_mask): Declare.
23275         * tree-flow.h (struct tree_niter_desc): Removed additional_info
23276         field.  Added max field.
23277
23278 2007-03-13  David Taylor  <taylor@candd.org>
23279
23280         PR driver/12448:
23281         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
23282         default -MQ.
23283
23284 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23285
23286         PR target/31123
23287         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
23288         two unamed patterns.
23289
23290 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
23291
23292         * config/i386/i386.opt (mcx16, msahf): New options.
23293         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
23294         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
23295
23296         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
23297         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
23298         Output -mcx16 and -msahf options when corresponding bit is set.
23299
23300         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
23301         and -msahf options.
23302
23303 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
23304
23305         * configure.ac: Test for assembler tolerance to # 0 "".
23306         * configure, config.in: Rebuilt.
23307         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
23308
23309 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
23310
23311         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
23312
23313         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
23314         (handle_syscall): Handle direct system calls.
23315         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
23316
23317 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
23318
23319         * doc/invoke.texi: Fix cpp.info cross-reference.
23320         * doc/passes.texi: Fix gcc.info cross-reference.
23321
23322 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
23323
23324         PR tree-optimization/30835
23325         * lambda-code.c (can_convert_to_perfect_nest): Check whether
23326         bb_for_stmt is not NULL before accessing it.
23327
23328 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
23329
23330         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
23331         some multilibs.
23332
23333 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
23334
23335         PR 30635
23336         * doc/install.texi: Document --enable-stage1-languages
23337
23338 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
23339
23340         * tree-pass.h (pass_into_cfg_layout_mode,
23341         pass_outof_cfg_layout_mode): Declare.
23342         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
23343         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
23344         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
23345         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
23346
23347 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
23348
23349         * c-decl.c (warn_variable_length_array): New function.
23350         Refactored from grokdeclarator to handle warn_vla
23351         and handle unnamed array case.
23352         (grokdeclarator): Refactored VLA warning case.
23353         * c.opt (Wvla): New flag.
23354         * doc/invoke.texi (Wvla): New warning.
23355
23356 2007-03-12  Richard Henderson  <rth@redhat.com>
23357
23358         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
23359         (TARGET_SECTION_TYPE_FLAGS): New.
23360
23361 2007-03-12  Richard Henderson  <rth@redhat.com>
23362
23363         * config/darwin.c (machopic_reloc_rw_mask): New.
23364         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
23365         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
23366
23367 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
23368
23369         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
23370         * cppdefault.h (cpp_PREFIX): Document.
23371         (cpp_PREFIX_len): Likewise.
23372         (cpp_EXEC_PREFIX): New variable.
23373         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
23374         * c-incpath.c (add_standard_paths): Correct logic for relocating
23375         paths within prefix.
23376
23377 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
23378
23379         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
23380         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
23381         mode macro.
23382         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
23383         fix_truncdfdi_sse using SSEMODEF mode macro.
23384         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
23385         fix_truncdfsi_sse using SSEMODEF mode macro.
23386         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
23387         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
23388
23389 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
23390
23391         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
23392         elfos.h to tm_file.
23393
23394 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
23395
23396         * tree.h : Add multiple_of_p declaration.
23397         * fold-const.c (multiple_of_p): Make multiple_of_p public.
23398         * ipa-type-escape.c (results_of_malloc): Redundant.
23399         (visited_stmts): New. Visited stmt for walk_use_def_chains.
23400         (cast_type): Extended with new members.
23401         (check_cast): Returns cast_type.
23402         (cast): New structure for data of walk_use_def_chains.
23403         (is_malloc_result, is_cast_from_non_pointer_1,
23404         is_cast_from_non_pointer,
23405         is_array_access_through_pointer_and_index): New functions.
23406         (look_for_casts): Returns cast types.
23407         (check_call): Returns void.
23408         (okay_pointer_operation): Use support of pointer plus index,
23409         pointer plus constant and allow all multiplications.
23410
23411 2007-03-11  Richard Guenther  <rguenther@suse.de>
23412
23413         PR tree-optimization/31115
23414         * tree-vrp.c (extract_range_from_binary_expr): Make sure
23415         the shift count is positive and non-anti-range for RSHIFT_EXPR.
23416         A shift count of zero is not special as with *_DIV_EXPR.
23417         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
23418         direction.
23419
23420 2007-03-11  Ian Lance Taylor  <iant@google.com>
23421
23422         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
23423         the *_DIV_EXPR codes correctly with overflow infinities.
23424
23425 2007-03-11  Ira Rosen  <irar@il.ibm.com>
23426
23427         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
23428         indicate success/failure of the analysis. Add negation to subtrahend
23429         in case of subtraction. Fail if both operands contain constants.
23430         (create_data_ref): Fail if analyze_offset fails.
23431
23432 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
23433
23434         * config/i386/i386.md (frndintxf2): Rename to ...
23435         (rintxf2): ... this. Remove expander having same name.
23436         (rintsf2, rintdf2): Implement using SSEMODEF macro.
23437         (roundsf2, rounddf2): Ditto.
23438         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
23439         (lround<mode>di2, lround<mode>si2): Ditto.
23440
23441 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
23442
23443         * lower-subreg.c: Include except.h.
23444         (decompose_multiword_subregs): Verify that the only control flow
23445         insns we can split are loads to multi-words pseudos.
23446         Handle breaking such blocks after splitting, instead of calling
23447         find_many_sub_basic_blocks.
23448
23449         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
23450         on the new basic block.  Add a lengthy comment explaining why we
23451         thought this was necessary.
23452         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
23453
23454 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
23455
23456         PR c++/30924
23457         * tree.c (walk_type_fields): Recurse into the element type of
23458         ARRAY_TYPEs if there is a pointer set.
23459
23460 2007-03-10  Dirk Mueller  <dmueller@suse.de>
23461
23462         * c-common.c (warn_logical_operator): Fix condition.
23463
23464 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
23465
23466         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
23467         quotation mark.
23468         * config/darwin.c (machopic_select_section): Remove superfluous
23469         argument in call to categorize_decl_for_section.  Remove unused
23470         variable shlib.
23471
23472 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
23473
23474         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
23475         defined.
23476         * configure: Regenerate.
23477
23478 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
23479
23480         PR target/31101
23481         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
23482         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
23483         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
23484         Add LABEL_NUSES to emitted label.
23485         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
23486         branch probability value to emitted jump insn.
23487         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
23488         Do not check life information and do not re-arrange input operands
23489         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
23490
23491 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
23492
23493         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
23494         the change of decode_asm_operands.
23495
23496 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
23497
23498         * mode-switching.c (create_pre_exit): Skip blockage insn.
23499
23500 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
23501
23502         * tree-pass.h (TODO_update_smt_usage): Remove.
23503         Update all users.
23504         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
23505         argument SOME.
23506         Update all users.
23507
23508 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23509
23510         * pa.c (attr_length_call): Revise condition for long
23511         pc-relative branch.
23512         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
23513         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
23514         sequence on SOM target.
23515
23516 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
23517
23518         * gcc.c: Document %{, in big comment at top.
23519         (input_suffix_matches): Remove special handling for .s and
23520         .S.
23521         (input_spec_matches): New.
23522         (handle_braces): Handle %{,.
23523         (validate_switches): ',' indicates a value which is not a switch.
23524         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
23525         to detect assembler input.
23526         * config/i386/sol2.h (CPP_SPEC): Likewise.
23527         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
23528         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
23529         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
23530         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
23531         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
23532         -m64 causes deployment target to default to 10.5.
23533         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
23534
23535 2007-03-09  Richard Henderson  <rth@redhat.com>
23536
23537         PR target/26090
23538         * target.h (targetm.asm.out.reloc_rw_mask): New.
23539         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
23540         (TARGET_ASM_OUT): Use it.
23541         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
23542         * varasm.c (categorize_decl_for_section): Remove shlib argument;
23543         use the new reloc_rw_mask target hook instead.
23544         (default_section_type_flags_1): Merge into...
23545         (default_section_type_flags): ... here.
23546         (decl_readonly_section_1): Merge into...
23547         (decl_readonly_section): ... here.
23548         (default_elf_select_section_1): Merge into...
23549         (default_elf_select_section): ... here.
23550         (default_unique_section_1): Merge into...
23551         (default_unique_section): ... here.
23552         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
23553         (default_select_rtx_section): Use it.
23554         (default_elf_select_rtx_section): Likewise.
23555         * output.h: Update to match.
23556         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
23557         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
23558         (TARGET_ASM_RELOC_RW_MASK): New.
23559         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
23560         to categorize_decl_for_section.
23561         (x86_64_elf_unique_section): Likewise.
23562         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
23563         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
23564         (TARGET_ASM_RELOC_RW_MASK): New.
23565         * config/ia64/ia64.c (ia64_rwreloc_select_section,
23566         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
23567         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
23568         (TARGET_RWRELOC): Remove.
23569         (ia64_section_type_flags): Adjust call to default_section_type_flags.
23570         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
23571         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
23572         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
23573         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
23574         (rs6000_xcoff_select_section): Use decl_readonly_section.
23575         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
23576         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
23577         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
23578         (TARGET_SECTION_TYPE_FLAGS): Remove.
23579         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
23580
23581 2007-03-09  Roger Sayle  <roger@eyesopen.com>
23582
23583         * fold-const.c (fold_comparison): Remove compile-time evaluation of
23584         complex constant equality/inequality comparisons for here.
23585         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
23586         known at compile-time or can be simplified to a scalar comparison.
23587         (fold_relational_const): Move compile-time evaluation of complex
23588         constant equality/inequality comparisons to here.
23589
23590 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
23591
23592         PR rtl-optimization/30643
23593         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
23594         dest_addr_elt.
23595         (fold_rtx): Recurse, like before 2006-11-03.
23596
23597 2007-03-09  DJ Delorie  <dj@redhat.com>
23598
23599         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
23600         m32c-pragma.o.
23601
23602 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
23603
23604         PR tree-optimization/30375
23605         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
23606         LHS of statements is not the same.
23607         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
23608
23609 2007-03-09  Chao-ying Fu  <fu@mips.com>
23610
23611         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
23612         REV 2.
23613         * doc/invoke.texi (-mdspr2): Document new option.
23614         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
23615         New unspec for DSP REV 2.
23616         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
23617         these instructions are extended in DSP REV 2.
23618         (mips-dspr2.md): Include.
23619         * config/mips/mips.opt (mdspr2): New option.
23620         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
23621         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
23622         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
23623         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
23624         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
23625         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
23626         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
23627         and 2 builtins.
23628         (bdesc_map): Add one field of unsupported_target_flags.
23629         (bdesc_arrays): Update entries to have extra fields.  Add
23630         dsp_32only_bdesc.
23631         (mips_init_builtins): Initialize new function types.
23632         Check unsupported_target_fileds to filter out builtins.
23633         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
23634         TARGET_DSPR2.
23635         (ASM_SPEC): Pass mdspr2 to the assembler.
23636         * config/mips/mips-dspr2.md: New file.
23637
23638 2007-03-09  Sa Liu  <saliu@de.ibm.com>
23639
23640         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
23641
23642 2007-03-09  Ian Lance Taylor  <iant@google.com>
23643
23644         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
23645         argument) like -Wstrict-overflow=2.
23646         * doc/invoke.texi (Warning Options): Update documentation.
23647
23648 2007-03-09  Dirk Mueller  <dmueller@suse.de>
23649
23650         PR c++/17946
23651         * doc/invoke.texi (-Wlogical-op): Document.
23652         * common.opt (-Wlogical-op): New.
23653         * c-common.h (warn_logical_operator): Declare.
23654         * c-common.c (warn_logical_operator): Define.
23655         * c-typeck.c (parser_build_binary_op): Call
23656         warn_logical_operator.
23657
23658 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
23659
23660         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
23661         * final.c (final_scan_insn): Test for non-"" file name.
23662
23663 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
23664
23665         * doc/loop.texi: Document the Omega linear constraints solver.
23666         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
23667         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
23668         omega-hash-table-size, omega-max-keys, and
23669         omega-eliminate-redundant-constraints.
23670         * tree-pass.h (pass_check_data_deps): Declared.
23671         * omega.c: New.
23672         * omega.h: New.
23673         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
23674         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
23675         pass_check_data_deps): New.
23676         * tree-data-ref.c (init_data_ref): Remove declaration.
23677         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
23678         (analyze_array): Renamed init_array_ref, move up initializations.
23679         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
23680         Removed arguments that are set to NULL.
23681         (analyze_indirect_ref): Correct indentation, correct call to
23682         init_pointer_ref.
23683         (object_analysis): Call init_array_ref instead of analyze_array.
23684         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
23685         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
23686         of DR_ACCESS_FNS_ADDR.
23687         (init_omega_eq_with_af, omega_extract_distance_vectors,
23688         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
23689         ddr_consistent_p): New.
23690         (compute_affine_dependence): Check consistency of ddrs when
23691         flag_check_data_deps is passed.
23692         (analyze_all_data_dependences): Uncomment.
23693         (tree_check_data_deps): New.
23694         * tree-data-ref.h: Include omega.h.
23695         (DR_ACCESS_FNS_ADDR): Removed.
23696         (data_dependence_relation): Add inner_loop.
23697         (DDR_INNER_LOOP): New.
23698         * common.opt (fcheck-data-deps): New.
23699         * tree-flow.h (tree_check_data_deps): Declare.
23700         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
23701         (OBJS-common): Depend on omega.o.
23702         (omega.o): Define.
23703         * passes.c (pass_check_data_deps): Scheduled.
23704         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
23705         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
23706         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
23707         PARAM_VECT_MAX_VERSION_CHECKS,
23708         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
23709
23710 2007-03-09  Richard Guenther  <rguenther@suse.de>
23711
23712         PR tree-optimization/30904
23713         PR middle-end/31058
23714         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
23715         the same way as *_DIV_EXPR.
23716
23717 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
23718
23719         * recog.c (decode_asm_operands): No mixed declarations and code.
23720
23721 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
23722
23723         * rtl.def (ASM_INPUT): Add location.
23724         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
23725         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
23726         (decode_asm_operands): Add loc operand.
23727         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
23728         * stmt.c (expand_asm): Rename to...
23729         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
23730         gen_rtx_ASM_INPUT_loc.
23731         (expand_asm_expr): Adjust.
23732         * recog.c (decode_asm_operands): Add loc operand.
23733         (check_asm_operands, extract_insn): Adjust.
23734         * reload1.c (maybe_fix_stack_asms): Likewise.
23735         * final.c (asm_insn_count): Likewise.
23736         (final_scan_insn): Output # line before and after asm.
23737
23738 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
23739
23740         * tree-ssa-structalias.c (variable_info): Remove
23741         finished_solution.
23742         (new_var_info): Ditto.
23743         (shared_bitmap_info_t): New structure.
23744         (shared_bitmap_table): New variable.
23745         (shared_bitmap_hash): New function.
23746         (shared_bitmap_eq): Ditto
23747         (shared_bitmap_lookup): Ditto.
23748         (shared_bitmap_add): Ditto.
23749         (merge_smts_into): Change to take bitmap directly.
23750         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
23751         (init_alias_vars): Init shared bitmap hashtable.
23752         (delete_points_to_sets): Delete shared bitmap hashtable.
23753         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
23754         is_aliased removal as a change that was still necessary was
23755         deleted.
23756
23757 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
23758
23759         * config/i386/i386.h (override_options): Conditionally disable
23760         x86_sahf for 64bit targets only.
23761
23762 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23763
23764         PR C/31072
23765         * c-decl.c (merge_decls): Don't call make_var_volatile.
23766         * varasm.c (make_var_volatile): Remove.
23767         * output.h (make_var_volatile): Remove.
23768
23769 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
23770
23771         PR tree-optimization/31085
23772         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
23773
23774 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23775
23776         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
23777         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
23778         ATTR_CONST_NOTHROW_LIST.
23779
23780         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
23781         FIX_TRUNC_EXPR.
23782
23783 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
23784
23785         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
23786
23787 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
23788
23789         PR 31013
23790         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
23791         is declared.
23792         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
23793         passed, use shared libgcc.
23794
23795 2007-03-08  Roger Sayle  <roger@eyesopen.com>
23796
23797         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
23798         instead of calling build2 with a GIMPLE_MODIFY_STMT.
23799         (honor_protect_cleanup_actions, lower_try_finally_switch):
23800         Likewise.
23801         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
23802         ifc_temp_var): Likewise.
23803         * tree-inline.c (setup_one_parameter): Likewise.
23804         * tree-mudflap.c (mf_decl_cache_locals,
23805         mf_build_check_statement_for): Likewise.
23806         * tree-nested.c (init_tmp_var, save_tmp_var,
23807         finalize_nesting_tree_1): Likewise.
23808         * tree-outof-ssa.c (insert_copy_on_edge,
23809         insert_backedge_copies): Likewise.
23810         * tree-profile.c (tree_gen_edge_profiler,
23811         tree_gen_ic_profiler): Likewise.
23812         * tree-scalar-evolution.c (scev_const_prop): Likewise.
23813         * tree-sra.c (sra_build_assignment): Likewise.
23814         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
23815         * tree-ssa-math-opts.c (insert_reciprocals,
23816         execute_cse_sincos_1): Likewise.
23817         * tree-tailcall.c (adjust_accumulator_values,
23818         adjust_return_value): Likewise.
23819         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
23820         * tree-vect-transform.c (vect_create_data_ref_ptr,
23821         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
23822         vect_create_epilog_for_reduction, vectorizable_reduction,
23823         vectorizable_call, vectorizable_conversion,
23824         vectorizable_assignment, vectorizable_operation,
23825         vectorizable_type_demotion, vect_gen_widened_results_half,
23826         vect_permute_store_chain, vectorizable_store,
23827         vect_setup_realignment, vect_permute_load_chain,
23828         vectorizable_load, vectorizable_condition,
23829         vect_create_cond_for_align_checks): Likewise.
23830         * tree-vrp.c (build_assert_expr_for): Likewise.
23831
23832 2007-03-08  Ian Lance Taylor  <iant@google.com>
23833
23834         * tree-vrp.c: Include "intl.h".
23835         (usable_range_p): New static function.
23836         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
23837         overflowed values, juts set *strict_overflow_p.
23838         (compare_values): Only return -2 if one of the operands is not a
23839         constant.
23840         (compare_ranges): Call usable_range_p.
23841         (compare_range_with_value): Likewise.
23842         (vrp_evaluate_conditional_warnv): Rename from
23843         vrp_evaluate_conditional.  Make static.  Change all callers.
23844         (vrp_evaluate_conditional): New function.
23845         (simplify_div_or_mod_using_ranges): Issue warning about reliance
23846         on signed overflow.
23847         (simplify_abs_using_ranges): Likewise.
23848         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
23849         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
23850         within_stmt parameter.
23851         * tree-ssa-propagate.c (fold_predicate_in): Update call to
23852         vrp_evaluate_conditional.
23853         * tree-ssa-threadedge.c
23854         (record_temporary_equivalences_from_stmts_at_dest): Change
23855         simplify parameter to take a second tree parameter.
23856         (simplify_control_stmt_condition): Likewise.
23857         (thread_across_edge): Likewise.
23858         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
23859         (thread_across_edge): Likewise.
23860         * Makefile.in (tree-vrp.o): Depend upon intl.h.
23861
23862 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
23863
23864         * config/i386/i386.h (TARGET_SAHF): New define.
23865         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
23866         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
23867         (x86_sahf): New global variable.
23868         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
23869         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
23870         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
23871         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
23872         for 64-bit.
23873         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
23874         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
23875         when expanding fcomi/sahf based tests.
23876         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
23877         expanding sahf based alternative. Emit sahf based sequence when
23878         optimizing for code size.
23879         * config/i386/i386.md (x86_sahf_1): Do not disable for
23880         TARGET_64BIT, enable for TARGET_SAHF.
23881
23882 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
23883
23884         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
23885         spurious whitespace from error message.
23886
23887 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
23888
23889         PR c++/30852
23890         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
23891
23892 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
23893
23894         * c-decl.c (grokdeclarator): Disable warnings for anonymous
23895         bitfields.
23896         * tree-sra.c (instantiate_element): Propagate disabled warnings
23897         from the element itself to the created variable.
23898
23899 2007-03-07  Richard Henderson  <rth@redhat.com>
23900
23901         PR target/30848
23902         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
23903         silently fix up the stack in the case of a missing register.
23904
23905 2007-03-07  Paul Brook  <paul@codesourcery.com>
23906
23907         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
23908
23909 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
23910
23911         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
23912         New.
23913         (phase1_vrs): Use them.
23914         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
23915         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
23916         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
23917         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
23918         __gnu_Unwind_Restore_WMMXC if required.
23919         (_Unwind_VRS_Pop): Implement iWMMXt support.
23920         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
23921         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
23922         gnu_Unwind_Save_WMMXC): Define.
23923
23924 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
23925
23926         * config/vxworks.h (vxworks_override_options): Declare.
23927         (VXWORKS_OVERRIDE_OPTIONS): Use it.
23928         * config/vxworks.c: Include target.h and toplev.h.
23929         (vxworks_override_options): New function.
23930         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
23931
23932 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
23933
23934         * config/s390/s390.c (override_options): Don't emit an error when
23935         -mstack-size is used without providing -mstack-guard.
23936         (s390_emit_prologue): Choose stack_guard value automatically if not
23937         provided via command line.
23938         * doc/invoke.texi: Adjust description of -mstack-guard and
23939         -mstack-size.
23940
23941 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
23942
23943         * config/i386/i386.c (output_set_got): Add a GOT initialization
23944         sequence for VxWorks PIC.
23945         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
23946         around labels as well as symbols.  Use gotoff_operand instead
23947         of local_symbolic_operand.
23948         (legitimize_pic_address): Use gotoff_operand instead of
23949         local_symbolic_operand.  Use @GOT accesses for labels as
23950         well as symbols.
23951         (ix86_output_addr_diff_elt): Use PC-relative rather than
23952         GP-relative offsets for VxWorks PIC.
23953         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
23954         no_new_pseudos.  Check whether the returned register is op0.
23955         * config/i386/i386.md (tablejump): Use PC-relative rather than
23956         GP-relative offsets for VxWorks PIC.
23957         * config/i386/predicates.md (gotoff_operand): New predicate.
23958
23959 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23960
23961         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
23962         before defining.
23963         * config/vxworks-dummy.h: New file.
23964         * config/i386/i386.h: Include it.
23965
23966 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
23967
23968         * dwarf2out.c (is_inlined_entry_point): New
23969         (add_high_low_attributes): Emit DW_AT_entry_pc along with
23970         DW_AT_ranges if the first subblock is the entry point.
23971
23972 2007-03-06  David Daney  <ddaney@avtrex.com>
23973
23974         * doc/install.texi (mips-*-*): Change recommended binutils
23975         version.
23976
23977 2007-03-06  Anatoly Sokolov <aesok@post.ru>
23978
23979         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
23980         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
23981         devices.
23982         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
23983         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
23984
23985 2007-03-06  Jan Hubicka  <jh@suse.cz>
23986
23987         * errors.h (warning, error, fatal, internal_error): Mark as cold.
23988         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
23989         functions are hot.
23990         (probably_cold_bb_p): Cold functions are cold.
23991         (probably_never_executed_bb_p): Cold functions are cold.
23992         (tree_bb_level_predictions): Predict calls to cold functions as not
23993         taken.
23994         (compute_function_frequency): Check hot/cold attributes.
23995         * function.h (function_frequency): Update comments.
23996         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
23997         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
23998         (c_common_att): Add cold and hot.
23999
24000         * doc/extend.texi (hot,cold attributes): Document.
24001
24002 2007-03-06  Andrew Haley  <aph@redhat.com>
24003
24004         * function.c (expand_function_end): Move blockage to just after we
24005         emit the label for the naked return from the function.
24006
24007 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24008
24009         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
24010         before redefining.
24011
24012 2007-03-06  Jan Hubicka  <jh@suse.cz>
24013
24014         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
24015         loaded for constant large models.  Non-large 64bit PIC can do.
24016         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
24017         * cmodel.h: Add LARGE PIC.
24018         * i386.md (UNSPEC_PLTOFF): New.
24019         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
24020         unspecs as needed.
24021         (*call_1_rex64): Disable for large models.
24022         (*call_1_rex64_large): New.
24023         (*call_value_1_rex64): Disable for large models.
24024         (*call_value_1_rex64_large): New.
24025         (set_rip_rex4): New.
24026         (set_got_offset_rex64): New.
24027         * predicates.md (constant_call_address_operand): For large model
24028         constant calls are not possible.
24029         * i386-protos.h (construct_plt_address): Declare.
24030         * i386.c (override_options): Accept large models.
24031         (ix86_expand_prologue): Expand large PIC GOT pointer load.
24032         (legitimate_constant_p): Add new UNSPECs.
24033         (legitimate_pic_operand_p): Likewise.
24034         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
24035         (legitimize_pic_address): Do easy RIP relative way for TLS only for
24036         non-large model.
24037         (output_pic_addr_const): Add PLTOFF.
24038         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
24039         (ix86_expand_move): Legitimize pic address when in PIC mode.
24040         (construct_plt_address): New function.
24041         (ix86_expand_call): Offload the address to register and use GOT
24042         pointer for large model.
24043         * invoke.texi (mcmodel=large): Update documentation.
24044
24045 2007-03-06  Richard Henderson  <rth@redhat.com>
24046
24047         * config/i386/i386.c (x86_use_leave, x86_push_memory,
24048         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
24049         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
24050         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
24051         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
24052         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
24053         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
24054         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
24055         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
24056         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
24057         x86_partial_reg_dependency, x86_memory_mismatch_stall,
24058         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
24059         x86_sse_partial_reg_dependency, x86_sse_split_regs,
24060         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
24061         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
24062         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
24063         x86_schedule, x86_use_bt, x86_pad_returns,
24064         x86_use_xchgb): Merge into ...
24065         (ix86_tune_features): ... here.  New array.
24066         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
24067         x86_bswap): Merge into ...
24068         (ix86_arch_features): ... here.  New array.
24069         (x86_3dnow_a): Remove.
24070         (x86_accumulate_outgoing_args): Make static.
24071         (x86_arch_always_fancy_math_387): Make static.
24072         (ix86_tune_mask, ix86_arch_mask): Move ...
24073         (override_options): ... to local variables here.  Apply the
24074         appropriate mask to each element of ix86_arch_features and
24075         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
24076         as were done in the old macros.
24077         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
24078         * config/i386/i386.h (x86_use_leave, x86_push_memory,
24079         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
24080         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
24081         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
24082         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
24083         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
24084         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
24085         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
24086         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
24087         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
24088         x86_partial_reg_dependency, x86_memory_mismatch_stall,
24089         x86_accumulate_outgoing_args, x86_prologue_using_move,
24090         x86_epilogue_using_move, x86_decompose_lea,
24091         x86_arch_always_fancy_math_387, x86_shift1,
24092         x86_sse_partial_reg_dependency, x86_sse_split_regs,
24093         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
24094         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
24095         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
24096         x86_use_incdec, x86_pad_returns, x86_bswap,
24097         x86_partial_flag_reg_stall): Remove.
24098         (enum ix86_tune_indices): New.
24099         (ix86_tune_features): New.
24100         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
24101         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
24102         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
24103         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
24104         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
24105         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
24106         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
24107         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
24108         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
24109         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
24110         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
24111         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
24112         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
24113         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
24114         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
24115         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
24116         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
24117         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
24118         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
24119         TARGET_EXT_80387_CONSTANTS): Use it.
24120         (enum ix86_arch_indices): New.
24121         (ix86_arch_features): New.
24122         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
24123         TARGET_BSWAP): Use it.
24124         (ix86_tune_mask, ix86_arch_mask): Remove.
24125
24126 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
24127
24128         PR bootstrap/31020
24129         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
24130         Define using $${sysroot_headers_suffix}.
24131         * configure: Regenerate.
24132         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
24133         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
24134         defined.
24135         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
24136         * gcc.c (print_sysroot_headers_suffix): New.
24137         (option_map): Include --print-sysroot-headers-suffix.
24138         (display_help): Mention -print-sysroot-headers-suffix.
24139         (process_command): Handle -print-sysroot-headers-suffix.
24140         (do_spec_1): Append multilib directory to include-fixed path if
24141         sysroot suffixes in use.
24142         (main): Handle -print-sysroot-headers-suffix.
24143         * Makefile.in (start.encap): Don't depend on xlimits.h
24144         (xlimits.h): Remove.
24145         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
24146         limits.h for each multilib in fixinc_list.
24147         (fixinc_list, s-fixinc_list): New.
24148         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
24149         generate them for each multilib in fixinc_list.
24150         (stmp-fixproto): Use include-fixed.  Run fixproto for each
24151         multilib in fixinc_list.
24152         (mostlyclean): Don't remove xlimits.h.
24153         (clean): Remove include-fixed.
24154         (real-install-headers-tar, real-install-headers-cpio,
24155         real-install-headers-cp): Don't copy include, only include-fixed.
24156         (install-mkheaders): Depend on fixinc_list.  Don't depend on
24157         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
24158         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
24159         SYSTEM_HEADER_DIR setting in mkheaders.conf.
24160
24161 2007-03-06  Jan Hubicka  <jh@suse.cz>
24162
24163         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
24164         NANs easilly.
24165
24166 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24167
24168         * configure.ac: Allow tm_file to contain build-directory files.
24169         * configure: Regenerate.
24170         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
24171         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
24172         * config/m68k/print-sysroot-suffix.sh: New file.
24173
24174 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24175
24176         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
24177         of pic_offset_table_rtx if reload_completed.
24178         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
24179         PIC_OFFSET_TABLE_REGNUM.
24180         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
24181         return true.
24182         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
24183         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
24184
24185 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24186
24187         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
24188         functions that call eh_return.
24189
24190 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24191
24192         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
24193         functions that need a constant pool.
24194
24195 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24196
24197         PR target/28181
24198         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
24199         (m68k_preferred_reload_class): Likewise.
24200         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
24201         (SECONDARY_RELOAD_CLASS): Define.
24202         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
24203         (LIMIT_RELOAD_CLASS): Delete.
24204         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
24205         registers from storing bytes.
24206         (m68k_secondary_reload_class): New function.
24207         (m68k_preferred_reload_class): Likewise.
24208
24209 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24210
24211         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
24212         leaf functions.
24213         (m68k_expand_prologue): Likewise.
24214
24215 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24216
24217         * config/m68k/m68k-protos.h (output_sibcall): Declare.
24218         (mips_expand_epilogue): Add a bool parameter.
24219         (m68k_legitimize_sibcall_address): Declare.
24220         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
24221         (m68k_expand_epilogue): Add a parameter to select between sibling
24222         and normal epilogues.  Only generate a return for the latter.
24223         (m68k_ok_for_sibcall_p): New function.
24224         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
24225         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
24226         (sibcall_value, *sibcall_value): Likewise.
24227         (*call, *call_value): Require !SIBLING_CALL_P.
24228         (epilogue): Update call to m68k_expand_epilogue.
24229         (sibcall_epilogue): New pattern.
24230         * config/m68k/predicates.md (const_call_operand): Say that this
24231         predicate applies to sibling calls too.
24232         (sibcall_operand): New predicate.
24233
24234 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24235
24236         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
24237         alternatives as movsi_cf.
24238         (movsf_cf_hard): Add commentary.
24239
24240 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
24241             Richard Sandiford  <richard@codesourcery.com>
24242
24243         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
24244         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
24245         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
24246         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
24247         as being live on exit from an interrupt function.
24248         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
24249         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
24250         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
24251         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
24252         (m68k_interrupt_function_p): Globalize.
24253         (m68k_compute_frame_layout): Remove reverse mask code.
24254         (m68k_emit_movem, m68k_set_frame_related): New functions.
24255         (m68k_output_function_prologue): Delete in favor of...
24256         (m68k_expand_prologue): ...this new function.
24257         (m68k_output_function_epilogue): Delete in favor of...
24258         (m68k_expand_epilogue): ...this new function.
24259         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
24260         functions.
24261         (print_operand): Handle %?.
24262         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
24263         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
24264         (prologue, epilogue): New patterns.
24265         (return): Turn into a define_expand.
24266         (*return): New pattern, derived from old "return" pattern.  Use rte
24267         rather than rts for interrupt functions.  Only use rtd if the pop
24268         count is nonzero.
24269         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
24270         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
24271         (link, *link, unlink, *unlink, load_got): Likewise.
24272
24273 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24274
24275         PR target/23482
24276         PR target/17114
24277         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
24278         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
24279         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
24280         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
24281         and m68k_matches_u_p.
24282         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
24283         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
24284         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
24285         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
24286         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
24287         (REG_STRICT_P): New macro.
24288         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
24289         PCREL_GENERAL_OPERAND_OK.
24290         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
24291         m68k_legitimate_base_reg_p.
24292         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
24293         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
24294         (PIC_CASE_VECTOR_ADDRESS): Update comment.
24295         * config/m68k/m68k.c (m68k_address): New structure.
24296         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
24297         (m68k_decompose_index, m68k_legitimate_constant_address_p)
24298         (m68k_jump_table_ref_p, m68k_decompose_address)
24299         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
24300         (m68k_matches_u_p): New functions.
24301         (print_operand_address): Rewrite to use m68k_decompose_index.
24302
24303 2007-03-05  David Taylor  <dtaylor@emc.com>
24304
24305         * gcc.c: Correct copyright date in --version output.
24306
24307 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24308
24309         * pa.md: In unamed move patterns, disparge copies between general
24310         and floating point registers using '?' modifier.  Don't include 'f'
24311         constraint for register preferences in DImode, SImode, HImode and
24312         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
24313         Remove constraints for copies between general and floating registers
24314         in soft-float DFmode pattern.
24315         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
24316         floating register.
24317         (movsf): Likewise.
24318
24319 2007-03-05  Mike Stump  <mrs@apple.com>
24320
24321         * c-common.c (targetcm): Add.
24322         * c-opts.c (c_common_handle_option): Handle language specific
24323         target options.
24324         * opts.c (handle_option): Verify language for target options, if
24325         any are given.
24326         * opth-gen.awk: Add CL_LANG_ALL.
24327         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
24328         (TARGETCM_INITIALIZER): Add.
24329         * target.h (struct gcc_targetcm): Add.
24330         (targetcm): Add.
24331         * targhooks.c (default_handle_c_option): Add.
24332         * targhooks.h (default_handle_c_option): Add.
24333         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
24334
24335         * config/darwin.opt (iframework): Add.
24336         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
24337         * config/darwin-c.c (handle_c_option): Add.
24338         (TARGET_HANDLE_C_OPTION): Add.
24339         (targetcm): Add.
24340         * doc/invoke.texi (Darwin Options): Add -iframework.
24341
24342 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24343
24344         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
24345         conversion.
24346
24347 2007-03-05  Ian Lance Taylor  <iant@google.com>
24348
24349         * c.opt (fgnu89-inline): New option.
24350         * c-opts.c (c_common_post_options): Set default value for
24351         flag_gnu89_inline.
24352         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
24353         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
24354         inline functions.
24355         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
24356         (grokdeclarator, start_function): Likewise.
24357         * c-cppbuiltin.c (c_cpp_builtins): Define either
24358         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
24359         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
24360         (C Dialect Options): Document -fgnu89-inline.
24361         * doc/extend.texi (Function Attributes): Explain what the
24362         gnu_inline attribute does.
24363         * doc/cpp.texi (Common Predefined Macros): Document
24364         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
24365
24366 2007-03-05  Ian Lance Taylor  <iant@google.com>
24367
24368         PR tree-optimization/31034
24369         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
24370         half-range if the other side is an overflow infinity.
24371
24372 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
24373
24374         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
24375         (bfin*-linux-uclibc*): New configuration.
24376         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
24377         defining.
24378         * config/bfin/linux.h: New file.
24379         * config/bfin/libgcc-bfin.ver: New file.
24380         * config/bfin/t-bfin-uclinux: New file.
24381         * config/bfin/t-bfin-linux: New file.
24382         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
24383         (TARGET_OS_CPP_BUILTINS): New macro.
24384
24385 2007-03-05  Richard Guenther  <rguenther@suse.de>
24386
24387         * fold-const.c (fold_binary): Remove duplicate folding
24388         of comparison of non-null ADDR_EXPR against null.
24389
24390 2007-03-05  Richard Guenther  <rguenther@suse.de>
24391             Dorit Nuzman  <dorit@il.ibm.com>
24392
24393         PR tree-optimization/26420
24394         * tree-vectorizer.c (vectorize_loops): Bail out early if there
24395         are no loops in the function.  Only print the number of
24396         vectorized loops if it is greater than zero or we are supposed
24397         to print information about unvectorized loops.
24398
24399 2007-03-05  Revital Eres  <eres@il.ibm.com>
24400
24401         * gcc.dg/var-expand1.c: New test.
24402         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
24403         when an accumulator is expanded.
24404
24405 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24406
24407         PR other/30465
24408         * c-common.c (convert_and_check): Don't give warnings for
24409         conversion if 'expr' already overflowed.
24410
24411 2007-03-04  Roger Sayle  <roger@eyesopen.com>
24412
24413         PR middle-end/30744
24414         * fold-const.c (fold_comparison): Enforce type consistency when
24415         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
24416
24417 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
24418
24419         * tree-ssa-address.c (create_mem_ref): Do not put an expression
24420         containing a cast to the base of TARGET_MEM_REF.
24421
24422 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
24423
24424         * tree.c (tree_contains_struct_check_failed): Remove spurious
24425         whitespace from error message.
24426
24427 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
24428
24429         PR target/30406
24430         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
24431         instead of precision.
24432
24433 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
24434             Nathan Sidwell  <nathan@codesourcery.com>
24435
24436         * emit-rtl.c (find_auto_inc): New.
24437         (try_split): recreate REG_INC notes,
24438         Use regular for loops rather than whiles.
24439
24440 2007-03-03  Andreas Schwab  <schwab@suse.de>
24441
24442         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
24443         * configure: Regenerate.
24444
24445 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24446
24447         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
24448         flag_rounding_math, not flag_unsafe_math_optimizations.
24449
24450         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
24451         fold_build2.
24452         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
24453         alpha_fold_vector_minmax): Likewise.
24454         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
24455         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
24456
24457 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
24458
24459         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
24460         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
24461         if the lhs has side-effects.
24462         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
24463
24464 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
24465
24466         * config/i386/i386.h (TUNEMASK): Remove define.
24467         (ARCHMASK): Remove define.
24468         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
24469          Use ix86_arch_mask variable instead of ARCHMASK.
24470         * config/i386/i386.c (override_options): Ditto.
24471         (standard_80387_constant_p): Ditto.
24472
24473 2007-03-02  Ian Lance Taylor  <iant@google.com>
24474
24475         Used signed infinities in VRP.
24476         * tree-vrp.c (uses_overflow_infinity): New static function.
24477         (supports_overflow_infinity): New static function.
24478         (make_overflow_infinity): New static function.
24479         (negative_overflow_infinity): New static function.
24480         (positive_overflow_infinity): New static function.
24481         (is_negative_overflow_infinity): New static function.
24482         (is_positive_overflow_infinity): New static function.
24483         (is_overflow_infinity): New static function.
24484         (overflow_infinity_range_p): New static function.
24485         (compare_values_warnv): New function split out of compare_values.
24486         (compare_value): Call it.
24487         (set_value_range_to_nonnegative): Add overflow_infinity
24488         parameter.  Change caller.
24489         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
24490         Change callers.
24491         (vrp_expr_computes_nonzero): Likewise.
24492         (compare_ranges, compare_range_with_value): Likewise.
24493         (compare_name_with_value, compare_names): Likewise.
24494         (vrp_evaluate_conditional): Likewise.
24495         (set_value_range): Handle infinity
24496         (vrp_operand_equal_p, operand_less_p): Likewise.
24497         (extract_range_from_assert): Likewise.
24498         (vrp_int_const_binop): Likewise.
24499         (extract_range_from_binary_expr): Likewise.
24500         (extract_range_from_unary_expr): Likewise.
24501         (extract_range_from_comparison): Likewise.
24502         (extract_range_from_expr): Likewise.
24503         (dump_value_range): Likewise.
24504         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
24505         (test_for_singularity): Likewise.
24506         (vrp_int_const_binop): Remove inline qualifier.
24507         (adjust_range_with_scev): Add comment.
24508         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
24509
24510 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
24511
24512         * tree-ssa-structalias.c (could_have_pointers): Tidy.
24513         (get_constraint_for): Likewise.
24514         (do_structure_copy): Likewise.
24515         (find_func_aliases): Fix references to MODIFY_EXPR.
24516         (intra_create_variable_infos): Tidy.
24517         * tree-ssa-operands.c (add_virtual_operand): Add argument
24518         IS_CALL_SITE.
24519         When adding members of alias sets, if IS_CALL_SITE is true and
24520         the symbol is not call-clobbered, skip it.
24521         Adjust all callers.
24522
24523 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
24524
24525         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
24526         entry by means of emit_insn_at_entry.
24527
24528 2007-03-02  Richard Henderson  <rth@redhat.com>
24529
24530         * expr.h (promoted_input_arg): Remove decl.
24531         * function.c (promoted_input_arg): Merge into ...
24532         * combine.c (setup_incoming_promotions): ... only caller.
24533         Rearrange to avoid double loop.
24534
24535 2007-03-02  Ben Elliston  <bje@au.ibm.com>
24536             Peter Bergner  <bergner@vnet.ibm.com>
24537             Janis Johnson  <janis187@us.ibm.com>
24538
24539         * config/rs6000/dfp.md: New file.
24540         * config/rs6000/rs6000.md: Include dfp.md.
24541         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
24542         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
24543         and TDmode decimal float modes in FP registers.
24544         (num_insns_constant): Likewise.
24545         (rs6000_legitimate_offset_address_p): Likewise.
24546         (rs6000_legitimize_address): Likewise.
24547         (rs6000_legitimize_reload_address): Likewise.
24548         (rs6000_legitimate_address): Likewise.
24549         (rs6000_emit_move): Likewise.
24550         (function_arg_boundary): Likewise.
24551         (function_arg_advance): Likewise.
24552         (rs6000_darwin64_record_arg_recurse): Likewise.
24553         (function_arg): Likewise.
24554         (rs6000_gimplify_va_arg): Likewise.
24555         (rs6000_split_multireg_move): Likewise.
24556         (rs6000_output_function_epilogue): Likewise.
24557         (rs6000_output_function_epilogue): Likewise.
24558         (rs6000_register_move_cost): Likewise.
24559         (rs6000_function_value): Likewise.
24560         (rs6000_libcall_value): Likewise.
24561
24562 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
24563
24564         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
24565
24566 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
24567
24568         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
24569         Use $MULTIDIR to choose between the kernel and RTP headers,
24570         and use $WIND_BASE and $WIND_USR to locate them.
24571
24572 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
24573
24574         * config/i386/i386.c (override_options): Put initialization of
24575         ix86_tune_mask and ix86_arch_mask to the correct place.
24576
24577 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
24578             Michael Meissner  <michael.meissner@amd.com>
24579
24580         PR target/31019
24581         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
24582         (ARCHMASK): Define.
24583         (TARGET_CMOVE): Use ARCHMASK.
24584         (TARGET_CMPXCHG): Ditto.
24585         (TARGET_CMPXCHG8B): Ditto.
24586         (TARGET_XADD): Ditto.
24587         (TARGET_BSWAP): Ditto.
24588         * config/i386/i386.c (ix86_tune_mask): New global variable.
24589         (ix86_arch_mask): Ditto.
24590         (override_options): Initialize ix86_tune_mask and
24591         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
24592         target_flags.
24593
24594 2007-03-02  Ben Elliston  <bje@au.ibm.com>
24595
24596         PR 30992
24597         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
24598
24599 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
24600
24601         * target.h (init_dwarf_reg_sizes_extra): New target hook.
24602         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
24603         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
24604         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
24605         hook.
24606         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
24607         rs6000_init_dwarf_reg_sizes_extra): New.
24608         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
24609         SPE register high parts.
24610
24611 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
24612
24613         * Makefile.in: Add install-pdf target as
24614         copied from automake v1.10 rules.
24615         * configure.ac: Add install-pdf to target list.
24616         * configure: Regenerate.
24617
24618 2007-03-01  Paul Brook  <paul@codesourcery.com>
24619
24620         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
24621         modes to LDRD for DImode.
24622         (output_move_double): Fixup out of range ldrd/strd.
24623         (vfp_secondary_reload_class): Rename...
24624         (coproc_secondary_reload_class): ... to this.  Add wb argument.
24625         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
24626         coproc_secondary_reload_class for CLASS_IWMMXT.
24627         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
24628         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
24629
24630 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
24631
24632         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
24633         unroll factor by the estimated number of iterations.
24634         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
24635         than prefetch latency.
24636
24637         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
24638         decode_caches_intel, detect_caches_intel): New functions.
24639         (host_detect_local_cpu): Use detect_caches_amd and
24640         detect_caches_intel.
24641
24642 2007-03-01  Richard Henderson  <rth@redhat.com>
24643
24644         * expr.c (emit_move_complex_push): Export.
24645         (emit_move_complex_parts): Split out from ...
24646         (emit_move_complex): ... here.
24647         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
24648         * config/i386/i386.md (movcdi): New.
24649
24650 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
24651
24652         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
24653         size of mode1 to check for tieable modes in MMX case.
24654
24655 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
24656
24657         * Makefile.in (rtlanal.o): Depend on tree.h.
24658         * rtl.h (offset_within_section_p, split_const): Declare.
24659         * rtlanal.c: Include tree.h.
24660         (offset_within_block_p): New function, taken from
24661         mips_offset_within_object_p.
24662         (split_const): New function, taken from mips_split_const.
24663         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
24664         Declare.
24665         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
24666         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
24667         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
24668         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
24669         (m68k_illegitimate_symbolic_constant_p): New function.
24670         * config/m68k/m68k.md (movsi): Remove misleading predicates.
24671         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
24672         symbolic constant that might be outside the symbol's section,
24673         move the symbol first and then add the offset.
24674         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
24675         Override.
24676         * config/mips/mips.c (mips_split_const): Delete.
24677         (mips_offset_within_object_p): Delete.
24678         (mips_symbolic_constant_p): Use offset_within_section_p and
24679         split_const instead of mips_offset_within_object_p and
24680         mips_split_const.
24681         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
24682         (mips_legitimize_const_move, print_operand_reloc)
24683         (mips_dangerous_for_la25_p): Use split_const instead of
24684         mips_split_const.
24685
24686 2007-02-28  Eric Christopher  <echristo@apple.com>
24687
24688         * Makefile.in (install-include-dir): Don't rm -rf include.
24689
24690 2007-02-28  Richard Guenther  <rguenther@suse.de>
24691
24692         PR middle-end/30364
24693         * fold-const.c (fold_binary): Do not associate expressions
24694         with more than one variable for integer types that do not wrap.
24695
24696 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
24697
24698         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
24699         Delete, and replace with...
24700         (fold_builtin_call_array): This.  Update callers to use it.
24701         * fold-const.c (fold_build_call_list): Delete, and replace with...
24702         (fold_build_call_array): This.
24703         (fold_build_call_list_initializer): Delete, and replace with...
24704         (fold_build_call_array_initializer): This.
24705         * tree.h: Update declarations to reflect above changes.
24706
24707         * c-typeck.c (build_function_call): Store converted arguments
24708         in a stack-allocated array instead of building a list.
24709         (convert_arguments): Store arguments in the array passed in as an
24710         argument, and return the actual number of arguments.
24711         * c-format.c: (check_function_format): Pass arguments in an
24712         array instead of a list.
24713         * c-common.c (check_function_nonnull): Likewise.
24714         (check_function_sentinel): Likewise.
24715         (check_function_arguments): Likewise.
24716         * c-common.h: Update declarations to reflect above changes.
24717
24718 2007-02-28  Jan Hubicka  <jh@suse.cz>
24719
24720         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
24721         PRED_NEGATIVE_RETURN): Update outcomes.
24722
24723 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
24724
24725         * calls.c (emit_library_call_value_1): Handle partial registers
24726         correctly when building up CALL_INSN_FUNCTION_USAGE.
24727
24728 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24729
24730         * pa/predicates.md (move_src_operand): Allow zero for mode.
24731         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
24732         move pattern.
24733
24734 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
24735
24736         PR target/30970
24737         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
24738         *movv2df_internal): Enable pattern only for valid operand
24739         combinations.
24740         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
24741         tie only 128bit modes. For MMX registers, tie only 64bit modes.
24742
24743 2007-02-27  Mike Stump  <mrs@apple.com>
24744
24745         * config/darwin-crt3.c: Avoid compilation when compiling for a
24746         kext multilib.
24747
24748 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
24749
24750         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
24751         FIXED_INCLUDE_DIR.
24752         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
24753         for fixed headers and limits.h.
24754         (install-include-dir, install-headers-tar, install-headers-cpio,
24755         install-headers-cp, real-install-headers-tar,
24756         real-install-headers-cpio, real-install-headers-cp): Handle
24757         include-fixed as well as include.
24758         (install-mkheaders): Don't install files that go only in include
24759         not include-fixed.
24760         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
24761         from GCC_INCLUDE_DIR.
24762         * gcc.c (process_command): Remove special -BstageN/ handling.
24763         (do_spec_1): Add include-fixed directories.
24764
24765 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
24766
24767         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
24768         _smulsi3_highpart.
24769         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
24770         New functions.
24771         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
24772         patterns.
24773
24774 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
24775
24776         * c-common.c (get_priority): Add check for
24777         SUPPORTS_INIT_PRIORITY.
24778
24779 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
24780
24781         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
24782
24783         * config/bfin/bfin.c: Include "cfglayout.h".
24784         (MAX_LSETUP_DISTANCE): New macro.
24785         (struct loop_info): New members incoming, incoming_src and
24786         incoming_dest.  Delete member predecessor.
24787         (length_for_loop): New function.
24788         (bfin_optimize_loop): Handle more different loop structures.
24789         (bfin_discover_loop): Rework detection of predecessor blocks by
24790         examining incoming edges.
24791         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
24792         bfin_reorg_loops.
24793         (bfin_reorder_loops): New function.
24794         (bfin_reorg_loops): Use these three new functions.
24795
24796         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
24797         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
24798         (CONSTRAINT_LEN): Add entry for 'q'.
24799         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
24800         Add 'q' constraints.
24801         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
24802         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
24803
24804         * config/bfin/bfin.md (add_with_carry): New pattern.
24805         (s_or_u, su_optab, su_modifier): New code macros/attrs.
24806         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
24807         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
24808         support unsigned multiplies too.  Removed incorrect commutativity from
24809         operand 1 constraint where appropriate.
24810         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
24811         patterns.
24812         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
24813         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
24814         New patterns.
24815         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
24816         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
24817         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
24818         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
24819         usmulhisi_hh_huh): New patterns.
24820
24821         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
24822         lshifthi3): Fix output template to use half reg for operand 2.
24823
24824         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
24825         instead of R2.
24826
24827         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
24828
24829 2007-02-27  Andreas Schwab  <schwab@suse.de>
24830
24831         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
24832
24833 2007-02-27  Jan Hubicka  <jh@suse.cz>
24834
24835         * predict.c (last_basic_block_p): Remove.
24836         (tree_estimate_probability): Update return heuristic for commonized
24837         return blocks.
24838
24839 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
24840
24841         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
24842
24843 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
24844
24845         * doc/include/gcc-common.texi (versionsubtitle): New macro.
24846         * doc/cpp.texi: Standardize title page.
24847         * doc/cppinternals.texi: Likewise.
24848         * doc/gcc.texi: Standardize title page, remove version number
24849         from copyright page.
24850         * doc/gccint.texi: Likewise.
24851         * doc/install.texi: Standardize title page, add table of
24852         contents.
24853
24854 2007-02-26  Jan Hubicka  <jh@suse.cz>
24855
24856         * predict.def: Set outcomes according to more recent results.
24857         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
24858         Remove dead predictors.
24859         * predict.c (return_prediction): Fix pasto.
24860
24861 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
24862
24863         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
24864         change; avoid a memory leak when returning early.
24865
24866 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
24867
24868         * c-decl.c (static_ctors): Move to c-common.c.
24869         (static_dtors): Likewise.
24870         (finish_function): Use c_record_cdtor_fn.
24871         (build_cdtor): Move to c-common.c.
24872         (c_write_global_declarations): Use c_build_cdtor_fns.
24873         * c-common.h (static_ctors): Declare.
24874         (static_dtors): Likewise.
24875         (c_record_cdtor_fn): Likewise.
24876         (c_build_cdtor_fns): Likewise.
24877         * c-common.c (static_ctors): New variable.
24878         (static_dtors): Likewise.
24879         (c_record_cdtor_fn): New function.
24880         (build_cdtor): Move from c-decl.c
24881         (c_build_cdtor_fns): New function.
24882
24883         * output.h (assemble_addr_to_section): Declare.
24884         (get_cdtor_priority_section): Likewise.
24885         * varasm.c (assemble_addr_to_section): New function.
24886         (get_cdtor_priority_section): Likewise.
24887         (default_named_section_asm_out_destructor): Use them.
24888         (destor_dtor_section_asm_out_destructor): Likewise.
24889         (default_named_section_asm_out_constructor): Likewise.
24890         (default_ctor_section_asm_out_constructor): Likewise.
24891         * config.gcc (*-*-vxworks*): Include vxworks.o.
24892         * config/t-vxworks (vxworks.o): New target.
24893         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
24894         (TARGET_ASM_CONSTRUCTOR): Define.
24895         (TARGET_ASM_DESTRUCTOR): Likewise.
24896         (vxworks_asm_out_constructor): Declare.
24897         (vxworks_asm_out_destructor): Likewise.
24898
24899         * c-common.c (get_priority): Check that we have not just an
24900         INTEGER_CST, but an integer constant with integeral type.
24901
24902 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
24903
24904         PR tree-optimization/30938
24905         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
24906         use &dt[nargs-1] instead of &dt[nargs] in the call to
24907         vect_is_simple_use().
24908
24909 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
24910
24911         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
24912         from register elimination as PRE_MODIFY / POST_MODIFY increments.
24913         Do not attempt to handle MEM inside auto-inc expressions.
24914         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
24915         of a register modified by an auto-inc expression.  However, do handle
24916         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
24917         (elimination_effects): Prohibit elimination of a register modified
24918         by an auto-inc expression.  Disable register elimination rules whose
24919         target register is modified by an auto-inc expression with variable
24920         increment.
24921
24922 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
24923
24924         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
24925         off-by-one error.
24926         (array_at_struct_end_p): New function.
24927         (idx_infer_loop_bounds): Use it.
24928         (estimate_numbers_of_iterations_loop): Export.
24929         * predict.c (predict_loops): Use estimated_loop_iterations_int.
24930         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
24931         (tree_estimate_probability): Call record_loop_exits.
24932         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
24933         (estimated_loop_iterations, estimated_loop_iterations_int,
24934         estimated_loop_iterations_tree): New functions.
24935         (analyze_siv_subscript_cst_affine,
24936         compute_overlap_steps_for_affine_1_2,
24937         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
24938         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
24939         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
24940         (PRED_LOOP_ITERATIONS_GUESSED): New.
24941         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
24942         * cfgloop.h (estimate_numbers_of_iterations_loop,
24943         estimated_loop_iterations_int): Declare.
24944
24945 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
24946
24947         * doc/extend.texi: Document optional priority argument to
24948         constructors and destructors.
24949         * tree.c (init_priority_for_decl): Adjust GTY markers.
24950         (init_ttree): Use priority-info hash functions for
24951         init_priority_for_decl.
24952         (tree_map_eq): Rename to ...
24953         (tree_map_base_eq): ... this.
24954         (tree_map_marked_p): Rename to ...
24955         (tree_map_base_marked_p): ... this.
24956         (tree_map_base_hash): New function.
24957         (decl_init_priority_lookup): Rework.
24958         (decl_fini_priority_lookup): New function.
24959         (decl_priority_info): New function.
24960         (decl_init_priority_insert): Use it.
24961         (decl_fini_priority_insert): Likewise.
24962         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
24963         hierarchy.
24964         (decl_restrict_base_insert): Likewise.
24965         (decl_debug_expr_insert): Likewise.
24966         (decl_value_expr_lookup): Likewise.
24967         (decl_value_expr_insert): Likewise.
24968         * tree.h (priority_type): New type.
24969         (decl_init_priority_lookup): Use priority_type.
24970         (decl_fini_priority_lookup): New function.
24971         (decl_init_priority_insert): Use priority_type.
24972         (decl_fini_priority_insert): New function.
24973         (DECL_HAS_INIT_PRIORITY): Tweak comments.
24974         (DECL_INIT_PRIORITY): Likewise.
24975         (SET_DECL_INIT_PRIORITY): Add comment.
24976         (DECL_FINI_PRIORITY): New macro.
24977         (SET_DECL_FINI_PRIORITY): Likewise.
24978         (DEFAULT_INIT_PRIORITY): Document.
24979         (MAX_INIT_PRIORITY): Likewise.
24980         (MAX_RESERVED_INIT_PRIORITY): Likewise.
24981         (tree_map_base): New type.
24982         (tree_map_base_eq): New function.
24983         (tree_map_base_hash): Likewise.
24984         (tree_map_base_marked_p): Likewise.
24985         (tree_map): Inherit from tree_map_base.
24986         (tree_map_eq): Make it a macro.
24987         (tree_map_marked_p): Likewise.
24988         (tree_int_map): Inherit from tree_map_base.
24989         (tree_int_map_eq): Make it a macro.
24990         (tree_int_map_hash): Likewise.
24991         (tree_int_map_marked_p): Likewise.
24992         (tree_priority_map): New type.
24993         (tree_priority_map_eq): New macro.
24994         (tree_priority_map_hash): Likewise.
24995         (tree_priority_map_marked_p): Likewise.
24996         * varasm.c (emults_decl): Adjust for refactoring of tree_map
24997         hierarchy.
24998         (emutls_common_1): Likewise.
24999         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
25000         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
25001         of tree_map hierarchy.
25002         * tree-cfg.c (move_stmt_r): Likewise.
25003         (new_label_mapper): Likewise.
25004         * c-tree.h (c_expand_body): Move to ...
25005         * c-common.h (c_expand_body): ... here.
25006         * c-decl.c (c_expand_body): Move to ...
25007         * c-common.c (c_expand_body): ... here.
25008         (c_common_attribute_table): Allow 1 argument for the constructor
25009         and destructor attributes.
25010         (get_priority): New function.
25011         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
25012         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
25013
25014 2007-02-24  Jan Hubicka  <jh@suse.cz>
25015
25016         PR middle-end/30509
25017         * tree-inline.c (copy_bb): Produce exact copy of EH info when
25018         copying for inlining.
25019
25020 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
25021             Jan Hubicka  <jh@suse.cz>
25022
25023         PR target/30778
25024         * i386.c (counter_mode): New function.
25025         (expand_set_or_movmem_via_loop): Use it.
25026         (expand_movmem_epilogue): Likewise; fix pasto.
25027         (ix86_expand_movmem): Do emit guard even for constant counts.
25028         (ix86_expand_setmem): Likewise.
25029
25030 2007-02-25  Nick Clifton  <nickc@redhat.com>
25031
25032         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
25033         (JUMP_TABLES_IN_TEXT_SECTION): Define.
25034
25035 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
25036
25037         PR target/30770
25038         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
25039         count argument with 0x10, not with 0x16.
25040         (expand_setmem_epilogue): Ditto.
25041
25042 2007-02-24  Mike Stump  <mrs@apple.com>
25043
25044         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
25045         symbols.
25046
25047 2007-02-24  Richard Guenther  <rguenther@suse.de>
25048
25049         PR middle-end/30951
25050         * fold-const.c (fold_binary): Fold x +- CST op x for
25051         EQ_EXPR and NE_EXPR.
25052
25053 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25054
25055         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
25056
25057 2007-02-24  Jan Hubicka  <jh@suse.cz>
25058
25059         * cgraphunit.c (decide_is_function_needed): Honor
25060         -fkeep-inline-functions.
25061
25062 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25063
25064         * builtins.c (fold_builtin_modf): New.
25065         (fold_builtin_2): Use it.
25066
25067 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25068
25069         * loop-iv.c (implies_p): Detect additional cases where A implies B.
25070         (determine_max_iter): Take additional LOOP arg; all callers changed.
25071         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
25072         one using simplifications.
25073         (simplify_using_initial_values): Return if the expression becomes
25074         invalid due to altered regs.
25075
25076 2007-02-23  DJ Delorie  <dj@redhat.com>
25077
25078         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
25079
25080 2007-02-23  Mike Stump  <mrs@apple.com>
25081
25082         * tlink.c (scan_linker_output): Parse linker messages from
25083         darwin9's linker better.
25084
25085 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
25086
25087         PR debug/29614
25088         * varpool.c (varpool_assemble_pending_decls): Set
25089         varpool_last_needed_node to null.
25090
25091 2007-02-23  DJ Delorie  <dj@redhat.com>
25092
25093         * config/i386/i386.c (ix86_data_alignment): Don't specify an
25094         alignment bigger than the object file can handle.
25095
25096 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
25097
25098         PR target/30825
25099         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
25100         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
25101         (*movsf_1): Penalize MMX moves.
25102
25103 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
25104
25105         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
25106         2^32-1 or more times unless flag_unsafe_loop_optimizations.
25107
25108         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
25109
25110 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25111
25112         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
25113         (fold_builtin_1): Use them.
25114         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
25115         BUILT_IN_SIGNIFICAND.
25116
25117 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
25118
25119         * config/i386/i386.c (bdesc_1arg): Initialize
25120         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
25121         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
25122         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
25123         and IX86_BUILTIN_MOVSLDUP.
25124
25125 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
25126
25127         PR rtl-optimization/30841
25128         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
25129
25130 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25131
25132         * builtins.c (fold_builtin_frexp): New.
25133         (fold_builtin_2): Use it.
25134
25135 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
25136
25137         * doc/invoke.texi (Spec Files): Document getenv spec function.
25138
25139         * gcc.c (getenv_spec_function): New function.
25140         (static_spec_functions): Add it.
25141         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
25142         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
25143         header files.
25144
25145 2007-02-22  Michael Matz  <matz@suse.de
25146
25147         PR c++/29433
25148         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
25149         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
25150
25151 2007-02-22  Ian Lance Taylor  <iant@google.com>
25152
25153         PR debug/30898
25154         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
25155         (mem_loc_descriptor): Call it.
25156
25157 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
25158             Ira Rosen  <irar@il.ibm.com>
25159
25160         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
25161
25162 2007-02-22  Ira Rosen  <irar@il.ibm.com>
25163
25164         PR tree-optimization/30843
25165         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
25166         stores only after all the group is vectorized.
25167
25168 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
25169
25170         PR tree-optimization/30858
25171         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
25172         in the reduction cycle have a single use in the loop.
25173         * tree-vectorizer.h (relevant): Add documentation.
25174
25175 2007-02-20  Mike Stump  <mrs@apple.com>
25176
25177         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
25178         * configure: Regenerate.
25179
25180 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
25181
25182         Change the defaults of some parameters and options.
25183         * config/spu/spu-protos.h (spu_optimization_options): Declare.
25184         * config/spu/spu.c (spu_optimization_options): Add.
25185         (spu_override_options): Change params in spu_optimization_options.
25186         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
25187
25188         Register 127 is only 16 byte aligned when used as a frame pointer.
25189         * config/spu/spu-protos.h (spu_init_expanders): Declare.
25190         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
25191         HARD_FRAME_POINTER_REGNUM.
25192         (spu_legitimate_address): Use regno_aligned_for_reload.
25193         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
25194         aligned when frame_pointer_needed is true.
25195         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
25196         to 8 bits.
25197         * config/spu/spu.h (INIT_EXPANDERS): Define.
25198
25199         Make sure shift and rotate instructions have valid immediate operands.
25200         * config/spu/predicates.md (spu_shift_operand): Remove.
25201         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
25202         * config/spu/constraints.md (W, O): Extend range.
25203         * config/spu/spu.md (umask, nmask): Define.
25204         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
25205         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
25206         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
25207         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
25208         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
25209         (lshr<mode>3_reg): Fix rtl description.
25210
25211         Make sure mulhisi immediate operands are valid.
25212         * config/spu/predicates.md (imm_K_operand): Add.
25213         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
25214
25215         Generate constants using fsmbi and andi.
25216         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
25217         (print_operand, spu_split_immediate, classify_immediate,
25218         fsmbi_const_p): Handle IC_FSMBI2.
25219
25220         Correctly handle a CONST_VECTOR containing symbols.
25221         * config/spu/spu.c (print_operand): Handle HIGH correctly.
25222         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
25223         (immediate_load_p): Allow symbols that use 2 instructions to create.
25224         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
25225         with symbols when flag_pic is set.
25226         (const_vector_immediate_p): New.
25227         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
25228         accept a CONST_VECTOR with symbols.
25229         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
25230         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
25231         correctly.
25232         * config/spu/spu.md (high, low): Delete.
25233         (low_<mode>): Define.
25234
25235         Remove INTRmode and INTR_REGNUM, which didn't work.
25236         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
25237         of INTR_REGNUM.
25238         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
25239         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
25240         peephole2 pattern): Don't use INTR or 131.
25241         (movintrcc): Delete.
25242         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
25243         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
25244         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
25245         (UNSPEC_SET_INTR): Add.
25246         * config/spu/spu-modes.def (INTR): Remove.
25247
25248         More accurate warnings about run-time relocations.
25249         * config/spu/spu.c (reloc_diagnostic): Test in_section.
25250
25251         Correctly warn about immediate arguments to specific intrinsics.
25252         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
25253         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
25254         the instruction predicate.
25255
25256         Fix tree check errors with latest update.
25257         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
25258         CALL_EXPR_ARG.
25259         (spu_expand_builtin): Use CALL_EXPR_FN.
25260
25261         Add missing specific intrinsics.
25262         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
25263         si_bislede.
25264         * config/spu/spu_internals.h: Ditto.
25265
25266         Fix incorrect operand modifiers.
25267         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
25268         * config/spu/spu.md (xor<mode>3): Change %S to %J.
25269
25270         Optimize one case of zero_extend of a vec_select.
25271         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
25272
25273         Accept any immediate for hbr.
25274         * config/spu/spu.md (hbr): Change s constraints to i.
25275
25276 2007-02-21  Paul Brook  <paul@codesourcery.com>
25277
25278         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
25279         condexec_count when skipping USE and CLOBBER.
25280
25281 2007-02-21  Nick Clifton  <nickc@redhat.com>
25282
25283         * common.opt (Warray-bounds): Add Warning attribute.
25284         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
25285         Likewise.
25286         (fsized-zeroes): Add Optimization attribute.
25287         (fsplit-wide-types, ftree-scev-cprop): Likewise.
25288         * c.opt (Wc++0x-compat): Add Warning attribute.
25289
25290 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
25291
25292         PR middle-end/30761
25293         * reload1.c (eliminate_regs_in_insn): In the single_set special
25294         case, attempt to re-recognize the insn before falling back to
25295         having reload fix it up.
25296
25297 2007-02-20  Eric Christopher  <echristo@gmail.com>
25298
25299         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
25300         Rewrite accordingly.
25301         (frv_read_iacc_argument): Ditto.
25302         (frv_expand_set_builtin): Take a call instead of arglist, update for
25303         above changes.
25304         (frv_expand_unop_builtin): Ditto.
25305         (frv_expand_binop_builtin): Ditto.
25306         (frv_expand_cut_builtin): Ditto.
25307         (frv_expand_binopimm_builtin): Ditto.
25308         (frv_expand_voidbinop_builtin): Ditto.
25309         (frv_expand_int_void2arg): Ditto.
25310         (frv_expand_prefetches): Ditto.
25311         (frv_expand_voidtriop_builtin): Ditto.
25312         (frv_expand_voidaccop_builtin): Ditto.
25313         (frv_expand_load_builtin): Ditto.
25314         (frv_expand_store_builtin): Ditto.
25315         (frv_expand_mdpackh_builtin): Ditto.
25316         (frv_expand_mclracc_builtin): Ditto.
25317         (frv_expand_mrdacc_builtin): Ditto.
25318         (frv_expand_mwtacc_builtin): Ditto.
25319         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
25320         calls for above.
25321
25322 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
25323
25324         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
25325         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
25326         cmpb instruction.
25327         (HAVE_GAS_DFP): Check for assembler support of decimal floating
25328         point instructions.
25329         * configure: Regenerate.
25330         * config.in: Regenerate.
25331         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
25332         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
25333         masks to power6 and power6x and to POWERPC_MASKS.
25334         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
25335         _ARCH_PWR6.
25336         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
25337         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
25338         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
25339         Access PROTOTYPE as variable, not mask.
25340
25341 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
25342
25343         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
25344         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
25345         * combine.c (adjust_for_new_dest): Use it.
25346         * postreload.c (reload_combine): Likewise.
25347
25348 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
25349
25350         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
25351         notes on an insn with multiple sets, even if single_set returns
25352         non-NULL for that insn.
25353
25354 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25355
25356         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
25357         scalbn and scalbln.
25358
25359 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
25360
25361         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
25362         if user didn't pass it.
25363         * config/i386/darwin.h (CC1_SPEC): Likewise.
25364         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
25365         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
25366         -mmacosx-version-min.
25367
25368 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25369             Uros Bizjak  <ubizjak@gmail.com>
25370
25371         * optabs.h (enum optab_index): Add new OTI_scalb.
25372         (scalb_optab): Define corresponding macro.
25373         * optabs.c (init_optabs): Initialize scalb_optab.
25374         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
25375         patterns.
25376         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
25377         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
25378         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
25379         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
25380         flag_unsafe_math_optimizations is set.
25381
25382         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
25383         to implement scalbf, scalb and scalbl built-ins as inline x87
25384         intrinsics.
25385
25386 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25387             DJ Delorie <dj@redhat.com>
25388
25389         PR other/30824
25390         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
25391         (diagnostic_report_diagnostic): ... here, and turn them into real
25392         errors. If warnings are inhibited, no need to do anything.
25393
25394 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
25395
25396         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
25397         better code generation.
25398
25399 2007-02-20  Ben Elliston  <bje@au.ibm.com>
25400
25401         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
25402
25403 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
25404
25405         * config/alpha/alpha.c, config/alpha/alpha.md,
25406         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
25407         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
25408         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
25409         config/arm/lib1funcs.asm: Follow spelling conventions.
25410
25411         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
25412         config/fr30/fr30.md, config/i386/i386.h,
25413         config/iq2000/iq2000.h, config/iq2000/predicates.md,
25414         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
25415         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
25416         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
25417         config/rs6000/altivec.md, config/rs6000/rs6000.c,
25418         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
25419         config/sparc/sparc.c, config/sparc/sparc.h,
25420         config/sparc/sparc.md, config/spu/constraints.md,
25421         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
25422         conventions.
25423
25424 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
25425
25426         PR target/29943
25427         * varasm.c (use_blocks_for_decl_p): Return false for decls with
25428         alias attribute.
25429
25430 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
25431
25432         * doc/invoke.texi (-ftree-lrs): Remove.
25433
25434 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
25435
25436         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
25437         NULL.
25438
25439 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
25440
25441         * config/ia64/ia64.c (ia64_expand_builtin): Use the
25442         new CALL_EXPR_FN macro for retrieving the function
25443         declaration of the input expression.
25444
25445 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25446
25447         * c.opt (Waddress): New.
25448         * common.opt (Walways-true): Delete.
25449         (Wstring-literal-comparison): Delete.
25450         * doc/invoke.texi (Warning Options): Delete -Walways-true and
25451         -Wstring-literal-comparison. Add -Waddress.
25452         (Waddress): New.
25453         (Walways-true): Delete.
25454         (Wstring-literal-comparison): Delete.
25455         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
25456         consistently instead of -Walways-true in example.
25457         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
25458         * c-typeck.c (parser_build_binary_op): Replace
25459         -Wstring-literal-comparison and -Walways-true with -Waddress.
25460         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
25461         with -Waddress.
25462
25463 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
25464
25465         * tree-cfg.c (dump_function_to_file): Be prepared for functions
25466         without DECL_STRUCT_FUNCTION initialized.
25467
25468 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
25469
25470         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
25471         due to calls to functions taking pointers as parameters.
25472
25473 2007-02-19  Richard Henderson  <rth@redhat.com>
25474
25475         PR debug/29558
25476         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
25477         in memory.
25478
25479 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
25480
25481         * config/s390/s390.c (s390_call_saved_register_used,
25482         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
25483         accessed to the new scheme.
25484
25485 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
25486
25487         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
25488         (cris_print_index, cris_print_operand, cris_print_operand_address)
25489         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
25490         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
25491         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
25492         GET_CODE () == xxx.
25493         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
25494         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
25495         GO_IF_LEGITIMATE_ADDRESS): Ditto.
25496         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
25497         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
25498         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
25499         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
25500         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
25501         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
25502         (uminsi3, call, call_value): Ditto.
25503         (define_split: indir_to_reg_split, unnamed): Ditto.
25504
25505 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
25506
25507         PR tree-optimization/30975
25508         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
25509         wrong assert.
25510
25511 2007-02-18  Eric Christopher  <echristo@gmail.com>
25512
25513         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
25514         Remove use of arglist.
25515         (mips_expand_builtin): Remove use of arglist, pass in expr.
25516         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
25517         (mips_expand_builtin_movtf): Ditto.
25518         (mips_expand_builtin_compare): Ditto.
25519
25520 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
25521
25522         * tree-sra.c (sra_build_assignment): Replace assertion
25523         checking with a comment explaining why it can't be done.
25524
25525 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
25526
25527         PR middle-end/30833
25528         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
25529         during CALL_EXPR representation conversion.
25530         * tree-ssa-propagate.c (set_rhs): Likewise.
25531
25532 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
25533
25534         * tree-sra.c (sra_build_assignment): Disable assertion checking
25535         for now.
25536
25537 2007-02-18  Roger Sayle  <roger@eyesopen.com>
25538
25539         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
25540         instead of calling build2 with a GIMPLE_MODIFY_STMT.
25541         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
25542         Likewise.
25543         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
25544         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
25545         gimplify_init_ctor_eval_range, gimple_push_cleanup,
25546         gimplify_omp_for, gimplify_omp_atomic_pipeline,
25547         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
25548         force_gimple_operand): Likewise.
25549         * ipa-cp.c (constant_val_insert): Likewise.
25550         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
25551         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
25552         perfect_nestify): Likewise.
25553         * langhooks.c (lhd_omp_assignment): Likewise.
25554         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
25555         lower_copyprivate_clauses, lower_send_clauses,
25556         lower_send_shared_vars, expand_parallel_call,
25557         expand_omp_for_generic, expand_omp_for_static_nochunk,
25558         expand_omp_for_static_chunk, expand_omp_sections,
25559         lower_omp_single_copy, lower_omp_for_lastprivate,
25560         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
25561         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
25562         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
25563         Likewise.
25564
25565 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
25566
25567         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
25568         config/sh/sh.md: Follow spelling conventions.
25569
25570         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
25571         config/frv/predicates.md: Follow spelling conventions.
25572
25573         * config/m68k/linux-unwind.h: Fix a comment typo.
25574         * target.h: Follow spelling conventions.
25575
25576 2007-02-18  Roger Sayle  <roger@eyesopen.com>
25577
25578         PR rtl-optimization/28173
25579         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
25580         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
25581         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
25582         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
25583         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
25584
25585 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25586
25587         * builtins.c (fold_builtin_load_exponent): New.
25588         (fold_builtin_2): Use it.
25589
25590 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
25591
25592         PR rtl-optimization/30773
25593         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
25594         if we fail to attach a REG_EQUIV note.
25595
25596 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
25597             Roger Sayle  <roger@eyesopen.com>
25598
25599         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
25600
25601 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
25602
25603         * calls.c (initialize_argument_information): Pass original EXP
25604         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
25605         code to split complex arguments here, as part of initializing the
25606         ARGS array.
25607         (expand_call): Remove code that builds a list of arguments and
25608         inserts implicit arguments into it.  Instead, just count how many
25609         implicit arguments there will be so we can determine the size of
25610         the ARGS array, and let initialize_argument_information do the work.
25611         (split_complex_values): Delete unused function.
25612
25613 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
25614
25615         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
25616
25617 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
25618
25619         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
25620         for arg pointer based indexed addressing.
25621
25622 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
25623
25624         * config/ia64/ia64.h, config/ia64/ia64.md,
25625         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
25626         spelling conventions.
25627
25628 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
25629
25630         * config/m68k/m68k.c (split_di): New.
25631         * config/m68k/m68k-protos.h: Declare split_di.
25632         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
25633           Improve predicate handling and split constant shifts.
25634
25635 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
25636
25637         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
25638         parameter for register bitfield operations, general predicates
25639         cleanup
25640
25641 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
25642
25643         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
25644         * config/m68k/linux-unwind.h: New file.
25645
25646 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
25647
25648         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
25649         config/i386/athlon.md, config/ia64/ia64.md,
25650         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
25651         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
25652         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
25653         tree-ssa-loop-niter.c, tree-vect-analyze.c,
25654         tree-vect-transform.c: Fix comment typos.
25655
25656 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
25657
25658         * sched-deps.c (find_insn_list): Remove.
25659         * sched-int.h: Remove the prototype for find_insn_list.
25660
25661 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
25662
25663         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
25664         to linker.
25665         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
25666         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
25667         darwin_rs6000_override_options.
25668         (C_COMMON_OVERRIDE_OPTIONS): Expect
25669         darwin_macosx_version_min to be non-NULL always.
25670         (TARGET_C99_FUNCTIONS): Likewise.
25671         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
25672         (DARWIN_MINVERSION_SPEC): New.
25673         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
25674         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
25675         to cc1*.
25676         (DARWIN_MINVERSION_SPEC): New.
25677         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
25678         value.
25679         * config/darwin-c.c (darwin_cpp_builtins): Expect
25680         darwin_macosx_version_min to be non-NULL always.
25681
25682         * config/rs6000/rs6000.c: Clean up trailing whitespace.
25683
25684 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
25685
25686         * config/i386/i386.h (x86_use_xchgb): New.
25687         (TARGET_USE_XCHGB): New macro.
25688         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
25689         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
25690         Split after reload into bswaphi for shifts of 8.
25691         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
25692         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
25693         or when optimizing for size.
25694
25695 2007-02-16  Richard Guenther  <rguenther@suse.de>
25696             Christian Bruel  <christian.bruel@st.com>
25697
25698         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
25699         DECLs but prefer SSA_NAMEs over DECLs.
25700
25701 2007-02-16  Richard Guenther  <rguenther@suse.de>
25702
25703         * tree-flow-inline.h (single_imm_use_p): Remove.
25704         (zero_imm_uses_p): Likewise.
25705         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
25706         instead of single_imm_use_p.
25707         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
25708         zero_imm_uses_p.
25709
25710 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25711
25712         PR other/27843
25713         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
25714         nested double- and backquotes.
25715
25716 2007-02-15  Roger Sayle  <roger@eyesopen.com>
25717
25718         PR middle-end/30391
25719         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
25720         should be unreachable.
25721         (build2_stat): Allow construction of MODIFY_EXPR at any time.
25722         For the time being redirect GIMPLE_MODIFY_STMT to the new
25723         (renamed) build_gimple_modify_stmt_stat.
25724         (build2_gimple_stat): Rename to...
25725         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
25726         Always build a GIMPLE_MODIFY_STMT node.
25727         * tree.h (build2_gimple, build2_gimple_stat): Delete.
25728         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
25729         declarations.
25730
25731         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
25732         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
25733         * tree-complex.c (set_component_ssa_name, expand_complex_move,
25734         expand_complex_div_wide): Likewise.
25735         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
25736         * tree-ssa-loop-im.c (schedule_sm): Likewise.
25737         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
25738         * tree-ssa-loop-manip.c (create_iv): Likewise.
25739         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
25740         abs_replacement): Likewise.
25741         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
25742         realify_fake_stores): Likewise.
25743
25744         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
25745         node rather than a GIMPLE_MODIFY_STMT node.
25746         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
25747         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
25748         Likewise.
25749         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
25750         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
25751         GIMPLE_MODIFY_STMT.
25752
25753 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25754
25755         PR middle-end/30433
25756         * fold-const.c (fold_comparison): Add back the
25757         folding of constant complex comparisions.
25758
25759 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25760
25761         PR middle-end/30729
25762         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
25763         effects unknown to this function, return early.
25764
25765 2007-02-15  Ian Lance Taylor  <iant@google.com>
25766
25767         * lower-subreg.c (move_eh_region_note): New static function.
25768         (resolve_simple_move): Call it.
25769         (decompose_multiword_subregs): Track blocks for which we resolve a
25770         simple move which is also a control flow insn.  Pass them to
25771         find_many_sub_basic_blocks.
25772         (pass_lower_subreg): Add TODO_verify_flow.
25773         (pass_lower_subreg2): Likewise.
25774
25775 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
25776             Brooks Moses  <brooks.moses@codesourcery.com>
25777             Lee Millward  <lee.millward@codesourcery.com>
25778
25779         * tree.h (enum tree_code_class): Add tcc_vl_exp.
25780         (VL_EXP_CLASS_P): New.
25781         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
25782         TREE_CODE_LENGTH.
25783         (TREE_OPERAND_CHECK_CODE): Likewise.
25784         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
25785         (TREE_RTL_OPERAND_CHECK): Likewise.
25786         (tree_operand_check_failed): Make second parameter the whole tree
25787         instead of its code.  Fixed callers.
25788         (VL_EXP_CHECK): New.
25789         (TREE_OPERAND_LENGTH): New.
25790         (VL_EXP_OPERAND_LENGTH): New.
25791         (CALL_EXPR_FN): New.
25792         (CALL_EXPR_STATIC_CHAIN): New.
25793         (CALL_EXPR_ARGS): New.
25794         (CALL_EXPR_ARG): New.
25795         (call_expr_nargs): New.
25796         (CALL_EXPR_ARGP): New.
25797         (build_nt_call_list): Declare.
25798         (build_vl_exp_stat): Declare.
25799         (build_vl_exp): New.
25800         (build_call_list): Declare.
25801         (build_call_nary): Declare.
25802         (build_call_valist): Declare.
25803         (build_call_array): Declare.
25804         (call_expr_arg): Declare.
25805         (call_expr_argp): Declare.
25806         (call_expr_arglist): Declare.
25807         (fold_build_call_list): Declare.
25808         (fold_build_call_list_initializer): Declare.
25809         (fold_call_expr): Declare to replace fold_builtin.
25810         (fold_builtin_fputs): Update to agree with modified definition.
25811         (fold_builtin_strcpy): Likewise.
25812         (fold_builtin_strncpy): Likewise.
25813         (fold_builtin_memory_chk): Likewise.
25814         (fold_builtin_stxcpy_chk): Likewise.
25815         (fold_builtin_strncpy_chk): Likewise.
25816         (fold_builtin_next_arg): Likewise.
25817         (fold_build_call_expr): Declare.
25818         (fold_builtin_call_list): Declare.
25819         (fold_builtin_call_valist): Declare.
25820         (build_call_expr): Declare.
25821         (validate_arglist): Update to agree with modified definition.
25822         (tree_operand_length): New.
25823         (call_expr_arg_iterator): New.
25824         (init_call_expr_arg_iterator): New.
25825         (next_call_expr_arg): New.
25826         (first_call_expr_arg): New.
25827         (more_call_expr_args_p): New.
25828         (FOR_EACH_CALL_EXPR_ARG): New.
25829
25830         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
25831         and tcc_gimple_stmt.
25832         (tree_code_size): Update documentation.  Use sizeof (tree) rather
25833         than sizeof (char *).
25834         (tree_size): Likewise.  Add case for tcc_vl_exp.
25835         (tree_node_structure): Add case for tcc_vl_exp.
25836         (contains_placeholder_p): Likewise.
25837         (substitute_in_expr): Likewise.
25838         (substitute_placeholder_in_expr): Likewise.
25839         (stabilize_reference_1): Likewise.
25840         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
25841         to diagnose breakage of this interface for constructing CALL_EXPRs.
25842         (build_nt): Add similar assertion here.
25843         (build_nt_call_list): New.
25844         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
25845         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
25846         TREE_CODE_LENGTH.
25847         (get_callee_fndecl): Use new CALL_EXPR accessors.
25848         (tree_operand_check_failed): Change parameters to pass entire node
25849         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
25850         (process_call_operands): New.
25851         (build_vl_exp_stat): New.
25852         (build_call_list): New.
25853         (build_call_nary): New.
25854         (build_call_valist): New.
25855         (build_call_array): New.
25856         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25857         (call_expr_arglist): New.
25858
25859         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
25860         tcc_vl_exp instead of a fixed-size tcc_expression.
25861
25862         * doc/c-tree.texi (CALL_EXPR): Document new representation and
25863         accessors for CALL_EXPRs.
25864         (AGGR_INIT_EXPR): Likewise.
25865
25866 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
25867             Brooks Moses  <brooks.moses@codesourcery.com>
25868             Lee Millward  <lee.millward@codesourcery.com>
25869
25870         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
25871         (expand_builtin_nonlocal_goto): Change parameter to be entire
25872         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
25873         (expand_builtin_prefetch): Likewise.
25874         (expand_builtin_classify_type): Likewise.
25875         (mathfn_built_in): Return NULL_TREE instead of 0.
25876         (expand_errno_check): Use new CALL_EXPR accessors.
25877         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
25878         Return NULL_RTX instead of 0.
25879         (expand_builtin_mathfn_2): Likewise.
25880         (expand_builtin_mathfn_3): Likewise.
25881         (expand_builtin_interclass_mathfn): Likewise.
25882         (expand_builtin_sincos): Likewise.
25883         (expand_builtin_cexpi): Likewise.
25884         (expand_builtin_int_roundingfn): Likewise.
25885         (expand_builtin_int_roundingfn_2): Likewise.
25886         (expand_builtin_pow): Likewise.
25887         (expand_builtin_powi): Likewise.
25888         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
25889         of arglist, fixing callers appropriately.  Use new CALL_EXPR
25890         accessors and constructors.  Return NULL_RTX instead of 0.
25891         (expand_builtin_strstr): Likewise.
25892         (expand_builtin_strchr): Likewise.
25893         (expand_builtin_strrchr): Likewise.
25894         (expand_builtin_strpbrk): Likewise.
25895         (expand_builtin_memcpy): Likewise.
25896         (expand_builtin_mempcpy): Likewise.
25897         (expand_builtin_mempcpy_args): New.
25898         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
25899         (expand_builtin_memmove_args): New.
25900         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
25901         (expand_movstr): Likewise.
25902         (expand_builtin_strcpy): Likewise.
25903         (expand_builtin_strcpy_args): New.
25904         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
25905         (expand_builtin_strncpy): Likewise.
25906         (expand_builtin_memset): Likewise.
25907         (expand_builtin_memset_args): New.
25908         (expand_builtin_bzero): Similarly to expand_builtin_memset.
25909         (expand_builtin_memcmp): Likewise.
25910         (expand_builtin_strcmp): Likewise.
25911         (expand_builtin_strncmp): Likewise.
25912         (expand_builtin_strcat): Likewise.
25913         (expand_builtin_strncat): Likewise.
25914         (expand_builtin_strspn): Likewise.
25915         (expand_builtin_strcspn): Likewise.
25916         (expand_builtin_args_info): Likewise.
25917         (expand_builtin_va_start): Likewise.
25918         (gimplify_va_arg_expr): Likewise.
25919         (expand_builtin_va_end): Likewise.
25920         (expand_builtin_va_copy): Likewise.
25921         (expand_builtin_frame_address): Likewise.
25922         (expand_builtin_alloca): Likewise.
25923         (expand_builtin_bswap): Likewise.
25924         (expand_builtin_unop): Likewise.
25925         (expand_builtin_fputs): Likewise.
25926         (expand_builtin_expect): Likewise.
25927         (expand_builtin_fabs): Likewise.
25928         (expand_builtin_copysign): Likewise.
25929         (expand_builtin_printf): Likewise.
25930         (expand_builtin_fprintf): Likewise.
25931         (expand_builtin_sprintf): Likewise.
25932         (expand_builtin_init_trampoline): Likewise.
25933         (expand_builtin_signbit): Likewise.
25934         (expand_builtin_fork_or_exec): Likewise.
25935         (expand_builtin_sync_operation): Likewise.
25936         (expand_builtin_compare_and_swap): Likewise.
25937         (expand_builtin_lock_test_and_set): Likewise.
25938         (expand_builtin_lock_release): Likewise.
25939         (expand_builtin): Likewise.
25940         (builtin_mathfn_code): Likewise.
25941
25942         (fold_builtin_constant_p): Pass call arguments individually instead
25943         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
25944         accessors and constructors.  Return NULL_TREE instead of 0.
25945         (fold_builtin_expect): Likewise.
25946         (fold_builtin_classify_type): Likewise.
25947         (fold_builtin_strlen): Likewise.
25948         (fold_builtin_nan): Likewise.
25949         (integer_valued_real_p): Likewise.
25950         (fold_trunc_transparent_mathfn): Likewise.
25951         (fold_fixed_mathfn): Likewise.
25952         (fold_builtin_cabs): Likewise.
25953         (fold_builtin_sqrt): Likewise.
25954         (fold_builtin_cbrt): Likewise.
25955         (fold_builtin_cos): Likewise.
25956         (fold_builtin_cosh): Likewise.
25957         (fold_builtin_tan): Likewise.
25958         (fold_builtin_sincos): Likewise.
25959         (fold_builtin_cexp): Likewise.
25960         (fold_builtin_trunc): Likewise.
25961         (fold_builtin_floor): Likewise.
25962         (fold_builtin_ceil): Likewise.
25963         (fold_builtin_round): Likewise.
25964         (fold_builtin_int_roundingfn): Likewise.
25965         (fold_builtin_bitop): Likewise.
25966         (fold_builtin_bswap): Likewise.
25967         (fold_builtin_logarithm): Likewise.
25968         (fold_builtin_hypot): Likewise.
25969         (fold_builtin_pow): Likewise.
25970         (fold_builtin_powi): Likewise.
25971         (fold_builtin_exponent): Likewise.
25972         (fold_builtin_memset): Likewise.
25973         (fold_builtin_bzero): Likewise.
25974         (fold_builtin_memory_op): Likewise.
25975         (fold_builtin_bcopy): Deleted; call site changed to invoke
25976         fold_builtin_memory_op directly.
25977         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
25978         (fold_builtin_strncpy): Likewise.
25979         (fold_builtin_memcmp): Likewise.
25980         (fold_builtin_strcmp): Likewise.
25981         (fold_builtin_strncmp): Likewise.
25982         (fold_builtin_signbit): Likewise.
25983         (fold_builtin_copysign): Likewise.
25984         (fold_builtin_isascii): Likewise.
25985         (fold_builtin_toascii): Likewise.
25986         (fold_builtin_isdigit): Likewise.
25987         (fold_builtin_fabs): Likewise.
25988         (fold_builtin_abs): Likewise.
25989         (fold_builtin_fmin_fmax): Likewise.
25990         (fold_builtin_carg): Likewise.
25991         (fold_builtin_classify): Likewise.
25992         (fold_builtin_unordered_cmp): Likewise.
25993
25994         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
25995         New functions split out from fold_builtin_1.
25996         (fold_builtin_n): New.
25997         (fold_builtin_varargs): New.
25998         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
25999         instead.
26000         (fold_call_expr): New.
26001         (build_function_call_expr): Rewrite to use new helper function.
26002         (fold_builtin_call_list): New.
26003         (build_call_expr): New.
26004         (fold_builtin_call_valist): New.
26005         (rewrite_call_expr): New.
26006         (validate_arg): New.
26007         (validate_arglist): Change parameter to be entire CALL_EXPR instead
26008         of an arglist.  Change return type to bool.  Use new CALL_EXPR
26009         accessors.
26010
26011         (fold_builtin_strstr): Pass call arguments individually instead
26012         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
26013         accessors and constructors.  Return NULL_TREE instead of 0.
26014         (fold_builtin_strchr): Likewise.
26015         (fold_builtin_strrchr): Likewise.
26016         (fold_builtin_strpbrk): Likewise.
26017         (fold_builtin_strcat): Likewise.
26018         (fold_builtin_strncat): Likewise.
26019         (fold_builtin_strspn): Likewise.
26020         (fold_builtin_strcspn): Likewise.
26021         (fold_builtin_fputs): Likewise.
26022         (fold_builtin_next_arg): Likewise.
26023         (fold_builtin_sprintf): Likewise.
26024
26025         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
26026         NULL_RTX instead of 0.
26027         (expand_builtin_memory_chk): Likewise.
26028         (maybe_emit_chk_warning): Likewise.
26029         (maybe_emit_sprintf_chk_warning): Likewise.
26030
26031         (fold_builtin_object_size): Pass call arguments individually instead
26032         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
26033         accessors and constructors.  Return NULL_TREE instead of 0.
26034         (fold_builtin_memory_chk): Likewise.
26035         (fold_builtin_stxcpy_chk): Likewise.
26036         (fold_builtin_strncpy_chk): Likewise.
26037         (fold_builtin_strcat_chk): Likewise.
26038         (fold_builtin_strcat_chk): Likewise.
26039         (fold_builtin_strncat_chk): Likewise.
26040         (fold_builtin_sprintf_chk): Likewise.
26041         (fold_builtin_snprintf_chk): Likewise.
26042         (fold_builtin_printf): Likewise.
26043         (fold_builtin_vprintf): Likewise.
26044
26045         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
26046         constructors.
26047         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
26048         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26049         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
26050         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
26051         (fold_unary): Likewise.
26052         (fold_binary): Likewise.
26053         (fold_ternary): Remove CALL_EXPR case, since they are no longer
26054         ternary expressions.
26055         (fold): Add logic for tcc_vl_exp.
26056         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
26057         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26058         (fold_build3_stat): Add assertion to flag broken interface for
26059         constructing CALL_EXPRs.
26060         (fold_build_call_list): New.
26061         (fold_build_call_list_initializer): New.
26062         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
26063         constructors.
26064         (fold_strip_sign_ops): Likewise.
26065
26066 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26067             Brooks Moses  <brooks.moses@codesourcery.com>
26068             Lee Millward  <lee.millward@codesourcery.com>
26069
26070         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
26071         accessors and dump arguments explicitly.
26072
26073         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
26074         TREE_CODE_LENGTH.
26075         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
26076         explicitly.
26077         (print_call_name): Use new CALL_EXPR accessors.
26078
26079         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
26080         CALL_EXPR arguments explicitly instead of as a list.  Use
26081         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26082
26083         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
26084         (vrp_visit_stmt): Likewise.
26085
26086         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
26087         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
26088         TREE_CODE_LENGTH.
26089         (force_move_till_expr): Likewise.
26090
26091         * targhooks.c (default_external_stack_protect_fail): Use
26092         build_call_expr instead of build_function_call_expr.
26093         (default_hidden_stack_protect_fail): Likewise.
26094
26095         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
26096         build the call.
26097
26098         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
26099         and walk arguments explicitly.
26100
26101         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
26102         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26103         (expand_simple_operations): Likewise.
26104         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
26105
26106         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
26107         of TREE_CODE_LENGTH.
26108         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
26109
26110         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
26111         instead of TREE_CODE_LENGTH.
26112
26113         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
26114         (tree_ic_transform): Likewise.
26115         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
26116         parameter instead of arglist.  Fix callers.
26117         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
26118         (tree_stringops_transform): Likewise.
26119         (tree_indirect_call_to_profile): Likewise.
26120         (tree_stringops_values_to_profile): Likewise.
26121
26122         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
26123         (eliminate_tail_call): Likewise.
26124
26125         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
26126
26127         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
26128         Use TREE_OPERAND_LENGTH and generalize to handle any number of
26129         operands.
26130         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
26131
26132         * omp-low.c (build_omp_barrier): Use build_call_expr.
26133         (lower_rec_input_clauses): Likewise.
26134         (lower_reduction_clauses): Likewise.
26135         (expand_parallel_call): Likewise.
26136         (maybe_catch_exception): Likewise.
26137         (expand_omp_for_generic): Likewise.
26138         (expand_omp_for_static_nochunk): Likewise.
26139         (expand_omp_sections): Likewise.
26140         (lower_omp_single_simple): Likewise.
26141         (lower_omp_single_copy): Likewise.
26142         (lower_omp_master): Likewise.
26143         (lower_omp_ordered): Likewise.
26144         (lower_omp_critical): Likewise.
26145
26146         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
26147         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
26148
26149         * tree-gimple.c (is_gimple_call_addr): Fix doc.
26150         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
26151         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
26152
26153         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
26154         and generalize to handle any number of operands.
26155         (chrec_contains_undetermined): Likewise.
26156         (tree_contains_chrecs): Likewise.
26157         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
26158
26159         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
26160
26161         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
26162         fold_call_expr instead of fold_builtin.
26163         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
26164         match declarations there.
26165         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
26166         updates.
26167
26168         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
26169         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26170
26171         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
26172         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
26173
26174         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
26175         accessors.
26176
26177         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
26178         (execute_cse_sincos): Use new CALL_EXPR accessors.
26179
26180         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
26181
26182         * gimple-low.c (lower_function_body): Use build_call_expr.
26183         (lower_builtin_setjmp): Likewise.
26184
26185         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
26186         (set_storage_via_libcall): Likewise.
26187         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
26188         instead of TREE_CODE_LENGTH.
26189         (expand_expr_real_1): Use new CALL_EXPR accessors.
26190
26191         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
26192         generalize to handle any number of operands.
26193         (TB_parent_eq): Likewise.
26194
26195         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
26196         (strip_builtin_expect): Likewise.
26197
26198         * function.c (gimplify_parameters): Use build_call_expr.
26199
26200         * tree-vectorizer.c (vect_is_simple_reduction): Use
26201         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26202
26203         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
26204         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
26205
26206         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
26207         iterators.
26208
26209         * gimplify.c (build_stack_save_restore): Use build_call_expr.
26210         (gimplify_decl_expr): Likewise.
26211         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
26212         Use new CALL_EXPR iterators.
26213         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
26214         (gimplify_modify_expr_to_memset): Likewise.
26215         (gimplify_variable_sized_compare): Likewise.
26216         (gimplify_omp_atomic_fetch_op): Likewise.
26217         (gimplify_omp_atomic_pipeline): Likewise.
26218         (gimplify_omp_atomic_mutex): Likewise.
26219         (gimplify_function_tree): Likewise.
26220
26221         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
26222         (call_expr_flags): Likewise.
26223         (expand_call): Likewise.
26224
26225         * except.c (expand_builtin_eh_return_data_regno): Pass entire
26226         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
26227         accessors.
26228
26229         * coverage.c (create_coverage): Use build_call_expr.
26230
26231         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
26232         (temp_call_expr_obstack): New.
26233         (pool_copy_list): Delete.
26234         (temp_copy_call_expr): New.
26235         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
26236         CALL_EXPR accessors.  Get rid of special goo for copying argument
26237         lists and use temp_copy_call_expr instead.
26238         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
26239         CALL_EXPR accessors.
26240         (create_expression_by_pieces): Likewise.  Use build_call_array
26241         to construct the result instead of fold_build3.
26242         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
26243         dealing with argument lists.
26244         (init_pre): Remove references to expression_node_pool and
26245         list_node_pool.  Init temp_call_expr_obstack instead.
26246         (fini_pre): Remove references to expression_node_pool and
26247         list_node_pool.
26248
26249         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
26250         and walk arguments explicitly instead of as a list.
26251
26252         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
26253         (mx_register_decls): Likewise.
26254         (mudflap_register_call): Likewise.
26255         (mudflap_finish_file): Likewise.
26256
26257         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
26258         (ipa_callsite_compute_param): Likewise.
26259
26260         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
26261         accessors and constructor.
26262
26263         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
26264         accessors and constructor.
26265         (convert_tramp_reference): Likewise.
26266         (convert_call_expr): Likewise.
26267         (finalize_nesting_tree_1): Likewise.
26268
26269         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
26270         accessors.
26271
26272         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
26273
26274         * tree-inline.c (initialize_inlined_parameters): Pass entire
26275         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
26276         accessors.
26277         (estimate_num_insns_1): Use new CALL_EXPR accessors.
26278         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
26279
26280         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
26281         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26282         (vectorizable_reduction): Likewise.
26283         (vectorizable_call): Use new CALL_EXPR iterators.
26284         (vectorizable_conversion): Use build_call_expr.
26285         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
26286         (vect_gen_widened_results_half): Use build_call_expr.
26287         (vect_setup_realignment): Likewise.
26288         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
26289
26290         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
26291         (pass_through_call): Likewise.
26292         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
26293         fold_builtin.
26294
26295         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
26296         (tree_gen_pow2_profiler): Likewise.
26297         (tree_gen_one_value_profiler): Likewise.
26298         (tree_gen_ic_func_profiler): Likewise.
26299         (tree_gen_average_profiler): Likewise.
26300         (tree_gen_ior_profiler): Likewise.
26301
26302         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
26303         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
26304         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26305
26306         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
26307         of TREE_CODE_LENGTH.
26308
26309         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
26310         of TREE_CODE_LENGTH.
26311
26312         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
26313         constructor.
26314         (convert_to_integer): Likewise.
26315
26316         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
26317         accessors.
26318
26319 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26320             Brooks Moses  <brooks.moses@codesourcery.com>
26321             Lee Millward  <lee.millward@codesourcery.com>
26322
26323         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
26324         accessors.
26325         * config/frv/frv.c (frv_expand_builtin): Likewise.
26326         * config/s390/s390.c (s390_expand_builtin): Likewise.
26327
26328         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
26329         (sparc_expand_builtin): Use new CALL_EXPR accessors.
26330
26331         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
26332         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
26333         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
26334         (ix86_expand_store_builtin): Likewise.
26335         (ix86_expand_unop_builtin): Likewise.
26336         (ix86_expand_unop1_builtin): Likewise.
26337         (ix86_expand_sse_compare): Likewise.
26338         (ix86_expand_sse_comi): Likewise.
26339         (ix86_expand_vec_init_builtin): Likewise.
26340         (ix86_expand_vec_ext_builtin): Likewise.
26341         (ix86_expand_vec_set_builtin): Likewise.
26342         (ix86_expand_builtin): Use new CALL_EXPR accessors.
26343
26344         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
26345         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
26346
26347         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
26348         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
26349         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
26350
26351         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
26352         build_call_expr.
26353         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
26354         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
26355         arglist.  Use new CALL_EXPR accessors.  Fix callers.
26356         (altivec_expand_abs_builtin): Likewise.
26357         (rs6000_expand_binop_builtin): Likewise.
26358         (altivec_expand_predicate_builtin): Likewise.
26359         (altivec_expand_lv_builtin): Likewise.
26360         (spe_expand_stv_builtin): Likewise.
26361         (altivec_expand_stv_builtin): Likewise.
26362         (rs6000_expand_ternop_builtin): Likewise.
26363         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
26364         (altivec_expand_st_builtin): Likewise.
26365         (altivec_expand_dst_builtin): Likewise.
26366         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
26367         arglist.  Use new CALL_EXPR accessors.  Fix callers.
26368         (altivec_expand_vec_set_builtin): Likewise.
26369         (altivec_expand_vec_ext_builtin): Likewise.
26370         (altivec_expand_builtin): Use new CALL_EXPR accessors.
26371         (spe_expand_builtin): Likewise.
26372         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
26373         arglist.  Use new CALL_EXPR accessors.  Fix callers.
26374         (spe_expand_evsel_builtin): Likewise.
26375         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
26376         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
26377
26378         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
26379         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
26380         (arm_expand_unop_builtin): Likewise.
26381         (arm_expand_builtin): Use new CALL_EXPR accessors.
26382
26383         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
26384         accessors.
26385
26386         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
26387         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
26388         Fix callers.
26389         (bfin_expand_unop_builtin): Likewise.
26390         (bfin_expand_builtin): Use new CALL_EXPR accessors.
26391
26392 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26393             Brooks Moses  <brooks.moses@codesourcery.com>
26394             Lee Millward  <lee.millward@codesourcery.com>
26395
26396         * c-semantics.c (build_stmt): Add internal diagnostic check.
26397
26398         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
26399         accessors.  Print arguments explicitly instead of as a list.
26400
26401         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
26402
26403         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
26404         (c_finish_omp_flish): Likewise.
26405
26406         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
26407         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
26408         instead of TREE_CODE_LENGTH.
26409         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
26410         (c_warn_unused_result): Likewise.
26411
26412 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26413
26414         PR c/26494
26415         * doc/invoke.texi (Warning Options): Remove
26416         -Werror-implicit-function-declaration.
26417         (Wimplicit-function-declaration): Update description.
26418         * opts.c (common_handle_option): Move handling of -Werror=* to...
26419         (enable_warning_as_error): ...here.
26420         * opts.h (enable_warning_as_error): Declare.
26421         * c-decl.c (implicit_decl_warning): Unless
26422         -Wno-implicit-function-declaration is given, emit a pedwarn if
26423         -std=c99 or emit a warning if -Wimplicit-function-declaration.
26424         * c.opt (Wimplicit-function-declaration): Replace
26425         mesg_implicit_function_declaration with
26426         warn_implicit_function_declaration.
26427         * c-opts.c (c_common_handle_option):
26428         -Werror-implicit-function-declaration is exactly equal as
26429         -Werror=implicit-function-declaration.
26430         (set_Wimplicit): Replace mesg_implicit_function_declaration with
26431         warn_implicit_function_declaration.
26432         (c_common_post_options): -Wimplict-function-declaration is enabled
26433         by default by -std=c99, otherwise is disabled by default.
26434         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
26435
26436 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
26437
26438         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
26439         DECL on the rhs to a DECL on the lhs for debug info purposes if the
26440         former is ignored but not the latter.
26441
26442 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
26443
26444         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
26445         is made and the reference doesn't use the alias set of its type,
26446         do not create the temporary using that type.
26447
26448 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
26449
26450         * jump.c: Remove prototypes for delete_computation and
26451         delete_prior_computation.
26452
26453 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
26454
26455         * jump.c (get_label_after): Delete.
26456         (get_label_before, delete_computation, delete_jump,
26457         delete_prior_computation, follow_jumps): Move...
26458         * reorg.c (delete_computation, delete_prior_computation): ... here...
26459         (get_label_before, delete_jump): ... making these static ...
26460         (follow_jumps): ... and simplifying this since it only runs after
26461         reload.
26462         * rtl.h (get_label_after, get_label_before, delete_jump,
26463         follow_jumps): Delete prototypes.
26464
26465 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
26466
26467         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
26468
26469 2007-02-15  Nick Clifton  <nickc@redhat.com>
26470
26471         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
26472         order to prevent it from being munged by the target.
26473
26474 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
26475
26476         * config/i386/i386.md: Remove misleading comment.
26477
26478 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
26479
26480         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
26481         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
26482         invalid patterns.
26483
26484 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
26485
26486         * tree-sra.c (instantiate_missing_elements): Canonicalize
26487         bit-field types.
26488         (sra_build_assignment): New.
26489         (generate_copy_inout, generate_element_copy,
26490         generate_element_zero, generate_one_element_init): Use it.
26491
26492 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
26493
26494         * tree-sra.c (instantiate_missing_elements): Canonicalize
26495         bit-field types.
26496         (sra_build_assignment): New.
26497         (generate_copy_inout, generate_element_copy,
26498         generate_element_zero, generate_one_element_init): Use it.
26499
26500 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
26501
26502         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
26503         limbo die nodes.
26504
26505 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
26506
26507         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
26508         types as aggregates not scalars.
26509         * function.c (assign_stack_temp_for_type): Likewise.
26510
26511 2007-02-14  Roger Sayle  <roger@eyesopen.com>
26512             Zdenek Dvorak  <dvorakz@suse.cz>
26513
26514         * tree-dump.c (dump_switch_p_1): Require exact match of the option
26515         name.
26516
26517 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
26518
26519         * passes.c (next_pass_1): Clear the next field of the copied
26520         pass structure.
26521
26522 2007-02-14  Richard Henderson  <rth@redhat.com>
26523
26524         * tree-sra.c (early_sra): New.
26525         (decl_can_be_decomposed_p): Deny va_list if early_sra.
26526         (tree_sra_early, pass_sra_early): New.
26527         * tree-pass.h (pass_sra_early): Declare.
26528         * passes.c (init_optimization_passes): Use it.
26529
26530 2007-02-14  Richard Guenther  <rguenther@suse.de>
26531
26532         * flags.h (issue_strict_overflow_warning): Convert to a macro.
26533
26534 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
26535
26536          PR tree-optimization/30771
26537         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
26538         also phi nodes.
26539         (vect_analyze_operations): Induction phis can now be marked as
26540         used_in_loop.
26541         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
26542         Update documentation accordingly.
26543
26544 2007-02-14  Nick Clifton  <nickc@redhat.com>
26545
26546         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
26547         most 3 arguments are supported.
26548         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
26549
26550 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
26551
26552         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
26553         Ensure dst->current is valid.
26554
26555 2007-02-13  Paul Brook  <paul@codesourcery.com>
26556
26557         * config.gcc: Add arm*-*-uclinux-*eabi.
26558         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
26559         (SUBTARGET_EXTRA_LINK_SPEC): Define.
26560         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
26561         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
26562         (LINK_SPEC): Define.
26563         (LIB_SPEC): Define.
26564         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
26565         register.
26566         * config/arm/uclinux-eabi.h: New file.
26567         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
26568         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
26569         based targets.
26570
26571 2007-02-13  Ian Lance Taylor  <iant@google.com>
26572
26573         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
26574         * flags.h (warn_strict_overflow): Declare.
26575         (enum warn_strict_overflow_code): Define.
26576         (issue_strict_overflow_warning): New static inline function.
26577         * opts.c (warn_strict_overflow): New variable.
26578         (common_handle_option): Handle OPT_Wstrict_overflow and
26579         OPT_Wstrict_overflow_.
26580         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
26581         OPT_Wall.
26582         * fold-const.c: Include intl.h.
26583         (fold_deferring_overflow_warnings): New static variable.
26584         (fold_deferred_overflow_warning): New static variable.
26585         (fold_deferred_overflow_code): New static variable.
26586         (fold_defer_overflow_warnings): New function.
26587         (fold_undefer_overflow_warnings): New function.
26588         (fold_undefer_and_ignore_overflow_warnings): New function.
26589         (fold_deferring_overflow_warnings_p): New function.
26590         (fold_overflow_warning): New static function.
26591         (make_range): Add strict_overflow_p parameter.  Change all
26592         callers.
26593         (extract_muldiv, extract_muldiv_1): Likewise.
26594         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
26595         tree_expr_nonnegative_p.
26596         (fold_negate_expr): Call fold_overflow_warning.
26597         (fold_range_test): Likewise.
26598         (fold_comparison): Likewise.
26599         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
26600         instead of tree_expr_nonnegative_p.
26601         (tree_expr_nonnegative_warnv_p): Rename from
26602         tree_expr_nonnegative_p, add strict_overflow_p parameter.
26603         (tree_expr_nonnegative_p): New function.
26604         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
26605         strict_overflow_p parameter.
26606         (tree_expr_nonzero_p): New function.
26607         * passes.c (verify_interpass_invariants): New static function.
26608         (execute_one_pass): Call it.
26609         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
26610         warnings.
26611         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
26612         (estimate_numbers_of_iterations): Likewise.
26613         (scev_probably_wraps_p): Likewise.
26614         * tree-ssa-ccp.c: Include "toplev.h".
26615         (evaluate_stmt): Defer fold overflow warnings until we know we are
26616         going to optimize.
26617         (struct fold_stmt_r_data): Add stmt field.
26618         (fold_stmt_r): Defer fold overflow warnings until we know we
26619         optimized.
26620         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
26621         (fold_stmt_inplace): Likewise.
26622         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
26623         (cleanup_control_expr_graph): Defer fold overflow warnings until
26624         we know we are going to optimize.
26625         * tree-cfg.c (fold_cond_expr_cond): Likewise.
26626         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
26627         Likewise.
26628         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
26629         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
26630         * tree-ssa-loop-manip.c (create_iv): Likewise.
26631         * c-typeck.c (build_conditional_expr): Likewise.
26632         (build_binary_op): Likewise.
26633         * tree-vrp.c (vrp_expr_computes_nonzero): Call
26634         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
26635         (extract_range_from_unary_expr): Likewise.
26636         * simplify-rtx.c (simplify_const_relational_operation): Warn when
26637         assuming that signed overflow does not occur.
26638         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
26639         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
26640         (fold_defer_overflow_warnings): Declare.
26641         (fold_undefer_overflow_warnings): Declare.
26642         (fold_undefer_and_ignore_overflow_warnings): Declare.
26643         (fold_deferring_overflow_warnings_p): Declare.
26644         (tree_expr_nonzero_warnv_p): Declare.
26645         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
26646         of warning options.
26647         (Warning Options): Document -Wstrict-overflow.
26648         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
26649         (tree-ssa-ccp.o): Likewise.
26650         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
26651         (fold-const.o): Depend on intl.h.
26652
26653 2007-02-13  Ian Lance Taylor  <iant@google.com>
26654
26655         PR middle-end/30751
26656         * lower-subreg.c (resolve_simple_move): Decompose subregs in
26657         addresses.
26658
26659 2007-02-13  Stuart Hastings  <stuart@apple.com>
26660
26661         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
26662
26663 2007-02-13  Richard Henderson  <rth@redhat.com>
26664
26665         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
26666         handled_component_p before looking for the indirect_ref.
26667
26668 2007-02-13  Richard Henderson  <rth@redhat.com>
26669
26670         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
26671         remove flags clobber.
26672         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
26673         (bswaphi_lowpart): New.
26674         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
26675         remove TARGET_BSWAP test.  Delete expander of the same name.
26676
26677         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
26678         (expand_unop): Use them.
26679
26680 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
26681
26682         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
26683         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
26684         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
26685         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
26686         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
26687         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
26688         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
26689         assembler dialect choice from asm templates.
26690
26691 2007-02-12  Richard Henderson  <rth@redhat.com>
26692
26693         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
26694         (fixuns_trunc<SSEMODEF>si2): Use it.
26695         * config/i386/sse.md (vec_setv4sf_0): Export.
26696         * config/i386/i386.c (ix86_build_const_vector): Export.
26697         (ix86_split_convert_uns_si_sse): Rename from
26698         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
26699         * config/i386/i386-protos.h: Update.
26700
26701 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26702
26703         PR c/29521
26704         * c-typeck.c (c_finish_return): Improve warning message.
26705
26706 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26707
26708         * alias.c (find_symbolic_term): Delete unused function.
26709
26710 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
26711
26712         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
26713         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
26714         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
26715
26716 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
26717
26718         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
26719         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
26720         the function, temporarily point the debug interface to the null one.
26721
26722 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
26723
26724         * dwarf2out.c (round_up_to_align): New static function.
26725         (field_byte_offset): Use it to round the offset.
26726
26727 2007-02-12  Richard Henderson  <rth@redhat.com>
26728
26729         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
26730         (inswl_const): Export.
26731
26732 2007-02-12  Richard Henderson  <rth@redhat.com>
26733
26734         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
26735         result mode of the libcall, convert back to outmode.
26736
26737 2007-02-12  Roger Sayle  <roger@eyesopen.com>
26738
26739         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
26740         (bswapdi2): New define_expand to implement 32-bit implementation.
26741
26742 2007-02-12  Nick Clifton  <nickc@redhat.com>
26743
26744         * doc/invoke.texi (Overall Options): Document --help=.
26745         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
26746         (cc1_options): Pass --help= on to cc1.
26747         (display_help): Add description of --help=.
26748         (process_command): Add code to handle --help=.  Allow translated
26749         --help and --target-help switches to be passed on to compiler
26750         sub-process.
26751         (main): Remove unused if statement.
26752         * opts.c (columns): Remove.
26753         (LEFT_COLUMN): Define.
26754         (wrap_help): Add columns argument.
26755         (print_filtered_help): Change parameters to be an include bitmask,
26756         an exclude bitmask, an any bitmask and the column width.  Move the
26757         code to display the params list here.  Add code to display the
26758         status of options rather than their descriptions if the quiet flag
26759         is not active.
26760         (print_specific_help): Change parameters to be an include bitmask,
26761         an exclude bitmask and an any bitmask.  Move code to look up the
26762         column width here.  Decide upon the title for an options listing.
26763         (common_handle_options): Add code to handle --help=.  Adapt code
26764         for --help and --target-help to use the revised form of the
26765         print_specific_help function.
26766         (print_help): Delete.
26767         (print_param_help): Delete.
26768         (print_switch): Delete.
26769         * opts.h (cl_lang_count): Add prototype.
26770         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
26771         CL_MAX_OPTION_CLASS): New defines.
26772         * optc-gen.awk: Add construction of cl_lang_count.
26773         * c.opt: Add Warning attribute to warning options and Optimization
26774         attribute to optimization options.
26775         * common.opt: Likewise.
26776         Add --help=.
26777         Add -fhelp and -ftarget-help as aliases for the transformed --help
26778         and --target-help options.
26779         * opt-functions.awk: Add code to handle Warning and Optimization
26780         attributes.
26781
26782 2007-02-12  Richard Henderson  <rth@redhat.com>
26783
26784         * config/alpha/constraints.md: New file.
26785         * config/alpha/alpha.c: Include tm-constrs.h.
26786         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
26787         alpha_extra_constraint): Remove.
26788         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
26789         * config/alpha/alpha-protos.h: Update.
26790         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
26791         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
26792         (EXTRA_CONSTRAINT): Remove.
26793         * config/alpha/alpha.md: Include constraints.md.
26794         (adddi splitter): Use satisfies_constraint_*.
26795         * config/alpha/predicates.md (add_operand): Likewise.
26796         (sext_add_operand, addition_operation): Likewise.
26797
26798 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
26799
26800         PR tree-optimization/29145
26801         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
26802         in our handling of restrict qualified pointers.
26803
26804 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26805
26806         PR middle-end/7651
26807         * doc/invoke.texi (Wunused-value): Update description.
26808         (Wextra): Delete item.
26809         * opts.c (set_Wextra): Don't use the value of Wextra to set the
26810         value of Wunused-value.
26811         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
26812         (c_finish_stmt_expr): Don't check extra_warnings.
26813         (emit_side_effect_warnings): The caller is responsible to check
26814         warn_unused_value.
26815
26816 2007-02-11  Roger Sayle  <roger@eyesopen.com>
26817             Matt Thomas  <matt@3am-software.com>
26818
26819         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
26820
26821 2007-02-11  Roger Sayle  <roger@eyesopen.com>
26822
26823         * simplify-rtx.c (simplify_relational_operation_1): Optimize
26824         comparisons of POPCOUNT against zero.
26825         (simplify_const_relational_operation): Likewise.
26826
26827 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26828
26829         * doc/invoke.texi (Wextra): Delete outdated paragraph.
26830
26831 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26832
26833         * dwarf2out.c (root_type): Delete unused function.
26834
26835 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26836
26837         * genattrtab.c (contained_in_p): Delete unused function.
26838         (write_expr_attr_cache): Likewise.
26839
26840 2007-02-11  Jan Hubicka  <jh@suse.cz>
26841
26842         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
26843         previous patch.
26844
26845 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
26846
26847         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
26848         to add the REG_EQ* note.
26849         * see.c (see_merge_one_use_extension): Likewise.
26850         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
26851         turn REG_EQUAL notes into REG_EQUIV notes if the target
26852         register may have more than one set.
26853         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
26854         * gcse.c (try_replace_reg): Likewise.
26855         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
26856         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
26857         more than one REG_EQUIV note.
26858         * reload1.c (gen_reload): Use set_unique_reg_note.
26859
26860 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
26861
26862         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
26863         (ix86_builtin_conversion): New function.
26864
26865 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
26866
26867         PR target/29487
26868         * tree.h (DECL_REPLACEABLE_P): New macro.
26869         * except.c (set_nothrow_function_flags): Likewise.
26870
26871 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
26872             Ira Rosen  <irar@il.ibm.com>
26873             Dorit Nuzman  <dorit@il.ibm.com>
26874
26875         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
26876         * targhooks.c (default_builtin_vectorized_conversion): New.
26877         * targhooks.h (default_builtin_vectorized_function): New declaration.
26878         * target.h (struct vectorize): Add builtin_conversion field.
26879         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
26880         stmt_vec_info_type value.
26881         (vectorizable_conversion): New declaration.
26882         * tree-vect-analyze.c (vect_analyze_operations): Add
26883         vectorizable_conversion call.
26884         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
26885         * tree-vect-transform.c (vectorizable_conversion): New function.
26886         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
26887         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
26888         mode.
26889         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
26890         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
26891         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
26892         or ALTIVEC_BUILTIN_VCFSX.
26893
26894 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26895
26896         PR target/30634
26897         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
26898         CONST_DOUBLE and operand 0 is a hard register.
26899         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
26900         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
26901         is a hard floating-point register.
26902
26903 2007-02-10  Richard Henderson  <rth@redhat.com>
26904             Jakub Jelinek  <jakub@redhat.com>
26905             Alexandre Oliva  <aoliva@redhat.com>
26906
26907         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
26908         * builtin-types.def (BT_WORD): Make unsigned.
26909         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
26910         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
26911         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
26912         * c-decl.c (grokdeclarator): Don't error if !have_tls.
26913         * c-parser.c (c_parser_omp_threadprivate): Likewise.
26914         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
26915         emulated tls.
26916         * expr.c (emutls_var_address): New.
26917         (expand_expr_real_1): Expand emulated tls.
26918         (expand_expr_addr_expr_1): Likewise.
26919         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
26920         * output.h (emutls_finish): Declare.
26921         * toplev.c (compile_file): Call it.
26922         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
26923         address before wrapping in CONST.
26924         * varasm.c (emutls_htab, emutls_object_type): New.
26925         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
26926         (get_emutls_object_name, get_emutls_object_type): New.
26927         (get_emutls_init_templ_addr, emutls_decl): New.
26928         (emutls_common_1, emutls_finish): New.
26929         (assemble_variable): When emulating tls, swap decls; generate
26930         constructor for the emutls objects.
26931         (do_assemble_alias): When emulating tls, swap decl and target name.
26932         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
26933         for emulated tls.
26934         * varpool.c (decide_is_variable_needed): Look at force_output.
26935         Recurse for emulated tls.
26936         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
26937         with decide_is_variable_needed.
26938         * emutls.c: New file.
26939         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
26940         tls_object for real tls.
26941
26942 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
26943
26944         PR rtl-optimization/29599
26945         * reload1.c (eliminate_regs_in_insn): Take the destination
26946         mode into account when computing the offset.
26947
26948 2007-02-09  Stuart Hastings  <stuart@apple.com>
26949             Richard Henderson  <rth@redhat.com>
26950
26951         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
26952         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
26953         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
26954         fixuns_truncdfhi2): New.
26955         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
26956         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
26957         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
26958         (floatunssidf2): Allow nonimmediate source.
26959         * config/i386/sse.md (movdi_to_sse): New.
26960         (vec_concatv2di): Drop '*'.
26961         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
26962         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
26963         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
26964         New.
26965         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
26966         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
26967         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
26968         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
26969         (ix86_build_signbit_mask): Fix decl of v, refactor to call
26970         ix86_build_const_vector.
26971         (x86_emit_floatuns): Rewrite.
26972
26973 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26974
26975         * genautomata.c (longest_path_length): Delete unused function.
26976         (struct state): Delete unused longest_path_length.
26977         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
26978         (get_free_state): Delete unused.
26979
26980 2007-02-09  Jan Hubicka  <jh@suse.cz>
26981
26982         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
26983         * doc/invoke.texi (inline-unit-growth): Update default value.
26984
26985         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
26986         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
26987         (rebuild_cgraph_edges): Likewise.
26988         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
26989         (dump_cgraph_node): Dump frequencies.
26990         (cgraph_clone_edge): Add frequency scales.
26991         (cgraph_clone_node): Add freuqnecy.
26992         * cgraph.h (cgraph_edge): Add freuqnecy argument.
26993         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
26994         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
26995         * tree-pass.h (TODO_rebuild_frequencies): New constant.
26996         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
26997         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
26998         (save_inline_function_body): Likewise.
26999         * ipa-inline.c: inluce rtl.h
27000         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
27001         (cgraph_edge_badness): Use frequencies.
27002         (cgraph_decide_recursive_inlining): Update clonning.
27003         (cgraph_decide_inlining_of_small_function): Dump frequency.
27004         * predict.c (estimate_bb_frequencies): Export.
27005         * predict.h (estimate_bb_frequencies): Declare.
27006         * tree-inline.c (copy_bb): Watch overflows.
27007         (expand_call_inline): Update call of cgraph_create_edge.
27008         (optimize_inline_calls): Use TODO flags to update frequnecies.
27009         * passes.h: Include predict.h
27010         (init_optimization_passes): Move profile ahead.
27011         (execute_function_todo): Handle TODO_rebuild_frequencies.
27012
27013 2007-02-09  Roger Sayle  <roger@eyesopen.com>
27014
27015         * config/alpha/alpha.c (emit_insxl): Force the first operand of
27016         the insbl or inswl pattern into a register.
27017
27018 2007-02-09  Roger Sayle  <roger@eyesopen.com>
27019
27020         * config/ia64/ia64.md (bswapdi2): New define_insn.
27021
27022 2007-02-09  Richard Henderson  <rth@redhat.com>
27023
27024         * config/i386/constraints.md (Ym): New constraint.
27025         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
27026         (movdi_1_rex64): Split sse and xmm general register moves from
27027         memory move alternatives.  Use conditional register constraints.
27028         (movsf_1, movdf_integer): Likewise.
27029         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
27030         (movdf_integer_rex64): New.
27031         (pushsf_rex64): Fix output constraints.
27032         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
27033         (sse2_stored): Likewise.
27034         (sse2_storeq_rex64): New.
27035         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
27036         amd and not generic.
27037         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
27038         for optimize_size.  Remove SF/DFmode hack.
27039
27040 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
27041
27042         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
27043         (bit_SSE4a): New.
27044
27045 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
27046             Richard Sandiford  <richard@codesourcery.com>
27047
27048         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
27049         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
27050         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
27051         m68k/t-mlib to tmake_file.
27052         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
27053         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
27054         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
27055         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
27056         variable is not empty, add t-$m68k_arch_family to tmake_file.
27057         Add t-mlibs to tmake_file.
27058         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
27059         * config/m68k/t-cf: New file.
27060         * config/m68k/t-m68k: Likewise.
27061         * config/m68k/t-mlibs: Likewise.
27062         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
27063         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
27064         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
27065         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
27066         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
27067         Delete.
27068         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
27069         (INSTALL_LIBGCC): Delete.
27070         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
27071         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
27072         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
27073         (M68K_MLIB_CPU): Define.
27074         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
27075         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
27076         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
27077
27078 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
27079             Richard Guenther  <rguenther@suse.de>
27080
27081         PR middle-end/23361
27082         * fold-const.c (fold_comparison): Handle obfuscated comparisons
27083         against INT_MIN/INT_MAX.
27084         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
27085         file if a loop is removed.
27086
27087 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
27088
27089         * calls.c (store_one_arg): Pass correct alignment to
27090         emit_push_insn for non-BLKmode values.
27091         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
27092         unaligned stack slot via a suitably aligned slot.
27093
27094 2007-02-08  DJ Delorie  <dj@redhat.com>
27095
27096         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
27097         warnings.
27098         (legal_subregs): Use unsigned char, make const.
27099         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
27100
27101 2007-02-08  Paul Brook  <paul@codesourcery.com>
27102
27103         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
27104         special interworking needed.
27105
27106 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
27107
27108         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
27109         conditional to __SSE2__.
27110         (Entries below should have been added to first ChangeLog
27111         entry for amdfam10 dated 2007-02-05)
27112         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
27113         defined.
27114         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
27115         defined.
27116         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
27117         defined.
27118
27119 2007-02-08  DJ Delorie  <dj@redhat.com>
27120
27121         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
27122         * config/m32c/m32c.c (legal_subregs): New.
27123         (m32c_illegal_subreg_p): New.
27124         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
27125         unsupported subregs of hard regs.
27126
27127 2007-02-08  Jan Hubicka  <jh@suse.cz>
27128
27129         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
27130         the same one; always update histograms.
27131
27132 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
27133
27134         * passes.c (init_optimization_passes): Tidy comment.
27135
27136 2007-02-08  Roger Sayle  <roger@eyesopen.com>
27137
27138         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
27139         strip zero_extend, bswap and rotates from POCOUNT's argument.
27140         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
27141         zero_extend and rotates from PARITY's argument.
27142         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
27143         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
27144         of an integer constant at compile-time.
27145
27146 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
27147
27148         PR 30562
27149         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
27150         Update all users.
27151         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
27152         users.
27153         (init_alias_info):
27154         * tree-ssa-live.c (remove_unused_locals): Do not remove
27155         TREE_ADDRESSABLE variables.
27156         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
27157         * tree-ssa-operands.c (add_virtual_operand): Remove argument
27158         FOR_CLOBBER.  Update all users.
27159         If VAR has an associated alias set, add a virtual operand for
27160         it if no alias is found to conflict with the memory reference.
27161
27162 2007-02-07  Jan Hubicka  <jh@suse.cz>
27163             Robert Kidd <rkidd@crhc.uiuc.edu>
27164
27165         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
27166
27167 2007-02-07  Ian Lance Taylor  <iant@google.com>
27168
27169         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
27170
27171 2007-02-07  Roger Sayle  <roger@eyesopen.com>
27172
27173         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
27174         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
27175         tablejumpdi, movsi_to_cr_one): Remove constraints from
27176         define_expand's match_operands.
27177
27178 2007-02-07  Roger Sayle  <roger@eyesopen.com>
27179
27180         * global.c (compute_regsets): Move declatation of "i" inside of
27181         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
27182
27183 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
27184
27185         PR c++/30703
27186         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
27187         of INDIRECT_REF <RESULT_DECL>.
27188
27189         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
27190
27191 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
27192             Kaz Kojima  <kkojima@gcc.gnu.org>
27193
27194         PR target/29746
27195         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
27196         properly.
27197         (sh_initialize_trampoline): Add parentheses to avoid a warning.
27198
27199 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
27200
27201         * doc/loop.texi: Document possibility not to perform disambiguation
27202         of loops with multiple latches.
27203         * cfgloopmanip.c (alp_enum_p): Removed.
27204         (add_loop): Handle subloops.  Use get_loop_body_with_size.
27205         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
27206         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
27207         the new forwarder block.
27208         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
27209         Handle the case latch is NULL.
27210         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
27211         modifications when marking loop exits.
27212         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
27213         be modified.
27214         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
27215         disambiguate_loops_with_multiple_latches.
27216         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
27217         before fix_loop_structure.
27218         * cfgloop.c: Include pointer-set.h and output.h.
27219         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
27220         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
27221         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
27222         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
27223         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
27224         disambiguate_multiple_latches, get_loop_body_with_size,
27225         disambiguate_loops_with_multiple_latches): New functions.
27226         (flow_loop_dump): Dump multiple latch edges.
27227         (flow_loop_nodes_find): Handle loops with multiple latches.
27228         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
27229         (glb_enum_p): Modified.
27230         (get_loop_body): Use get_loop_body_with_size.
27231         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
27232         (AVOID_CFG_MODIFICATIONS): New constant.
27233         (disambiguate_loops_with_multiple_latches, add_loop,
27234         get_loop_body_with_size): Declare.
27235         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
27236
27237 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
27238
27239         PR inline-asm/28686
27240         * global.c (compute_regsets): New function.
27241         (global_alloc): Refactored ELIMINABLE_REGSET
27242         and NO_GLOBAL_ALLOC_REGS computation out.
27243         (rest_of_handle_global_alloc): Call compute_regsets()
27244         for non-optimizing case.
27245
27246 2007-02-06  Richard Henderson  <rth@redhat.com>
27247
27248         * config/i386/constraints.md (Y2): Rename from Y.
27249         (Yi): New constraint.
27250         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
27251         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
27252         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
27253         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
27254         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
27255         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
27256         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
27257         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
27258         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
27259         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
27260         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
27261         vec_extractv2si_1): Change Y constraints to Y2.
27262         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
27263         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
27264         Change Y constraints to Y2.
27265         (sse2_loadld): Change Y constraints to x.
27266
27267 2007-02-06  Roger Sayle  <roger@eyesopen.com>
27268
27269         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
27270         (parity<mode>2): New define_expand using rs6000_emit_parity.
27271         * config/rs6000/rs6000.c (rs6000_emit_popcount,
27272         rs6000_emit_parity): New functions.
27273         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
27274         rs6000_emit_parity): Prototype here.
27275
27276 2007-02-06  Ian Lance Taylor  <iant@google.com>
27277
27278         * lower-subreg.c (simple_move_operand): Reject CONST.
27279         (resolve_clobber): Call validate_change rather than directly
27280         assigning to XEXP (pat, 0).
27281
27282 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
27283
27284         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
27285         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
27286         (tree-cfg.o): Remove hashtab.h dependency.
27287
27288         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
27289         (struct ivopts_data): Change niters to pointer_map_t.
27290         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
27291         (niter_for_exit): Create pointer_map on demand.  Change for
27292         pointer_map API.
27293         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
27294         (free_loop_data): Destroy data->niters if created and reset field.
27295         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
27296         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
27297
27298         * tree-ssa-reassoc.c: Include pointer-set.h.
27299         (bb_rank): Change to long *.
27300         (operand_rank): Change to pointer_map_t.
27301         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
27302         (insert_operand_rank): Accept long.
27303         (operand_entry_hash, operand_entry_eq): Remove.
27304         (get_rank): Return long.  Adjust for changes above.
27305         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
27306         and operand_rank.
27307         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
27308
27309         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
27310         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
27311         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
27312         is not NULL.
27313         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
27314         directly since it cannot be NULL.
27315         (get_vi_for_tree): Rewrite for pointer_map API.
27316         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
27317         (init_alias_vars): Create vi_for_tree as pointer_map.
27318         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
27319
27320         * tree-cfg.c: Don't include hashtab.h.
27321         (edge_to_cases): Declare as pointer_map.
27322         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
27323         Delete.
27324         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
27325         (start_recording_case_labels): Create edge_to_cases as pointer_map.
27326         (end_recoding_case_labels): Cleanup edge_to_cases manually before
27327         destroying it.
27328         (record_switch_edge): Delete.
27329         (get_cases_for_edge): Adjust for pointer_map API, inline
27330         record_switch_edge (rewritten for new API), remove goto.
27331
27332 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
27333
27334         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
27335         * tree-nested.c: Include pointer-set.h.
27336         (var_map_elt, var_map_eq, var_map_hash): Delete.
27337         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
27338         to pointer_map_t's.
27339         (nesting_info_bitmap_obstack): New.
27340         (lookup_field_for_decl): Adjust for pointer_map API.
27341         (lookup_tramp_for_decl): Adjust for pointer_map API.
27342         (get_nonlocal_debug_decl): Adjust for pointer_map API.
27343         (get_local_debug_decl): Adjust for pointer_map API.
27344         (convert_nl_goto_reference): Adjust for pointer_map API.
27345         (convert_nl_goto_receiver): Adjust for pointer_map API.
27346         (create_nesting_tree): Create outside GGC space.  Create bitmap on
27347         the new obstack.  Create field_map and var_map as pointer_maps.
27348         (free_nesting_tree): Adjust for changes to create_nesting_tree.
27349         (root): Delete.
27350         (lower_nested_functions): Move root here, no need to NULL it.
27351         Initialize and release the obstack.
27352
27353 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
27354
27355         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
27356         Remove prototypes and make them non-static.
27357         (struct tree_int_map): Remove.
27358         * tree.h (struct tree_int_map): Move here, turning TO into an
27359         unsigned int.
27360         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
27361
27362         * tree.h (TREE_COMPLEXITY): Remove.
27363         (struct tree_exp): Remove complexity field.
27364         * tree.c (build1_stat): Don't set it.
27365
27366 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
27367             Victor Kaplansky  <victork@il.ibm.com>
27368
27369         * tree-vectorizer.c (vect_is_simple_use): Support induction.
27370         (vect_is_simple_reduction): Support reduction with induction as
27371         one of the operands.
27372         (vect_is_simple_iv_evolution): Fix formatting.
27373         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
27374         formatting.  Don't mark induction phis for vectorization.
27375         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
27376         * tree-vect-transform.c (get_initial_def_for_induction): New function.
27377         (vect_get_vec_def_for_operand): Support induction.
27378         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
27379         induction case.
27380         (vectorizable_reduction): Support reduction with induction as one of
27381         the operands.
27382         (vectorizable_type_demotion): Use def-type of stmt argument rather
27383         than dummy def-type.
27384
27385         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
27386         flag_tree_scev_cprop.
27387         * common.opt (tree-scev-cprop): New flag.
27388
27389         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
27390         call to vect_get_new_vect_var.
27391
27392 2007-02-06  Ira Rosen  <irar@il.ibm.com>
27393
27394         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
27395         vectype is not NULL.
27396         (vect_pattern_recog_1): Likewise.
27397
27398 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27399
27400         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
27401         (fold_negate_expr): Likewise.
27402
27403 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
27404
27405         PR debug/30189
27406         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
27407         even if cv-qualification is the same.
27408
27409 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
27410
27411         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
27412         __enable_execute_stack on completion.
27413
27414 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27415
27416         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
27417         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
27418         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
27419         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
27420         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
27421         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
27422         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
27423         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
27424
27425 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27426
27427         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
27428         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
27429         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
27430         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
27431         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
27432         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
27433         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
27434         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
27435         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
27436         umuldi3_highpart_rex64, umulsi3_highpart_insn,
27437         umulsi3_highpart_zext, smuldi3_highpart_rex64,
27438         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
27439         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
27440         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
27441         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
27442         sqrtextenddfxf2_i387): Added amdfam10_decode.
27443
27444         * config/i386/athlon.md (athlon_idirect_amdfam10,
27445         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
27446         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
27447         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
27448         athlon_ivector_store_amdfam10): New define_insn_reservation.
27449         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
27450         amdfam10.
27451
27452 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27453
27454         * config/i386/athlon.md (athlon_call_amdfam10,
27455         athlon_pop_amdfam10, athlon_lea_amdfam10): New
27456         define_insn_reservation.
27457         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
27458         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
27459         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
27460
27461 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27462
27463         * config/i386/athlon.md (athlon_sseld_amdfam10,
27464         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
27465         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
27466
27467 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27468
27469         * config/i386/athlon.md (athlon_sseins_amdfam10): New
27470         define_insn_reservation.
27471         * config/i386/i386.md (sseins): Added sseins to define_attr type
27472         and define_attr unit.
27473         * config/i386/sse.md: Set type attribute to sseins for insertq
27474         and insertqi.
27475
27476 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27477
27478         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
27479         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
27480         ssecomi_load_amdfam10, ssecomi_amdfam10,
27481         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
27482         define_insn_reservation.
27483         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
27484
27485 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27486
27487         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
27488         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
27489         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
27490         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
27491         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
27492         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
27493         define_insn_reservation.
27494
27495         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
27496         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
27497         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
27498         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
27499         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
27500
27501 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27502
27503         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
27504         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
27505         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
27506         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
27507         athlon_ssemul_load_k8): Added amdfam10.
27508
27509 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27510
27511         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
27512         (x86_sse_unaligned_move_optimal): New variable.
27513
27514         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
27515         m_AMDFAM10.
27516         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
27517         for unaligned vector SSE double/single precision loads for AMDFAM10.
27518
27519 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27520
27521         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
27522         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
27523         Define TARGET_CPU_DEFAULT_amdfam10.
27524         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
27525         (processor_type): Add PROCESSOR_AMDFAM10.
27526
27527         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
27528         processor_type in config/i386/i386.h.
27529         Enable imul peepholes for TARGET_AMDFAM10.
27530
27531         * config.gcc: Add support for --with-cpu option for amdfam10.
27532
27533         * config/i386/i386.c (amdfam10_cost): New variable.
27534         (m_AMDFAM10): New macro.
27535         (m_ATHLON_K8_AMDFAM10): New macro.
27536         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
27537         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
27538         x86_promote_QImode, x86_integer_DFmode_moves,
27539         x86_partial_reg_dependency, x86_memory_mismatch_stall,
27540         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
27541         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
27542         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
27543         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
27544         Enable/disable for amdfam10.
27545         (override_options): Add amdfam10_cost to processor_target_table.
27546         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
27547         processor_alias_table.
27548         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
27549         (ix86_adjust_cost): Add code for amdfam10.
27550
27551 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27552
27553         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
27554         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
27555         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
27556         * config/i386/i386.h: Add builtin definition for SSE4A.
27557         * config/i386/i386.md: Add support for ABM instructions
27558         (popcnt and lzcnt).
27559         * config/i386/sse.md: Add support for SSE4A instructions
27560         (movntss, movntsd, extrq, insertq).
27561         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
27562         Add -march=amdfam10 flag.
27563         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
27564         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
27565         and amdfam10.
27566         * doc/extend.texi: Add documentation for SSE4A builtins.
27567
27568 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
27569
27570         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
27571
27572 2007-02-05  Richard Guenther  <rguenther@suse.de>
27573
27574         * tree-vectorizer.h (vectorizable_function): Add argument type
27575         argument, change return type.
27576         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
27577         * tree-vect-transform.c (vectorizable_function): Handle extra
27578         argument, return vectorized function decl.
27579         (build_vectorized_function_call): Remove.
27580         (vectorizable_call): Handle calls with result and argument types
27581         differing.  Handle loop vectorization factor correctly.
27582         * targhooks.c (default_builtin_vectorized_function): Adjust for
27583         extra argument.
27584         * targhooks.h (default_builtin_vectorized_function): Likewise.
27585         * target.h (builtin_vectorized_function): Add argument type
27586         argument.
27587         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
27588         extra argument, allow vectorizing of lrintf.
27589         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
27590         documentation of target hook.
27591
27592 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
27593
27594         PR target/30665
27595         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
27596         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
27597         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
27598
27599 2007-02-05  Roger Sayle  <roger@eyesopen.com>
27600
27601         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
27602         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
27603         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
27604         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
27605         before canonicalizing sincos to cexpi.
27606         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
27607
27608 2007-02-05  Roger Sayle  <roger@eyesopen.com>
27609
27610         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
27611         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
27612         (alpha_init_builtins): Use alpha_add_builtins to process tables.
27613
27614 2007-02-05  Roger Sayle  <roger@eyesopen.com>
27615
27616         * mips-tfile.c (initialize_init_file): Correct endianness test.
27617
27618 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
27619
27620         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
27621         the 'y' constraint.
27622
27623 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
27624
27625         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
27626         saves in a PARALLEL before the register assignments.
27627
27628 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
27629
27630         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
27631         DWARF_FRAME_RETURN_COLUMN to be a general register.
27632         * dwarf2out.c (init_return_column_size): New function, split from...
27633         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
27634         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
27635         to be nongeneral registers.
27636         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
27637         integer registers.
27638         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
27639         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
27640
27641 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
27642
27643         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
27644
27645 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
27646
27647         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
27648         (remove_path): Use can_remove_branch_p and remove_branch instead
27649         of loop_delete_branch_edge.
27650         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
27651         (tree_transform_and_unroll_loop): Remove dead branches immediately.
27652         Update profile using scale_dominated_blocks_in_loop.
27653         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
27654         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
27655         (can_remove_branch_p, remove_branch): Declare.
27656         * tree-cfg.c (tree_can_remove_branch_p): New function.
27657         (tree_cfg_hooks): Add tree_can_remove_branch_p.
27658         * cfgrtl.c (rtl_can_remove_branch_p): New function.
27659         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
27660
27661 2007-02-05  Jan Hubicka  <jh@suse.cz>
27662
27663         PR middle-end/30696
27664         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
27665         nodes in cgraph, don't remove offline copy of the function.
27666
27667 2007-02-04  Jan Hubicka  <jh@suse.cz>
27668
27669         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
27670         vectors might cause maybe_lookup_element_for_expr to be called
27671         on non-sra-candidate.
27672
27673 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
27674
27675         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
27676         config/bfin/bfin.md, config/bfin/predicates.md: Follow
27677         spelling conventions.
27678
27679 2007-02-04  Richard Guenther  <rguenther@suse.de>
27680
27681         PR middle-end/30636
27682         * fold-const.c (try_move_mult_to_index): Make sure to not
27683         overflow one dimension of a multi-dimensional array access.
27684
27685 2007-02-04  Jan Hubicka  <jh@suse.cz>
27686
27687         * passes.c (init_optimization_passes): Reindent.
27688
27689 2007-02-04  Jan Hubicka  <jh@suse.cz>
27690             Eric Botcazou  <ebotcazou@adacore.com>
27691
27692         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
27693         (execute_fixup_cfg): Break out the abnormal goto code.
27694         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
27695         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
27696         (optimize_inline_calls): Call make_nonlocal_label_edges.
27697
27698 2007-02-04  Jan Hubicka  <jh@suse.cz>
27699
27700         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
27701         true when something was changed.
27702         (rename_ssa_copies): When something was changed, do
27703         TODO_remove_unused_locals.
27704         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
27705         add TODO_remove_unused_locals when instruction was removed.
27706
27707 2007-02-04  Jan Hubicka  <jh@suse.cz>
27708
27709         * ipa-inline.c (try_inline): Improve debug output; work on already
27710         inline edges too.
27711         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
27712         call try_inline for already inlined edges too when flattening;
27713         inline also functions that make callee growth but overall unit size
27714         reduce.
27715
27716 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
27717
27718         * config/m32c/bitops.md, config/m32c/jump.md,
27719         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
27720         config/m32r/m32r.h, config/m32r/m32r.md,
27721         config/m32r/predicates.md, config/m68hc11/larith.asm,
27722         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
27723         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
27724         config/mips/mips-protos.h, config/mips/mips.c,
27725         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
27726         config/mn10300/mn10300.h, config/mn10300/predicates.md,
27727         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
27728         spelling conventions.
27729
27730         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
27731         Follow spelling conventions.
27732
27733 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
27734
27735         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
27736         warn about C++0x compatibility.
27737
27738 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
27739
27740         * config/h8300/h8300.c, config/h8300/h8300.h,
27741         config/h8300/h8300.md: Follow spelling conventions.
27742
27743 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
27744
27745         PR middle-end/30667
27746         * combine.c (try_combine): Do not substitute source operand
27747         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
27748
27749 2007-02-03  Jan Hubicka  <jh@suse.cz>
27750
27751         PR gcov-profile/30650
27752         * value-prof.c (stringop_block_profile): Fix handling of size counter;
27753         do not divide by zero for never executed counters.
27754         (tree_find_values_to_profile): Fix counters.
27755         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
27756
27757 2007-02-03  Ian Lance Taylor  <iant@google.com>
27758
27759         * lower-subreg.c (simple_move_operand): New static function,
27760         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
27761         operands.
27762         (simple_move): Call simple_move_operand.
27763         (find_decomposable_subregs): Add special handling of MEMs.
27764         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
27765         meaning of return value.  If we see a hard register, test whether
27766         it can store a word_mode value.  Change all callers.
27767
27768 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27769
27770         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
27771         ftrapv insns and expanders.
27772         (subdi3): Change define_expand operand 1 to arith11_operand, and
27773         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
27774         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
27775         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
27776         respectively.
27777
27778         PR middle-end/30174
27779         * varasm.c (notice_global_symbol): Treat global objects as weak when
27780         flag_shlib is true.
27781
27782 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27783
27784         * emit-rtl.c (dconstpi): Delete.
27785         (dconstsqrt2): New.
27786         (init_emit_once): Delete dconstpi and init dconstsqrt2.
27787         * real.h (dconstpi): Delete.
27788         (dconstsqrt2): New.
27789         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
27790         (fold_builtin_hypot): Likewise.
27791
27792 2007-02-03  Tom Tromey  <tromey@redhat.com>
27793
27794         PR driver/30246
27795         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
27796         -gcoff3, -gxcoff3, -gvms3 implies -dD.
27797
27798 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
27799
27800         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
27801         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
27802         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
27803         config/rs6000/cell.md, config/rs6000/darwin.h,
27804         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
27805         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
27806         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
27807         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
27808         typos.  Follow spelling conventions.
27809         * doc/invoke.texi: Follow spelling conventions.
27810
27811 2007-02-03  Roger Sayle  <roger@eyesopen.com>
27812
27813         * simplify-rtx.c (simplify_relational_operation_1): Implement some
27814         canonicalization transformations that attempt to simplify integer
27815         constant comparisons to become comparisons against zero.
27816
27817 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27818
27819         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
27820         fabs(x)*sqrt(2).
27821         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
27822         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
27823
27824 2007-02-02  Mike Stump  <mrs@apple.com>
27825
27826         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
27827         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
27828         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
27829         generate a branch island.
27830
27831 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
27832
27833         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
27834         (xtensa_legitimate_address_p): New.
27835         (xtensa_legitimize_address): New.
27836         (xtensa_output_addr_const_extra): New.
27837         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
27838         (BASE_REG_P): New.
27839         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
27840         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
27841         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
27842         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
27843         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
27844         (xtensa_legitimize_address): New.
27845         (xtensa_output_addr_const_extra): New.
27846
27847 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
27848
27849         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
27850
27851 2007-02-02  Ian Lance Taylor  <iant@google.com>
27852
27853         * expmed.c (expand_divmod): Add comment.
27854
27855 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
27856
27857         * emit-rtl.c (renumber_insns): Remove.
27858         * flags.h: Remove the extern for flag_renumber_insns.
27859         * rtl.h: Remove the prototype for renumber_insns.
27860         * toplev.c (flag_renumber_insns): Remove.
27861
27862 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
27863
27864         Revert for x86 darwin:
27865         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
27866
27867         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
27868         code before the following patch under TARGET_MACHO.
27869         (ix86_function_value_regno_p): Likewise.
27870
27871 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27872
27873         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
27874         COMPLEX_EXPR.
27875
27876 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
27877
27878         PR target/29682
27879         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
27880         loads to general or fp registers.  Add comments.
27881         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
27882
27883 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
27884
27885         * pointer-set.c (insert_aux): Only return insertion slot.
27886         (pointer_set_insert): Adjust.
27887         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
27888         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
27889         pointer_map_traverse): New.
27890         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
27891         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
27892         pointer_map_contains, pointer_map_traverse): Declare.
27893
27894 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
27895
27896         PR middle-end/30473
27897         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
27898         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
27899
27900 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
27901
27902         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
27903
27904         (struct _dep): New type.
27905         (dep_t): New typedef.
27906         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
27907         (DEP_STATUS): New access macro.  The macro with the same name was
27908         renamed to DEP_LINK_STATUS.
27909         (dep_init): Declare function
27910
27911         (struct _dep_link): New type.
27912         (dep_link_t): New typedef.
27913         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
27914         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
27915         (DEP_LINK_STATUS): New macro.
27916         (debug_dep_links): New debug function.
27917
27918         (struct _deps_list): New type.
27919         (deps_list_t): New typedef.
27920         (DEPS_LIST_FIRST): New access macro.
27921         (FOR_EACH_DEP_LINK): New cycle macro.
27922         (create_deps_list, free_deps_list, delete_deps_list): Declare
27923         functions.
27924         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
27925         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
27926         (copy_deps_list_change_con): Ditto.
27927
27928         (move_dep_link): Declare function.
27929
27930         (struct _dep_node): New type.
27931         (dep_node_t): New typedef.
27932         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
27933
27934         (struct haifa_insn_data.back_deps): New field to hold backward
27935         dependencies of the insn.
27936         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
27937         to deps_list_t.
27938         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
27939         Change its type to deps_list_t.
27940         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
27941         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
27942         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
27943
27944         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
27945
27946         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
27947
27948         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
27949         and all callers.
27950         (dep_cost): Declare.
27951
27952         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
27953         (ds_to_dk, dk_to_ds): New functions.
27954
27955         (init_dep_1): New static function.
27956         (init_dep): New function.
27957         (copy_dep): New static function.
27958
27959         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
27960         functions.
27961         (detach_dep_link): New static function.
27962         (move_dep_link): New function.
27963
27964         (dep_links_consistent_p, dump_dep_links): New static functions.
27965         (debug_dep_links): New debugging function.
27966
27967         (deps_obstack, dl_obstack, dn_obstack): New static variables.
27968
27969         (alloc_deps_list, init_deps_list): New static functions.
27970         (create_deps_list): New function.
27971         (clear_deps_list): New static function.
27972         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
27973         (deps_list_consistent_p, dump_deps_list): New static functions.
27974         (debug_deps_list): New function.
27975         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
27976         functions.
27977         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
27978
27979         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
27980         use new scheduler dependencies lists.
27981         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
27982         (sched_analyze): Ditto.  Initialize dependencies lists.
27983         (add_forw_dep, compute_forward_dependences): Update to use new
27984         scheduler dependencies lists.
27985
27986         (init_dependency_caches): Init deps_obstack.
27987         (free_dependency_caches): Free deps_obstack.
27988
27989         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
27990         new scheduler dependencies lists.
27991         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
27992         (add_back_forw_dep, delete_back_forw_dep): Ditto.
27993
27994         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
27995         Update to use new scheduler dependencies lists.
27996         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
27997         (debug_dependencies): Ditto.
27998         (schedule_region): Update comments.
27999
28000         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
28001         scheduler dependencies lists.
28002         (schedule_ebb): Update comments.
28003
28004         * rtl.def (DEPS_LIST): Remove.
28005
28006         * lists.c (unused_deps_list): Remove.
28007         (free_list): Update assertions.
28008
28009         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
28010         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
28011
28012         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
28013         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
28014
28015         * haifa-sched.c (comments): Update.
28016         (insn_cost1): Remove.  Inline the code into insn_cost ().
28017         (insn_cost): Update to use new scheduler dependencies lists.  Move
28018         processing of the dependency cost to dep_cost ().
28019         (dep_cost): New function.  Use it instead of insn_cost () when
28020         evaluating cost of the dependency.  Use compatible interface to
28021         interact with the target.
28022         (priority): Update to use new scheduler dependencies lists.
28023         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
28024         with greater number of insns that depend on the insn.
28025         (schedule_insn): Update to use new scheduler dependencies lists.  Add
28026         code to free backward dependencies lists.  Inline and optimize code
28027         from resolve_dep () - see PR28071.
28028         (ok_for_early_queue_removal): Update to use new scheduler dependencies
28029         lists.  Update call to targetm.sched.is_costly_dependence hook.
28030
28031         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
28032         scheduler dependencies lists.
28033
28034         (resolve_dep): Remove.  Move the logic to schedule_insn ().
28035         (init_h_i_d): Initialize dependencies lists.
28036
28037         (process_insn_depend_be_in_spec): Rename to
28038         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
28039         dependencies lists.
28040         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
28041         Update to use new scheduler dependencies lists.
28042         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
28043
28044         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
28045         new scheduler dependencies lists.
28046         (build_intra_loop_deps): Ditto.
28047
28048         * target.h (struct _dep): Declare to use in
28049         gcc_target.sched.is_costly_dependence.
28050         (struct gcc_target.sched.adjust_cost): Fix typo.
28051         (struct gcc_target.sched.is_costly_dependence): Change signature to
28052         use single dep_t parameter instead of an equivalent triad.
28053         (struct gcc_target.sched.adjust_cost_2): Remove.
28054
28055         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
28056
28057         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
28058
28059         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
28060         documentation.
28061         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
28062
28063         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
28064         (REG_DEP_TRUE): Document.
28065
28066         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
28067         Change signature to correspond to the targetm.sched.adjust_cost hook.
28068         Update use in TARGET_SCHED_ADJUST_COST_2.
28069         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
28070         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
28071         new scheduler dependencies lists.
28072         (ia64_gen_check): Ditto.
28073
28074         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
28075         scheduler dependencies lists.
28076
28077         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
28078         signature to correspond to the targetm.sched.is_costly_dependence hook.
28079         (is_costly_group): Update to use new scheduler dependencies lists.
28080
28081         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
28082         instead of INSN_COST () macro.
28083
28084 2007-02-01  Ian Lance Taylor  <iant@google.com>
28085
28086         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
28087
28088 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
28089
28090         * pa.md (tp_load): Correct mfctl instruction syntax.
28091
28092 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
28093
28094         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
28095         altivec_padding_size calculation on AIX.  Improve comment, add
28096         assert to verify that it's right.
28097
28098         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
28099         64-bit.
28100
28101 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
28102
28103         PR inline-asm/28686
28104         * global.c (global_alloc): Add mising initialization of
28105         ELIMINABLE_REGSET.
28106
28107 2007-02-01  Roger Sayle  <roger@eyesopen.com>
28108
28109         * alias.c (init_alias_analysis): Correct whitespace.
28110         * bb-reorder.c (fix_edges_for_rarely_executed_code,
28111         partition_hot_cold_basic_blocks): Likewise.
28112         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
28113         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
28114         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
28115         fold_builtin_snprintf_chk, fold_builtin_printf,
28116         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
28117         do_mpfr_arg3, do_mpfr_sincos): Likewise.
28118         * cfgcleanup.c (cleanup_cfg): Likewise.
28119         * cfgexpand.c (tree_expand_cfg): Likewise.
28120         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
28121         * function.c (get_next_funcdef_no): Likewise.
28122         * gengtype.c (main): Likewise.
28123         * genmodes.c (main): Likewise.
28124         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
28125         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
28126         * ifcvt.c (noce_emit_move_insn): Likewise.
28127         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
28128         Likewise.
28129         * stor-layout.c (get_best_mode): Likewise.
28130         * tree-ssa-loop-niter.c (get_val_for): Likewise.
28131         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
28132         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
28133         perform_var_substitution, solve_graph): Likewise.
28134         * tree-vrp.c (vrp_finalize): Likewise.
28135
28136 2007-02-01  Ian Lance Taylor  <iant@google.com>
28137
28138         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
28139         high part of a paradoxical subreg, return a constant zero.
28140
28141 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
28142
28143         * toplev.c (lang_dependent_init): Call init_set_costs.
28144         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
28145
28146 2007-02-01  Richard Guenther  <rguenther@suse.de>
28147
28148         PR middle-end/30656
28149         * fold-const.c (fold_negate_expr): Allow negating a
28150         constant if overflow does not change.
28151
28152 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28153
28154         * doc/c-tree.texi (Expression trees): Improve markup.
28155         * doc/tm.texi (Register Classes, Addressing Modes)
28156         (Floating Point): Fix spacing after abbreviations.  Fix some
28157         typos.
28158
28159 2007-02-01  Ben Elliston  <bje@au.ibm.com>
28160
28161         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
28162         * doc/contrib.texi: Likewise.
28163         * doc/install.texi: Likewise.
28164
28165 2007-01-31  Richard Henderson  <rth@redhat.com>
28166             Ian Lance Taylor  <iant@google.com>
28167
28168         * lower-subreg.c: New file.
28169         * rtl.def (CONCATN): Define.
28170         * passes.c (init_optimization_passes): Add pass_lower_subreg and
28171         pass_lower_subreg2.
28172         * emit-rtl.c (update_reg_offset): New static function, broken out
28173         of gen_rtx_REG_offset.
28174         (gen_rtx_REG_offset): Call update_reg_offset.
28175         (gen_reg_rtx_offset): New function.
28176         * regclass.c: Revert patch of 2006-03-05, restoring
28177         reg_scan_update.
28178         (clear_reg_info_regno): New function.
28179         * dwarf2out.c (concatn_loc_descriptor): New static function.
28180         (loc_descriptor): Handle CONCATN.
28181         * common.opt (fsplit_wide_types): New option.
28182         * opts.c (decode_options): Set flag_split_wide_types when
28183         optimizing.
28184         * timevar.def (TV_LOWER_SUBREG): Define.
28185         * rtl.h (gen_reg_rtx_offset): Declare.
28186         (reg_scan_update): Declare.
28187         * regs.h (clear_reg_info_regno): Declare.
28188         * tree-pass.h (pass_lower_subreg): Declare.
28189         (pass_lower_subreg2): Declare.
28190         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
28191         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
28192         -fsplit-wide-types.
28193         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
28194         * Makefile.in (OBJS-common): Add lower-subreg.o.
28195         (lower-subreg.o): New target.
28196
28197 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
28198
28199         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
28200
28201 2007-01-31  Anatoly Sokolov <aesok@post.ru>
28202
28203         PR target/19087
28204         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
28205
28206 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28207
28208         PR middle-end/29335
28209         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
28210
28211 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
28212
28213         * cfgloop.h: Include vec-prim.h.
28214         (enum li_flags): Remove LI_ONLY_OLD.
28215         (loop_iterator): Changed.
28216         (fel_next, fel_init): Iterate over loop tree.
28217         (FOR_EACH_LOOP_BREAK): New macro.
28218         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
28219         FOR_EACH_LOOP.
28220         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
28221         * modulo-sched.c (sms_schedule): Ditto.
28222         * tree-vectorizer.c (vectorize_loops): Ditto.
28223         * doc/loop.texi: Update information on loop numbering and behavior of
28224         FOR_EACH_LOOP wrto new loops.
28225         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
28226         add_to_evolution_1): Test nestedness of loops instead of comparing
28227         their numbers.
28228         * tree-chrec.c (chrec_fold_plus_poly_poly,
28229         chrec_fold_multiply_poly_poly, chrec_evaluate,
28230         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
28231         reset_evolution_in_loop): Ditto.
28232         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
28233
28234 2007-01-31  Dirk Mueller  <dmueller@suse.de>
28235
28236         * c-common.c (warn_about_parentheses): Separate warning about
28237         un-parenthized sequence of comparison operators from the one
28238         which is supposed to warn about x <= y <= z.
28239
28240 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
28241
28242         * optabs.h (enum optab_index): Add new OTI_isinf.
28243         (isinf_optab): Define corresponding macro.
28244         * optabs.c (init_optabs): Initialize isinf_optab.
28245         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
28246         patterns.
28247         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
28248         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
28249         using isinf_optab.
28250         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
28251         expand_builtin_interclass_mathfn.
28252         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
28253         * config/i386/i386.md (UNSPEC_FXAM): New constant.
28254         (fxam<mode>2_i387): New insn pattern.
28255         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
28256         built-in functions as x87 inline asm.
28257
28258 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
28259
28260         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
28261
28262 2007-01-30  Eric Christopher  <echristo@apple.com>
28263
28264         * config.gcc: Add geode.
28265
28266 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
28267
28268         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
28269         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
28270         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
28271         value-prof.c: Fix comment typos.
28272
28273 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28274
28275         PR c++/24745
28276         * doc/invoke.texi (Wpointer-arith): Document warning.
28277
28278 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
28279
28280         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
28281         the list of discrepancies from the draft TR.
28282
28283 2007-01-30  Dirk Mueller  <dmueller@suse.de>
28284
28285         PR c++/30601
28286         * doc/invoke.texi (-Wreturn-type): Update description to
28287         match new behavior.
28288
28289 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
28290
28291         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
28292
28293 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
28294
28295         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
28296         to handle optabs that operate on floating point input argument and
28297         output to integer output.
28298         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
28299         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
28300         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
28301         expand_builtin_interclass_mathfn ().
28302         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
28303         (ilogbsi2): Remove.
28304         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
28305         ilogbl built-in functions as x87 intrinsics.
28306
28307 2007-01-30  Richard Guenther  <rguenther@suse.de>
28308
28309         PR middle-end/27657
28310         * dwarf2out.c (reference_to_unused): Query varpool if the
28311         variable was output.
28312
28313 2007-01-30  Richard Guenther  <rguenther@suse.de>
28314
28315         PR middle-end/30313
28316         * passes.c (execute_one_pass): Reset in_gimple_form to not
28317         confuse non-unit-at-a-time mode.
28318
28319 2007-01-29  Roger Sayle  <roger@eyesopen.com>
28320             Richard Guenther  <rguenther@suse.de>
28321
28322         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
28323         avoid undefined behaviour on overflow.  Use force_fit_type_double
28324         to construct the constant with the specified TREE_OVERFLOW.
28325
28326 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
28327
28328         * config/dfp-bit.c: Add parameterized support for fp exceptions.
28329         * config/dfp-bit.h: Ditto.
28330
28331 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28332
28333         * c-decl.c (pop_scope): Replace warnings with call to
28334         warn_for_unused_label.
28335         * c-common.h (warn_for_unused_label): Declare.
28336         * c-common.c (warn_for_unused_label): Define.
28337
28338 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28339
28340         * tree-optimize.c (update_inlined_to_pointers): Delete unused
28341         function.
28342
28343 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
28344
28345         * Makefile.in (USER_H): Remove decfloat.h.
28346         * ginclude/decfloat.h: Delete, moving contents to ...
28347         * ginclude/float.h: Add support for decimal floating point,
28348         guarded by __STDC_WANT_DEC_FP__.
28349
28350 2007-01-29  Mike Stump  <mrs@apple.com>
28351
28352         * doc/gccint.texi (Top): Rename Loop Representation to Loop
28353         Analysis and Representation to resolve case insensitive conflict.
28354         * doc/loop.texi (Loop Analysis and Representation): Likewise.
28355
28356 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
28357
28358         * tree.h (struct tree_memory_tag): Add aliases member.
28359         (MTAG_ALIASES): New macro.
28360         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
28361         (add_may_alias): Remove pointer-set. Update for may_aliases being
28362         a bitmap.
28363         (mark_aliases_call_clobbered): Update for may_aliases being a
28364         bitmap.
28365         (compute_tag_properties): Ditto.
28366         (create_partition_for): Ditto.
28367         (compute_memory_partitions): Ditto.
28368         (dump_may_aliases_for): Ditto.
28369         (is_aliased_with): Ditto.
28370         (add_may_alias_for_new_tag): Ditto.
28371         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
28372         (compute_is_aliased): New function.
28373         (compute_may_aliases): Call compute_is_aliased).
28374         (init_alias_info): Initialize alias_bitmap_obstack.
28375         (union_alias_set_into): New function.
28376         (compute_flow_sensitive_aliasing): Use union_aliases_into.
28377         (have_common_aliases_p): Rewrite to take two bitmaps and use
28378         intersection.
28379         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
28380         Update for bitmaps.
28381         (finalize_ref_all_pointers): Update for add_may_alias changes.
28382         (new_type_alias): Ditto.
28383         * tree-flow-inline.h (may_aliases): Return a bitmap.
28384         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
28385         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
28386         may_aliases being a bitmap.
28387         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
28388         may_aliases now returns a bitmap.
28389         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
28390         being a bitmap.
28391         * tree-ssa-operands.c (add_virtual_operand): Update for
28392         may_aliases being a bitmap.
28393
28394 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
28395
28396         PR tree-optimization/30630
28397         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
28398         variable as changed.
28399
28400 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
28401
28402         PR c++/28266
28403         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
28404         expanded only once even if an error occurs.
28405
28406 2007-01-29  Ben Elliston  <bje@au.ibm.com>
28407
28408         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
28409         (__gcov_average_profiler): Likewise.
28410         (__gcov_ior_profiler): Likewise.
28411         (__gcov_merge_ior): Likewise.
28412
28413 2007-01-28  Jan Hubicka  <jh@suse.cz>
28414
28415         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
28416         * value-prof.c (stringop_block_profile): Likewise.
28417
28418 2007-01-28  Jan Hubicka  <jh@suse.cz>
28419
28420         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
28421         Add variant handling histograms; add wrapper.
28422         (clear_storage_via_libcall): Export.
28423         (emit_block_move_hints): Break out from ...; add histograms.
28424         (emit_block_move): ... this one.
28425         (clear_storage_hints): Break out from ...; add histograms.
28426         (clear_storage): ... this one.
28427         (set_storage_via_memset): Handle histogram.
28428         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
28429         (clear_storage_hints, clear_storage_via_libcall): Declare.
28430         (set_storage_via_setmem): Update prototype.
28431         * doc/md.texi (movmem, setmem): Document new arguments.
28432
28433         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
28434         Add new histograms.
28435         (stringop_block_profile): New global function.
28436         (tree_stringops_values_to_profile): Profile block size and alignment.
28437         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
28438         HIST_TYPE_IOR.
28439         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
28440         (stringop_block_profile): Declare.
28441         * builtins.c: Include value-prof.h.
28442         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
28443         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
28444         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
28445         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
28446         * profile.c (instrument_values): Add new counters.
28447         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
28448         calls.
28449         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
28450         (tree_init_edge_profiler): Build new profilers.
28451         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
28452         (pass_tree_profile): Add dump.
28453         (tree_profile_hooks): Update.
28454         * Makefile.in (LIBGCOV): Add new constants.
28455         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
28456         __gcov_ior_profiler): New.
28457         * i386.md (movmem/setmem expanders): Add new optional arguments.
28458
28459 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
28460
28461         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
28462
28463 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
28464
28465         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
28466         (tree_unswitch_single_loop): Pass eni_size_weights to
28467         tree_num_loop_insns.
28468         * tree-ssa-loop-manip.c: Include tree-inline.h.
28469         (can_unroll_loop_p): Pass eni_size_weights to
28470         tree_num_loop_insns.
28471         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
28472         Pass eni_size_weights to estimate_num_insns.
28473         * tree.h (init_inline_once): Export.
28474         * toplev.c (backend_init): Call init_inline_once.
28475         * cgraphunit.c (cgraph_process_new_functions,
28476         cgraph_analyze_function): Pass eni_inlining_weights to
28477         estimate_num_insns.
28478         * ipa-inline.c (compute_inline_parameters): Ditto.
28479         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
28480         to estimate_num_insns.
28481         (try_unroll_loop_completely): Pass eni_size_weights to
28482         tree_num_loop_insns.
28483         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
28484         ot estimate_num_insns.
28485         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
28486         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
28487         * tree-inline.c (eni_inlining_weights, eni_size_weights,
28488         eni_time_weights): New variables.
28489         (init_inline_once): Initialize them.
28490         (struct eni_data): Mew.
28491         (estimate_num_insns_1, estimate_num_insns): Use weights.
28492         * tree-inline.h (struct eni_weights_d): New.
28493         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
28494         (estimate_num_insns): Declaration changed.
28495         * cfgloop.h (tree_num_loop_insns): Declaration changed.
28496         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
28497         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
28498
28499 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
28500
28501         * tree-data-ref.c (conflict_fn): Assert that the number of affine
28502         relations in the conflict function is valid.
28503
28504 2007-01-27  Ian Lance Taylor  <iant@google.com>
28505
28506         * common.opt: Add fstrict-overflow.
28507         * opts.c (decode_options): Set flag_strict_overflow if -O2.
28508         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
28509         (TYPE_OVERFLOW_UNDEFINED): Define.
28510         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
28511         Replace all uses.
28512         * tree.h (TYPE_TRAP_SIGNED): Don't define.
28513         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
28514         (fold_negate_expr): Likewise.
28515         (make_range): Likewise.
28516         (extract_muldiv_1): Likewise.
28517         (maybe_canonicalize_comparison): Likewise.
28518         (fold_comparison): Likewise.
28519         (fold_binary): Likewise.
28520         (tree_expr_nonnegative_p): Likewise.
28521         (tree_expr_nonzero_p): Likewise.
28522         * tree-vrp.c (compare_values): Likewise.
28523         (extract_range_from_binary_expr): Likewise.
28524         (extract_range_from_unary_expr): Likewise.
28525         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
28526         Likewise.
28527         (nowrap_type_p): Likewise.
28528         * tree-scalar-evolution.c (simple_iv): Likewise.
28529         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
28530         (build_range_check): Likewise.
28531         (extract_muldiv_1): Likewise.
28532         (fold_comparison): Likewise.
28533         * tree-vrp.c (vrp_int_const_binop): Likewise.
28534         (extract_range_from_unary_expr): Likewise.
28535         * convert.c (convert_to_integer): Likewise.
28536         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
28537         (fold_comparison): Likewise.
28538         (fold_binary): Likewise.
28539         * optabs.c (optab_for_tree_code): Likewise.
28540         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
28541         * simplify-rtx.c (simplify_const_relational_operation): Check
28542         flag_strict_overflow and flag_trapv.
28543         (simplify_const_relational_operation): Likewise.
28544         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
28545         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
28546         -fstrict-overflow.
28547
28548 2007-01-27  Roger Sayle  <roger@eyesopen.com>
28549
28550         * tree.c (tree_fold_gcd): Delete.
28551         * tree.h (tree_fold_gcd): Remove prototype.
28552         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
28553         test whether one constant integer is a multiple of another.  Instead
28554         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
28555         * fold-const.c (multiple_of_p): We've determined both TOP and
28556         BOTTOM are integer constants so we can call int_const_binop directly
28557         instead of the more generic const_binop.
28558
28559 2007-01-27  Roger Sayle  <roger@eyesopen.com>
28560
28561         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
28562         1*X check that the constant hasn't overflowed, to preserve the
28563         TREE_OVERFLOW bit.
28564         (round_up): Provide an efficient implementation when rouding-up an
28565         INTEGER_CST to a power-of-two.
28566
28567 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28568
28569         * doc/sourcebuild.texi: Add comma for clarity.
28570         * doc/extend.texi: Fix some typos.
28571         * doc/passes.texi: Likewise.
28572         * doc/cppinternals.texi: Likewise.
28573         * doc/c-tree.texi: Likewise.
28574         * doc/tree-ssa.texi: Likewise.
28575         * doc/install.texi: Likewise.
28576
28577 2007-01-27  Jan Hubicka  <jh@suse.cz>
28578
28579         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
28580         (pass_sra): Do not require alias information.
28581         * passes.c (init_optimization_passes): Add SRA
28582
28583 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
28584
28585         * tracer.c (rest_of_handle_tracer): We already cleaned
28586         up the CFG in tracer() so don't do it here again.
28587         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
28588         cleanup_cfg here, either.  And don't call renumber_insns.
28589
28590         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
28591         and BB_HEAD are in the insn stream here.  Instead make sure
28592         that BB_INSN is valid on all insns.  Also, do check here that
28593         there are no pending branch predictions...
28594         (rtl_verify_flow_info): ...instead of doing it here.  Checks
28595         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
28596         here.
28597
28598 2007-01-26  Roger Sayle  <roger@eyesopen.com>
28599
28600         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
28601         function to simplify/factorize operand order canonicalization.
28602         (ix86_fixup_binary_operands): Reorganize using the above function.
28603         (ix86_binary_operator_ok): Likewise.
28604
28605 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
28606
28607         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
28608         file scope from optimize_attrs.
28609         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
28610         up search.
28611         (optimize_attrs): Clear insn_code_values after freeing it.
28612
28613 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
28614
28615         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
28616         a parts.base assignment.
28617
28618 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
28619
28620         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
28621         (compute_subscript_distance, initialize_data_dependence_relation,
28622         finalize_ddr_dependent, analyze_ziv_subscript,
28623         analyze_siv_subscript_cst_affine,
28624         compute_overlap_steps_for_affine_univar,
28625         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
28626         analyze_siv_subscript, analyze_miv_subscript,
28627         analyze_overlapping_iterations, subscript_dependence_tester_1,
28628         compute_self_dependence, free_dependence_relation): Work
28629         with affine_fn instead of chrecs.
28630         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
28631         common_affine_function, affine_function_base,
28632         affine_function_constant_p, affine_fn_op, affine_fn_plus,
28633         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
28634         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
28635         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
28636         (all_chrecs_equal_p): Removed.
28637         * tree-data-ref.h (affine_fn, conflict_function): New types.
28638         (struct subscript): Change type of conflicting_iterations_in_a
28639         and conflicting_iterations_in_b.
28640
28641 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
28642
28643         PR other/30182
28644         * config/pa/pa.h (TARGET_HPUX_11): New.
28645         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
28646         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
28647
28648 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
28649         Richard Guenther  <rguenther@suse.de>
28650
28651         * tree-ssa-structalias.c (solve_graph): Handle case
28652         we merged the variable to another.
28653
28654 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28655
28656         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
28657         functions.
28658
28659         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
28660         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
28661
28662 2007-01-25  DJ Delorie  <dj@redhat.com>
28663
28664         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
28665         allow changes to modes which don't fit in those registers.
28666
28667         * reload1.c (choose_reload_regs): Check for invalid subregs before
28668         computing their locations, not after.
28669
28670 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
28671
28672         PR 25127
28673         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
28674         save Altivec registers in an eh_return function.
28675         (compute_vrsave_mask): Likewise.
28676         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
28677         for saving Altivec registers.
28678         (rs6000_emit_prologue): Don't allocate stack twice in
28679         eh_return function.  Correct expected value of altivec_save_offset
28680         when using save_world.  Describe save of R0 to stack when using
28681         save_world.  Describe stack pointer adjustment when using
28682         save_world.  Remove duplicated eh_return parameter register saving.
28683         Update sp_offset variable after save_world.
28684         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
28685         darwin-world.asm.
28686         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
28687         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
28688         implies Altivec.
28689
28690 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
28691
28692         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
28693
28694 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
28695
28696         PR other/30182
28697         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
28698         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
28699
28700 2007-01-25  Richard Guenther  <rguenther@suse.de>
28701
28702         * doc/invoke.texi (-Wcoverage-mismatch): Document.
28703         * common.opt (-Wcoverage-mismatch): New warning option.
28704         * coverage.c (get_coverage_counts): Ignore coverage mismatch
28705         if -Wcoverage-mismatch is given.
28706
28707 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
28708
28709         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
28710         (ipcp_driver): Change to static definition.
28711         Add dumping of the ifunctions.
28712         (constant_val_insert): Remove unused parameter. Support for SSA.
28713         (ipcp_propagate_const): Support for SSA.
28714         (ipcp_profile_bb_print): Print only analyzed nodes.
28715         (ipcp_replace_map_create): Remove support for Fortran constant
28716         for now.
28717         * ipa-prop.c (ipa_method_modify_stmt,
28718         ipa_callsite_compute_param): Support for SSA.
28719         * ipa-prop.h (ipcp_driver): Remove declaration.
28720         (IS_VALID_TREE_MAP_INDEX): Add define.
28721
28722 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
28723
28724         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
28725
28726 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28727
28728         PR middle-end/30447
28729         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
28730         constant argument to cabs and do it without checking for
28731         -funsafe-math-optimizations.
28732
28733 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
28734
28735         * c-common.h (RID_FIRST_CXX0X): New.
28736         (RID_LAST_CXX0X): New.
28737         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
28738         by -Wall.
28739         * c.opt (Wc++0x-compat): New.
28740         * doc/invoke.texi (-Wc++0x-compat): Document.
28741
28742 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28743
28744         * builtins.c (fold_builtin_carg): New.
28745         (fold_builtin_1): Use it.
28746
28747 2007-01-24  Jan Hubicka  <jh@suse.cz>
28748
28749         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
28750
28751         * ipa-inline.c (initial_insns, max_insns): Delete.
28752         (compute_max_insns): New function.
28753         (cgraph_decide_inlining_of_small_function): Use it; take minimal
28754         amount of insns as base for code growth.
28755         (cgraph_decide_inlining): Make initial_insns local; do not compute
28756         max_insns.
28757         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
28758         * doc/invoke.texi (inline-unit-growth): Update docs.
28759
28760 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
28761
28762         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
28763         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
28764         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
28765         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
28766         for CPUs that have PTA_CX16 set.
28767
28768         PR middle-end/27416
28769         * gimplify.c (omp_check_private): New function.
28770         (gimplify_scan_omp_clauses): Use it for
28771         firstprivate/lastprivate/reduction.
28772
28773         PR middle-end/30494
28774         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
28775         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
28776
28777         PR middle-end/30421
28778         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
28779         If lower_lastprivate_clauses emits some statements, append them
28780         to dlist rather than body_p and to body_p append an initializer.
28781         (lower_omp_for): Adjust caller.
28782
28783 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
28784
28785         * target.h (globalize_decl_name): New.
28786         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
28787         * output.h (default_globalize_decl_name): New.
28788         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
28789         globalize_label.
28790         (globalize_decl): Ditto.
28791         (default_globalize_decl_name): New.
28792         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
28793         (ia64_handle_version_id_attribute): New.
28794         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
28795         (ia64_asm_output_external): Use globalize_decl_name instead
28796         of globalize_label.
28797         * doc/extend.texi (version_id): New pragma.
28798         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
28799
28800 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
28801
28802         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
28803         _uleb128_t and _Unwind_SWord with _sleb128_t.
28804         * unwind-dw2.c (extract_cie_info, execute_stack_op,
28805         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
28806         Likewise.
28807         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
28808         * unwind-pe.h (read_uleb128, read_sleb128,
28809         read_encoded_value_with_base): Likewise.
28810         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
28811
28812 2007-01-24  Richard Guenther  <rguenther@suse.de>
28813
28814         * builtins.c (expand_builtin_cexpi): Get the fndecl
28815         for cexp in the correct way.
28816
28817 2007-01-24  Jan Hubicka  <jh@suse.cz>
28818
28819         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
28820         of calls.
28821
28822 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
28823
28824         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
28825         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
28826         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
28827         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
28828         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
28829         __SIZEOF_PTRDIFF_T__.
28830         * doc/cpp.texi: Documentation for the new builtin macros added.
28831
28832 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
28833
28834         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
28835         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
28836         instead of operands[2] to avoid access past the end of array.
28837
28838 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
28839
28840         * reload1.c (emit_reload_insns): Pass the reload register
28841         for a non-spill output reload through forget_old_reloads_1.
28842
28843 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
28844
28845         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
28846         _SOFT_DOUBLE if doubles use software floating-point.
28847         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
28848         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
28849         * config/rs6000/darwin-ldouble.c: Also compile functions for
28850         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
28851         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
28852         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
28853         commented-out long double override.
28854         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
28855         * config/rs6000/eabispe.h: Likewise.
28856         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
28857         long double for non-SPE.
28858         (rs6000_handle_option): Likewise.
28859         (invalid_e500_subreg): Disallow more subregs involding DImode,
28860         DFmode, TImode or TFmode.
28861         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
28862         E500 double.
28863         (legitimate_lo_sum_address_p): Also check for TFmode for E500
28864         double.
28865         (rs6000_legitimize_address): Also handle TFmode for E500 double.
28866         (rs6000_legitimize_reload_address): Also handle TFmode for E500
28867         double.
28868         (rs6000_legitimate_address): Also check for TFmode for E500
28869         double.
28870         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
28871         (spe_build_register_parallel): Handle TFmode and TCmode.
28872         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
28873         double.
28874         (function_arg): Handle TFmode and TCmode for E500 double.
28875         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
28876         in general.
28877         (print_operand): Handle TFmode and TImode for %y.
28878         (rs6000_generate_compare): Handle TFmode comparisons for E500
28879         double.
28880         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
28881         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
28882         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
28883         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
28884         TFmode for E500 double.
28885         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
28886         (floatsidf2): Enable for E500 double.
28887         (movtf_softfloat): Use rs6000_nonimmediate_operand.
28888         (extenddftf2): Change to extenddftf2_fprs.
28889         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
28890         depending on TARGET_E500_DOUBLE.
28891         (extendsftf2): Enable for E500 double.
28892         (trunctfdf2): Enable for E500 double.
28893         (trunctfsf2): Change to trunctfsf2_fprs.
28894         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
28895         depending on TARGET_E500_DOUBLE.
28896         (floatsitf2): Enable for E500 double.
28897         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
28898         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
28899         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
28900         (negtf2): Change to negtf2_internal.
28901         (negtf2): New expander.
28902         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
28903         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
28904         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
28905         (movdi_internal32): Use rs6000_nonimmediate_operand.
28906         (unnamed splitter): Likewise.
28907         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
28908         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
28909         (SPE64TF, DITI): New mode macros.
28910         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
28911         modes.
28912         (frob_tf_ti): New.
28913         (frob_<mode>_di_2): New.
28914         (frob_tf_di_8_2): New.
28915         (frob_di_df): Change to frob_di_<mode>; allow more modes.
28916         (frob_ti_tf): New.
28917         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
28918         more modes.
28919         (frob_ti_<mode>_8_2): New.
28920         (frob_ti_tf_2): New.
28921         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
28922         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
28923         TFmode.
28924         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
28925         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
28926         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
28927         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
28928         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
28929         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
28930         tsttflt_gp): New.
28931
28932 2007-01-23  Ian Lance Taylor  <iant@google.com>
28933
28934         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
28935         insn-*.o first.
28936         (OBJS-archive): Reformat, alphabetize.
28937         (OBJS): Change out_object_file to OBJS-md.
28938
28939 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
28940
28941         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
28942         JUMP_P and CALL_P predicates where applicable.
28943         * config/i386/i386.c: Ditto.
28944         * config/i386/i386.md: Ditto.
28945         * config/i386/mmx.md: Ditto.
28946         * config/i386/predicates.md: Ditto.
28947
28948 2007-01-22  Andreas Schwab  <schwab@suse.de>
28949
28950         * config/m68k/m68k.h: Fix comment.
28951
28952 2007-01-22  Jan Hubicka  <jh@suse.cz>
28953
28954         * passes.c (init_optimization_passes): Do not rerun
28955         pass_early_warn_uninitialized.
28956
28957 2007-01-22  Richard Guenther  <rguenther@suse.de>
28958
28959         PR tree-optimization/30038
28960         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
28961         function.
28962         (execute_cse_sincos_1): Likewise.
28963         (execute_cse_sincos): Likewise.
28964         (gate_cse_sincos): Likewise.
28965         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
28966         the cexpi() canonicalization of sincos().
28967         * tree-pass.h (pass_cse_sincos): Declare.
28968         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
28969
28970 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
28971
28972         PR rtl-optimization/29329
28973         * combine.c (replaced_rhs_insn): Rename to i2mod.
28974         (replaced_rhs_value): Rename to i2mod_new_rhs.
28975         (i2mod_old_rhs): New global variable.
28976         (combine_instructions): Adjust for above change.  Save a copy of
28977         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
28978         note are substituted in the second instruction.
28979         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
28980         ditch the note if it pertains to the second eliminated register
28981         and this register is mentioned in i2mod_old_rhs.
28982
28983         Revert:
28984         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
28985
28986         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
28987         the insn to which the note was originally attached.
28988
28989 2007-01-21  Jan Hubicka  <jh@suse.cz>
28990
28991         * ipa-inline.c (inlining_mode): Comment, move up.
28992         (cgraph_decide_inlining_incrementally): Do not perform inlining
28993         itself; fix handling of flattening of self recursive functions.
28994         (cgraph_find_cycles): Remove.
28995         (cgraph_flatten_node): Remove.
28996         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
28997         (try_inline): New function.
28998         (cgraph_early_inlining): Update call of
28999         cgraph_decide_inlining_incrementally.  Apply inlining here.
29000         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
29001
29002 2007-01-21  Dirk Mueller  <dmueller@suse.de>
29003
29004         PR bootstrap/30511
29005         * tree-vrp.c (check_array_bounds): do not warn
29006         about ADDR_EXPR's of ARRAY_REF's which are immediately
29007         used in binary expressions.
29008
29009 2007-01-21  Ira Rosen  <irar@il.ibm.com>
29010
29011         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
29012         read_write_dep and macros for its access.
29013         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
29014         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
29015         argument, call vect_check_interleaving for every independent pair of
29016         data-refs. Mark loads that access the same memory location as a store
29017         in the loop.
29018         (vect_check_dependences): Remove.
29019         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
29020         call, fix the call to vect_analyze_data_ref_dependence.
29021         (vect_analyze_data_ref_access): For statements that access the same
29022         data-ref, check that they are not stores; for loads, check that there
29023         is no store that access the same location.
29024
29025 2007-01-20  Roger Sayle  <roger@eyesopen.com>
29026             Joseph Myers  <joseph@codesourcery.com>
29027
29028         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
29029         (-fdump-rtl-stack): Likewise.
29030         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
29031         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
29032         (-mpt-fixed): Use @minus{} for minus sign.
29033         (Using Precompiled Headers): Fix under/overfull hbox.
29034
29035 2007-01-20  Jan Hubicka  <jh@suse.cz>
29036
29037         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
29038         place within annotation.
29039
29040 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29041
29042         * pa.c (output_move_double): Change array size of xoperands to 4.
29043
29044 2007-01-20  Jan Hubicka  <jh@suse.cz>
29045
29046         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
29047         as temporary.
29048
29049 2007-01-19  Ian Lance Taylor  <iant@google.com>
29050
29051         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
29052         constant to unsigned HOST_WIDE_INT before negating.
29053
29054 2007-01-19  Ian Lance Taylor  <iant@google.com>
29055
29056         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
29057         to unsigned.
29058         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
29059         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
29060         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
29061         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
29062         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
29063         (realloc_vdef, realloc_vuse): Change second parameter to
29064         unsigned.
29065         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
29066         fields to unsigned.
29067         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
29068         unsigned. Change x and lim locals to unsigned.
29069         (realloc_vdef, realloc_vuse): Change num_elem parameter to
29070         unsigned.
29071         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
29072         (copy_virtual_operands): Change i and n locals to unsigned.
29073
29074 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29075
29076         PR middle-end/29335
29077         * builtins.c (fold_builtin_1): Handle builtin fdim.
29078
29079 2007-01-20  Jan Hubicka  <jh@suse.cz>
29080
29081         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
29082         * tree-ssa-structalias.c (compute_points_to_sets): Do call
29083         init_alias_heapvars.
29084         (init_alias_heapvars): Initialize only when not already initialized.
29085         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
29086
29087 2007-01-19  Roger Sayle  <roger@eyesopen.com>
29088
29089         * common.opt (fsigned-zeros): New command line option.
29090         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
29091         of flag_unsafe_math_optimizations.
29092         * opts.c (set_fast_math_flags): The -ffast-math command line option
29093         implies -fno-signed-zeros.
29094         (fast_math_flags_set_p): Likewise.
29095
29096         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
29097         the documentation of -ffast-math appropriately.  Wrap long lines.
29098
29099 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
29100
29101         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
29102         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
29103
29104 2007-01-19  Tomas Bily  <tbily@suse.cz>
29105
29106         * cgraphunit.c (cgraph_finalize_function): Updating of pid
29107         * tree-profile.c:
29108         (tree_init_ic_make_global_vars): New function
29109         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
29110         (tree_gen_ic_profiler): New function
29111         (tree_gen_ic_func_profiler): New function
29112         (tree_profiling): Added calling of tree_gen_ic_func_profiler
29113         (tree_profile_hooks): Added hook for indirec/virtual calls
29114         * value-prof.c (tree_find_values_to_profile): New case for
29115         indirect calls
29116         (tree_values_to_profile): Call for determining indirect/virtual
29117         counters
29118         (tree_indirect_call_to_profile): New function
29119         (tree_ic_transform): New function
29120         (tree_ic): New function
29121         (find_func_by_pid): New function
29122         (init_pid_map): New function
29123         (tree_value_profile_transformations): Added check for
29124         indirect/virtual call transformation
29125         * value-prof.h (enum hist_type): New counter type for
29126         indirect/virtual calls
29127         (profile_hooks): Added new hook for profiling indirect/virtual
29128         calls
29129         * profile.c (instrument_values): New case for indirect/virtual
29130         call added
29131         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
29132         (GCOV_COUNTER_V_INDIR): New counter type
29133         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
29134         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
29135         call added
29136         * cgraph.c: Definition of cgraph_max_pid
29137         (cgraph_create_node): Default init of pid attribute
29138         * cgraph.h: Declaration of cgraph_max_pid
29139         (struct cgraph_node): Added pid attribute
29140         * libgcov.c (__gcov_indirect_call_profiler): New function
29141         (__gcov_one_value_profiler_body): New function
29142         (__gcov_one_value_profiler): Body was moved to
29143         __gcov_one_value_profiler_body and calls it
29144
29145 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
29146
29147         * doc/gty.texi (Options): Document the mark_hook option to GTY.
29148         * gengtype.c (write_types_data, write_func_for_structure,
29149         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
29150         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
29151         (walk_type, write_func_for_structure): Generate the mark_hook if
29152         needed.
29153
29154 2007-01-19  Jan Hubicka  <jh@suse.cz>
29155
29156         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
29157         'early' argument take inlining mode argument specifying whether to
29158         inline for size/speeed or all functions; add support for flattening;
29159         improve dumpting.
29160         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
29161
29162 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29163
29164         PR c++/17947
29165         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
29166         the name of the declared identifier.
29167
29168 2007-01-19  Dirk Mueller  <dmueller@suse.de>
29169
29170         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
29171         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
29172         duplicate evaluation.
29173
29174 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
29175
29176         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
29177         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
29178         to XFMode, use acosxf2 and truncate result to requested mode.
29179         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
29180         (asin<mode>2): Similarly, with asin expanders.
29181         (*fscalexf4_i387): Rename from *fscalexf4.
29182         (expNcorexf3): New expander.
29183         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
29184         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
29185         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
29186         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
29187         patterns for SSE math.
29188         (exp10<mode>2): Similarly, with exp10 expanders.
29189         (exp2<mode>2): Similarly, with exp2 expanders.
29190         (expm1<mode>2): Similarly, with expm1 expanders.
29191         (ldexp<mode>3): Similarly, with ldexp expanders.
29192         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
29193         Use gen_truncxf<mode>2_i387_noop to truncate result.
29194
29195 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29196
29197         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
29198         for ColdFire targets.
29199
29200 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
29201             Richard Sandiford  <richard@codesourcery.com>
29202
29203         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
29204         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
29205         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
29206         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
29207         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
29208         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
29209
29210 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29211
29212         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
29213         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
29214         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
29215         (*adddi_dilshr32_cf): New pattern.
29216         (adddi3, subdi3): Remove first alternatives.
29217
29218 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29219
29220         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
29221         implemented using move.l, do not use its cc result for floating-point
29222         comparisons.
29223
29224 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29225
29226         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
29227         from accepting 's' constraints if flag_pic.
29228
29229 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29230
29231         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
29232         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
29233         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
29234         condition from TARGET_68881 to TARGET_HARD_FLOAT.
29235
29236 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
29237
29238         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
29239         ColdFire alternatives.
29240         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
29241         * config/m68k/m68k.md (clzsi2): Define for ColdFire
29242         architectures that support ff1 instruction.
29243
29244 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29245             Julian Brown  <julian@codesourcery.com>
29246
29247         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
29248         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
29249         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
29250         Add commentary.
29251
29252 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
29253
29254         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
29255         and return a bool.
29256         (output_move_const_into_data_reg, output_move_simode_const): Delete.
29257         * config/m68k/m68k.c (const_method, const_int_cost): Take a
29258         HOST_WIDE_INT instead of an rtx.
29259         (m68k_rtx_costs): Update call accordingly.
29260         (output_move_const_into_data_reg): Likewise.  Fix formatting.
29261         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
29262         Return a bool.
29263         (output_move_simode_const): Update calls after above changes.
29264         Rework to use automatic variables and predicates like MEM_P.
29265         * config/m68k/m68k.md (pushexthisi_const): Update call to
29266         valid_mov3q_const.
29267
29268 2007-01-19  Dirk Mueller  <dmueller@suse.de>
29269
29270         * tree-ssa-alias.c (perform_var_substitution): Fix typo
29271         in dump_flags test.
29272
29273 2007-01-19  Richard Guenther  <rguenther@suse.de>
29274
29275         * builtins.c (expand_builtin_cexpi): Fall back to expanding
29276         via cexp in case sincos is not available.
29277
29278 2007-01-19  Richard Guenther  <rguenther@suse.de>
29279
29280         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
29281         * defaults.h (TARGET_HAS_SINCOS): Default to off.
29282         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
29283         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
29284         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
29285         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
29286         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
29287         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
29288
29289 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
29290
29291         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
29292         New insn patterns.
29293         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
29294         (atan2xf3): Directly generate RTL pattern.
29295         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
29296         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
29297         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
29298         disable patterns for SSE math.
29299         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
29300         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
29301         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
29302         disable patterns for SSE math.
29303
29304 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
29305
29306         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
29307
29308 2007-01-18  Roger Sayle  <roger@eyesopen.com>
29309
29310         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
29311         VIEW_CONVERT_EXPR to the same type as it's operand.
29312
29313 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
29314
29315         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
29316         configured for long double 128.
29317
29318 2007-01-18  Mike Stump  <mrs@apple.com>
29319
29320         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
29321         error.
29322
29323 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
29324
29325         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
29326         type correct.
29327
29328 2007-01-18  Jan Hubicka  <jh@suse.cz>
29329
29330         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
29331         greater than NUM_VOP_FREE_BUCKETS.
29332
29333 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
29334
29335         * tree-ssa-structalias.c: Update comments.
29336         (ptabitmap_obstack): Removed.
29337         (pta_obstack): New.
29338         (oldpta_obstack): Ditto.
29339         (stats): Add a few members.
29340         (struct variable_info): Remove node, complex, address_taken, and
29341         indirect_target members. Add oldsolution member.
29342         (new_var_info): Do not initialize removed members.
29343         (constraint_expr_type): Remove INCLUDES.
29344         (constraint_graph): Add size, implicit_preds, rep,
29345         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
29346         (FIRST_REF_NODE): New macro.
29347         (LAST_REF_NODE): Ditto.
29348         (FIRST_ADDR_NODE): Ditto.
29349         (find): New function.
29350         (unite): Ditto.
29351         (dump_constraint): Do not handle INCLUDES.
29352         (insert_into_complex): Do not insert duplicate constraints.
29353         (condense_varmap_nodes): Renamed and rewritten into ...
29354         (merge_node_constraints): This. Also fix bug in handling of
29355         offseted copy constraints.
29356         (clear_edges_for_node): No longer need to deal with preds at all,
29357         or removing associated preds/succs.
29358         (merge_graph_nodes): Deal with indirect_cycles.
29359         Don't deal with predecessors.
29360         (add_implicit_graph_edge): New function.
29361         (add_pred_graph_edge): Ditto.
29362         (add_graph_edge): Don't deal with predecessors.
29363         (build_constraint_graph): Removed.
29364         (build_pred_graph): New function.
29365         (build_succ_graph): Ditto.
29366         (struct scc_info): Removed in_component. Added roots, dfs, and
29367         node_mapping. Remove visited_index, unification_queue.
29368         (scc_visit): Deal with union-find we do now.
29369         Deal with cycles with REF nodes.
29370         (collapse_nodes): Renamed and rewritten to ...
29371         (unify_nodes): This.
29372         (process_unification_queue): Removed.
29373         (topo_visit): Cleanup
29374         (do_da_constraint): Use find.
29375         (do_sd_constraint): Ditto.
29376         (do_ds_constraint): Ditto.
29377         (do_complex_constraint): Ditto.
29378         (init_scc_info): Update for removed and added members.
29379         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
29380         (find_indirect_cycles): This.
29381         (equivalence_class): New variable.
29382         (label_visit): New function.
29383         (perform_variable_substitution): Rewritten.
29384         (free_var_substitution_info): New function.
29385         (find_equivalent_node): Ditto.
29386         (move_complex_constraints): Ditto.
29387         (eliminate_indirect_cycles): Ditto.
29388         (solve_graph): Only propagate changed bits.
29389         Use indirect cycle elimination.
29390         Use find.
29391         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
29392         (tree_id_eq): Renamed to ...
29393         (tree_vi_eq): This. Update for member change
29394         (insert_id_for_tree): Renamed and rewritten to ...
29395         (insert_vi_for_tree): This.
29396         (lookup_id_for_tree): Renamed and rewritten to ...
29397         (lookup_vi_for_tree): This.
29398         (get_id_for_tree): Renamed and rewritten to ...
29399         (get_vi_for_tree): Ditto.
29400         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
29401         (process_constraint): Don't handle INCLUDES.
29402         Remove special ADDRESSOF case.
29403         (find_func_aliases): Rewrite to use vi functions instead of id
29404         ones.
29405         (create_function_info_for): Ditto.
29406         (create_variable_info_for): Ditto.
29407         (intra_create_variable_infos): Ditto.
29408         (merge_smts_into): Ditto.
29409         (find_what_p_points_to): Ditto.
29410         (init_base_vars): Ditto.
29411         (init_alias_vars): Ditto.
29412         (remove_preds_and_fake_succs): New function.
29413         (dump_sa_points_to_info): Dump new stats.
29414         (dump_solution_for_var): Use find.
29415         (set_used_smts): Fix formatting.
29416         (compute_points_to_sets): Updated for new functions.
29417         (ipa_pta_execute): Ditto.
29418
29419 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
29420             Richard Sandiford  <richard@codesourcery.com>
29421
29422         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
29423         parallels.
29424         * calls.c (expand_call): If the return value is a PARALLEL,
29425         extract its first member.
29426         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
29427         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
29428         use FUNCTION_EXTRA_EPILOGUE.
29429         (m68k_function_value): Return a PARALLEL if the return value
29430         is of a pointer type.
29431         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
29432         (FUNCTION_EXTRA_EPILOGUE): Remove.
29433         * config/m68k/m68k.md (D0_REG): New constant.
29434
29435 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
29436
29437         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
29438         output a NOP for empty epilogues.
29439
29440 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29441
29442         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
29443         before function.  Extend register save check to include all
29444         registers, not just integer ones.
29445
29446 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
29447
29448         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
29449         (m68k_use_return_insn): ...this.
29450         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
29451         * config/m68k/m68k.c (use_return_insn): Rename to...
29452         (m68k_use_return_insn): ...this.
29453         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
29454         of USE_RETURN_INSN.
29455
29456 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
29457
29458         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
29459         nearest even, fix denormal rounding overflow.
29460
29461 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29462
29463         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
29464         f%$smove and f%$move.
29465         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
29466         (extendsfdf2_cf): Use fdmove instead of f%&move.
29467         (truncdfsf2_cf): Use fsmove instead of f%$smove.
29468         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
29469
29470 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29471
29472         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
29473         GPR<-GPR moves.
29474
29475 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29476
29477         * real.h (real_format): Add a canonical_nan_lsbs_set field.
29478         (coldfire_single_format): Declare.
29479         (coldfire_double_format): Likewise.
29480         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
29481         of qnan_msb_set to determine the lower bits of a canonical
29482         NaN significand.
29483         (encode_ieee_double): Likewise.
29484         (encode_ieee_quad): Likewise.
29485         (ieee_single_format): Initialize canonical_nan_lsbs_set.
29486         (mips_single_format): Likewise.
29487         (ieee_double_format): Likewise.
29488         (mips_double_format): Likewise.
29489         (ieee_extended_motorola_format): Likewise.
29490         (ieee_extended_intel_96_format): Likewise.
29491         (ieee_extended_intel_128_format): Likewise.
29492         (ieee_extended_intel_96_round_53_format): Likewise.
29493         (ibm_extended_format): Likewise.
29494         (mips_extended_format): Likewise.
29495         (ieee_quad_format): Likewise.
29496         (mips_quad_format): Likewise.
29497         (vax_f_format): Likewise.
29498         (vax_d_format): Likewise.
29499         (vax_g_format): Likewise.
29500         (i370_single_format): Likewise.
29501         (i370_double_format): Likewise.
29502         (decimal_single_format): Likewise.
29503         (decimal_double_format): Likewise.
29504         (decimal_quad_format): Likewise.
29505         (c4x_single_format): Likewise.
29506         (c4x_extended_format): Likewise.
29507         (real_internal_format): Likewise.
29508         (coldfire_single_format): New real_format.
29509         (coldfire_double_format): Likewise.
29510         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
29511         canonical_nan_lsbs_set.
29512         (pdp11_d_format): Likewise.
29513         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
29514         if TARGET_COLDFIRE_CPU.
29515
29516 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29517
29518         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
29519         (output_call, m68k_legitimize_call_address): Declare.
29520         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
29521         parenthesees.  Add support for a 'W' constraint.
29522         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
29523         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
29524         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
29525         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
29526         variables.
29527         (override_options): Initialize them.  Do not set flag_no_function_cse
29528         for TARGET_ID_SHARED_LIBRARY.
29529         (m68k_output_pic_call): Delete.
29530         (m68k_legitimize_call_address): New function.
29531         (print_operand): Remove the %o prefix.  Handle the %p prefix.
29532         (output_call): New function.
29533         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
29534         target address from the GOT if symbolic jumps are not allowed.
29535         * config/m68k/m68k.md (call, general_operand): Do not set
29536         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
29537         Merge separate flag_pic and !flag_pic define_insns into...
29538         (*call, *call_value): ...these new patterns.  Match the address
29539         rather than the containing MEM and require it to be a call_operand.
29540         Use output_call to generate the asm template.
29541         * config/m68k/predicates.md (const_call_operand): New predicate.
29542         (call_operand): Likewise.
29543
29544 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
29545
29546         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
29547         (STACK_GROWS_DOWNWARD): Define to 1.
29548         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
29549         comments, emphasizing that these values are only defaults.
29550         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
29551         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
29552
29553 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29554
29555         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
29556
29557 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
29558             Richard Sandiford  <richard@codesourcery.com>
29559
29560         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
29561         (FP_REGNO_P): New macros.
29562         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
29563         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
29564         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
29565         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
29566
29567 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
29568
29569         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
29570         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
29571         to $tmake_file.
29572         * config/m68k/t-floatlib: New file, extracting common code from...
29573         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
29574         * config/m68k/t-uclinux: Here.
29575         * config/m68k/fpgnulib.c: Do not compile extendeed precision
29576         routines on ColdFire targets.
29577
29578 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
29579
29580         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
29581         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
29582         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
29583         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
29584         explicitly set MOTOROLA to 1.
29585         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
29586
29587 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29588             Nathan Sidwell  <nathan@codesourcery.com>
29589
29590         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
29591         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
29592         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
29593         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
29594         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
29595         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
29596         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
29597         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
29598         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
29599         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
29600         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
29601         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
29602         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
29603         (DBX_REGISTER_NUMBER): Delete.
29604         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
29605         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
29606         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
29607
29608 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29609
29610         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
29611         * config/flat.h: New file.
29612         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
29613         OBJECT_FORMAT_FLAT.
29614         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
29615         indirect references for -msep-data or -mid-shared-library.
29616         Do not use PC-relative code addresses either.
29617         * config/m68k/m68k.c (override_options): Restrict -fPIC error
29618         to -mpcrel.
29619         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
29620         for shared libraries and crt1.o for executables.  Use crti.o and
29621         crtbegin.o.
29622         (ENDFILE_SPEC): Use crtend.o and crtn.o.
29623         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
29624         Do not add -elf2flt or -shared-lib-id options here.
29625         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
29626         Pass -shared-lib-id if -mid-shared-library, taking the library
29627         identifier from -mshared-library-id if given, otherwise
29628         defaulting to 0.
29629         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
29630         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
29631         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
29632         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
29633         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
29634         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
29635         and crtend.o.
29636         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
29637         jump sequence for ISA A and ISA A+.
29638         (PICJUMP): Likewise.
29639
29640 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29641
29642         * config.gcc (m68k-*-uclinux*): Base the port on the common
29643         and m68k GNU/Linux files rather than on the generic ELF ones.
29644         * config/m68k/uclinux.h (TARGET_VERSION): Override.
29645         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
29646
29647 2007-01-18  Julian Brown  <julian@codesourcery.com>
29648             Richard Sandiford  <richard@codesourcery.com>
29649
29650         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
29651         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
29652         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
29653         before redefining.
29654         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
29655         80 unconditionally.
29656         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
29657
29658 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
29659
29660         * doc/install.texi: Document m68k-uclinuxoldabi.
29661         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
29662         * config/m68k/uclinux-oldabi.h: New file, copied from
29663         config/m68k/uclinux.h.
29664
29665 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
29666
29667         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
29668         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
29669         (m32r_compute_frame_size): Use unsigned for regno.
29670         (m32r_reload_lr): Use gen_frame_mem.
29671         (pop): New.
29672         (m32r_output_function_epilogue): Don't output the function epilogue
29673         textually here.
29674         (m32r_expand_epilogue): New.
29675         (direct_return): Return false if the function has the interrupt
29676         attribute.
29677         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
29678         * config/m32r/m32r.md (epilogue): New expander.
29679         (return_lr, return_rte): New insns.
29680         (return): Make it expander.
29681         (return_normal): New expander.
29682
29683 2007-01-18  Josh Conner  <jconner@apple.com>
29684
29685         PR target/30485
29686         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
29687         support for UNLE, UNLT, UNGE, and UNGT.
29688
29689 2007-01-18  Jan Hubicka  <jh@suse.cz>
29690
29691         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
29692         * tree-tailcall (add_virtual_phis): Likewise.
29693         (optimize_tail_call): Return TODOs.
29694         (execute_tail_calls): Return TODOs.
29695         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
29696         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
29697         changed.
29698         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
29699         Cleanup cfg using TODO.
29700         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
29701         * passes.c (execute_function_todo): When cleanup did something, remove
29702         unused locals.
29703         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
29704         (make_edges): Don't cleanup_cfg.
29705
29706 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
29707
29708         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
29709         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
29710         operate on the top of stack.
29711         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
29712         register handling of instructions that output to the second
29713         stack slot.
29714         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
29715         (move_for_stack_reg): Special-case check for dead destination
29716         stack slot for constant load of 1.0 inside UNSPEC_TAN.
29717
29718         * config/i386/i386.md (UNSPEC_TAN): New constant.
29719         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
29720         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
29721         to correctly model move of constant 1.0 to top stack slot.
29722         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
29723         (unnamed peephole2 pattern): Remove corresponding peephole2
29724         pattern that optimizes tan insn and loading of constant 1.0.
29725         (tanxf2): Use fptanxf4_i387.
29726         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
29727         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
29728         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
29729         disable patterns for SSE math.
29730         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
29731         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
29732
29733 2007-01-18  Dirk Mueller  <dmueller@suse.de>
29734             Richard Guenther <rguenther@suse.de>
29735
29736         PR diagnostic/8268
29737         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
29738         * common.opt (Warray-bounds): Add new warning option.
29739         * c-opts.c (c_common_handle_option): Define -Warray-bounds
29740         if -Wall is given.
29741         * Makefile.in: make tree-vrp.o depend on toplev.h
29742         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
29743         is enabled.
29744         (check_array_refs, check_array_bounds, check_array_ref): New.
29745
29746 2007-01-18  Jan Hubicka  <jh@suse.cz>
29747
29748         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
29749         (execute_ssa_ccp): Return flags conditionally.
29750         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
29751         changed.
29752         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
29753
29754 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
29755
29756         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
29757         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
29758
29759         * Makefile.c (GTFILES): Add cfglayout.h.
29760         * gengtype.c (open_base_files): Likewise.
29761         * cfglayout.c (cfg_layout_function_footer,
29762         cfg_layout_function_header) Reindent to make gengtype happy.
29763         * cfglayout.h (cfg_layout_function_footer,
29764         cfg_layout_function_header): Add GTY(()) marker.
29765
29766         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
29767
29768 2007-01-18  Ben Elliston  <bje@au.ibm.com>
29769
29770         * genautomata.c (write_automata): Include xstrerror output in the
29771         error message if writing the DFA description file fails.
29772
29773 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
29774
29775         * config/mips/mips-protos.h (mips_output_external): Make it
29776         return void.
29777         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
29778         * config/mips/mips.c (irix_output_external_libcall): Likewise.
29779         (extern_list): Likewise.
29780         (extern_head): Likewise.
29781         (TARGET_ASM_FILE_END): Likewise.
29782         (mips_file_end): Likewise.
29783         (mips_output_external): Rewritten.
29784
29785 2007-01-18  Ben Elliston  <bje@au.ibm.com>
29786
29787         * genpreds.c (write_insn_preds_c): Only write out the function
29788         body for regclass_for_constraint if we have register constraints.
29789
29790 2007-01-17  Tom Tromey  <tromey@redhat.com>
29791
29792         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
29793         * doc/install.texi (Testing): Use sourceware.org.
29794         (Binaries): Likewise.
29795         (Specific): Likewise.
29796         * doc/contrib.texi (Contributors): Use sourceware.org.
29797
29798 2007-01-17  Anatoly Sokolov <aesok@post.ru>
29799
29800         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
29801         (AVR_ENHANCED): Rename to ...
29802         (AVR_HAVE_MUL): ... new.
29803         (avr_enhanced_p): Rename to ...
29804         (avr_have_mul_p): ... new.
29805         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
29806         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
29807         * config/avr/avr.c (avr_enhanced_p): Rename to ...
29808         (avr_have_mul_p): ... new.
29809         (base_arch_s): Rename 'enhanced' to 'have_mul'.
29810         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
29811         'avr_enhanced_p' and 'enhanced'.
29812         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
29813         AVR_HAVE_MUL instead of AVR_ENHANCED.
29814         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
29815         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
29816         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
29817         instead of AVR_ENHANCED.
29818         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
29819         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
29820         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
29821
29822 2007-01-17  Ian Lance Taylor  <iant@google.com>
29823
29824         * vec.h (VEC_reserve_exact): Define.
29825         (vec_gc_p_reserve_exact): Declare.
29826         (vec_gc_o_reserve_exact): Declare.
29827         (vec_heap_p_reserve_exact): Declare.
29828         (vec_heap_o_reserve_exact): Declare.
29829         (VEC_OP (T,A,reserve_exact)): New static inline function, three
29830         versions.
29831         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
29832         negative parameter.
29833         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
29834         (VEC_OP (T,A,copy)) [all versions]: Likewise.
29835         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
29836         * vec.c (calculate_allocation): Add exact parameter.  Change all
29837         callers.
29838         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
29839         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
29840         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
29841         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
29842         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
29843         (vec_heap_p_reserve_exact): New function.
29844         (vec_heap_o_reserve_exact): New function.
29845
29846 2007-01-17  Jan Hubicka  <jh@suse.cz>
29847
29848         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
29849
29850 2007-01-17  Eric Christopher  <echristo@apple.com>
29851
29852         * config.gcc: Support core2 processor.
29853
29854 2007-01-16  Jan Hubicka  <jh@suse.cz>
29855
29856         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
29857         the names, just unlink the chain so we don't crash on dangling
29858         pointers
29859         to dead SSA names.
29860
29861 2007-01-16  Jan Hubicka  <jh@suse.cz>
29862
29863         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
29864         * tree-pass.h: Reorder to make IPA passes appear toegher.
29865         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
29866         Declare.
29867         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
29868         parameters, do not call early inliner.
29869         * ipa-inline.c: Update comments.  Include tree-flow.h
29870         (cgraph_decide_inlining): Do not compute inlining parameters.
29871         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
29872         be called with function context set up.
29873         (pass_ipa_inline): Remove unreachable functions before pass.
29874         (cgraph_early_inlining): Simplify assuming to be called from the
29875         PM as local pass.
29876         (pass_early_inline): New pass.
29877         (cgraph_gate_ipa_early_inlining): New gate.
29878         (pass_ipa_early_inline): Turn into simple wrapper.
29879         (compute_inline_parameters): New function.
29880         (gate_inline_passes): New gate.
29881         (pass_inline_parameters): New pass.
29882         (apply_inline): Move here from tree-optimize.c
29883         (pass_apply_inline): New pass.
29884         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
29885         transforming.
29886         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
29887         doing them by hand.
29888         (tree_function_versioning): Do not allocate dummy struct function.
29889         * tree-inline.h (optimize_inline_calls): Update prototype.
29890         * tree-optimize.c (execute_fixup_cfg): Export.
29891         (pass_fixup_cfg): Remove
29892         (tree_rest_of_compilation): Do not apply inlines.
29893         * tree-flow.h (execute_fixup_cfg): Declare.
29894         * Makefile.in (gt-passes.c): New.
29895         * passes.c: Include gt-passes.h
29896         (init_optimization_passes): New passes.
29897         (nnodes, order): New static vars.
29898         (do_per_function_toporder): New function.
29899         (execute_one_pass): Dump current pass here.
29900         (execute_ipa_pass_list): Don't dump current pass here.
29901
29902 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
29903
29904         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
29905         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
29906
29907 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
29908
29909         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
29910         (strong_alias): Define.
29911         (__gcc_qmul): Provide non-FMA for soft-float.
29912         (__gcc_qdiv): Same.
29913         (__gcc_qneg): New.
29914         (__gcc_qeq): New.
29915         (__gcc_qle): New.
29916         (__gcc_qge): New.
29917         (__gcc_qunord): New.
29918         (__gcc_stoq): New.
29919         (__gcc_dtoq): New.
29920         (__gcc_qtos): New.
29921         (__gcc_qtod): New.
29922         (__gcc_qtoi): New.
29923         (__gcc_qtou): New.
29924         (__gcc_itoq): New.
29925         (__gcc_utoq): New.
29926         (fmsub): New.
29927         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
29928         soft-float functions.
29929         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
29930         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
29931         about long double soft float.
29932
29933 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
29934             Tehila Meyzels  <tehila@il.ibm.com>
29935
29936         * tree-vectorizer.h (is_pattern_stmt_p): New.
29937         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
29938         formatting (tabs instead of spaces). Cleanup and clarify setting
29939         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
29940         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
29941         (vectorizable_type_demotion): Check that types are integral.
29942         (vectorizable_type_promotion): Likewise.
29943         (vectorizable_store): Fix typo.  Eliminate new-line at end of
29944         comments.
29945
29946 2007-01-16  Jan Hubicka  <jh@suse.cz>
29947
29948         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
29949         cgraph edges too.
29950
29951 2007-01-15  Eric Christopher  <echristo@apple.com>
29952
29953         * ifcvt.c: Include vec.h, vecprim.h.
29954         (check_cond_move_block): New argument regs.
29955         Reorganize. Add registers used to regs.
29956         (cond_move_process_if_block): Use regs set above as
29957         loop bounds.
29958
29959 2007-01-15  Eric Christopher  <echristo@apple.com>
29960
29961         * config/darwin.h: Update copyright.
29962         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
29963         (LINK_COMMAND_SPEC): Add -u.
29964         (LINK_SPEC): Fix umbrella for above.
29965
29966 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
29967
29968         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
29969         glibc CVS.
29970
29971 2007-01-15  Tom Tromey  <tromey@redhat.com>
29972
29973         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
29974         * doc/install.texi (Testing): Don't mention jacks.
29975         (Configuration): Document --enable-java-maintainer-mode.  Move
29976         --with-java-home to libgcj-specific section.  Document
29977         --with-ecj-jar.
29978         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
29979
29980 2007-01-15  Jan Hubicka  <jh@suse.cz>
29981
29982         * tree-ssa-dce.c (DCE_TODOs): New.
29983         (propagate_necessity): Return if something changed.
29984         (eliminate_unnecessary_stmts): Likewise.
29985         (perform_tree_ssa_dce): Return TODO flags when needed.
29986         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
29987
29988 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
29989
29990         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
29991         (fyl2x_extend<mode>xf3_i387): New insn pattern.
29992         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
29993         patterns using X87MODEF12 mode macro.  Extend operand 1
29994         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
29995         (log10<mode>2): Ditto.
29996         (log2<mode>2): Ditto.
29997         (log1p<mode>2): Ditto.
29998         (logb<mode>2): Ditto.
29999         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
30000         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
30001         (*fxtractxf3_i387): Rename from *fxtractxf3.
30002         (fxtract_extend<mode>xf3_i387): New insn pattern.
30003         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
30004         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
30005         and gen_fyl2xxf3_i387().
30006
30007 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
30008
30009         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
30010         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
30011         get_loop_exit_edges.  Changed return type to bool.
30012         * cfgloop.h (fix_loop_placement): Declaration removed.
30013
30014 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
30015
30016         * param.h (MIN_VECT_LOOP_BOUND): New.
30017         * params.def (MIN_VECT_LOOP_BOUND): New.
30018         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
30019         argument - minimum threshold for number of iterations.
30020         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
30021         argument to declaration.
30022         * tree-vect-analyze.c (vect_analyze_operations): Check value of
30023         MIN_VECT_LOOP_BOUND.
30024         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
30025         slpeel_tree_peel_loop_to_edge with additional argument.
30026         (vect_do_peeling_for_alignment): Likewise.
30027         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
30028
30029 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
30030
30031         PR target/30413
30032         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
30033         operands of size 1.
30034
30035 2007-01-14  Jan Hubicka  <jh@suse.cz>
30036
30037         * tree-dfa.c (remove_referenced_var): New function.
30038         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
30039         prune referenced vars list too.
30040         * tree-flow.h (remove_referenced_var): Declare.
30041
30042 2007-01-14  Jan Hubicka  <jh@suse.cz>
30043
30044         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
30045         separately.
30046         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
30047         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
30048         * except.h (verify_eh_throw_table_statements): Kill prototype.
30049         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
30050         into call exrepssions.
30051         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
30052         eh trhow verifier.
30053         * tree-cfg.c: Include pointer-set.h.
30054         (verify_node_sharing): Work on pointer set.
30055         (verify_eh_throw_stmt_node): New.
30056         (verify_stmts): Use pointers sets, verify throw_stmt.
30057
30058 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
30059
30060         * ipa-reference.c (analyze_function): Consider also addresses taken
30061         in phi nodes.
30062
30063 2007-01-12  Roger Sayle  <roger@eyesopen.com>
30064
30065         * c-typeck.c (null_pointer_constant_p): Replace use of
30066         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
30067         (build_c_cast): Likewise.
30068
30069 2007-01-12  Roger Sayle  <roger@eyesopen.com>
30070
30071         * tree.h (force_fit_type_double): Remove unused final argument.
30072         * c-common.c (constant_expression_warning): Replace use of
30073         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
30074         (convert_and_check): Likewise.
30075         (shorten_compare): Update call to force_fit_type_double.
30076         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
30077         * convert.c (convert_to_pointer): Update call to
30078         force_fit_type_double.
30079         * fold-const.c (force_fit_type_double): Remove overflowed_const
30080         argument.
30081         (int_const_binop, fold_convert_const_int_from_int,
30082         fold_convert_const_int_from_real, fold_div_compare,
30083         fold_sign_changed_comparison, fold_unary, fold_negate_const,
30084         fold_abs_const, fold_not_const): Remove the final argument from
30085         calls to force_fit_type_double.
30086
30087 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30088
30089         * configure.ac: Set insn to "nop" for spu-*-* also.
30090         * configure: Regenerate.
30091
30092 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
30093
30094         * builtins.def : Add BUILT_IN_FREE.
30095
30096 2007-01-12  Jan Hubicka  <jh@suse.cz>
30097
30098         PR tree-optimization/30443
30099         * tree-inline.c (tree_function_versioning): Do not optimize when
30100         cloning for inlining.
30101
30102 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
30103
30104         * doc/loop.texi: Document recording of loop exits.
30105         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
30106         (update_single_exits_after_duplication,
30107         update_single_exit_for_duplicated_loop,
30108         update_single_exit_for_duplicated_loops): Removed.
30109         (duplicate_loop_to_header_edge): Do not call
30110         update_single_exits_after_duplication and
30111         update_single_exit_for_duplicated_loops.
30112         (loop_version): Do not update single_exit information.
30113         (fix_loop_structure): Use record_loop_exits instead of
30114         mark_single_exit_loops.
30115         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
30116         the lists of loop exits.
30117         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
30118         split_edge, merge_blocks): Update the lists of loop exits.
30119         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
30120         loop_optimizer_init.
30121         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
30122         of mark_single_exit_loops.
30123         (loop_optimizer_finalize): Call release_recorded_exits.
30124         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
30125         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
30126         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
30127         update single exit information.
30128         * lambda-code.c (perfect_nestify): Ditto.
30129         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
30130         (mark_single_exit_loops): Removed.
30131         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
30132         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
30133         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
30134         functions.
30135         (get_loop_exit_edges, single_exit): Use recorded exit lists.
30136         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
30137         (verify_loop_structure): Verify consistency of the exit lists.
30138         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
30139         (set_single_exit): Removed.
30140         * cfgloop.h (struct loop_exit): New function.
30141         (struct loop): single_exit_ field replaced by exits field.
30142         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
30143         LOOPS_HAVE_RECORDED_EXITS.
30144         (struct loops): Added exits hash.
30145         (mark_single_exit_loops, set_single_exit): Declaration removed.
30146         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
30147
30148 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30149
30150         * doc/invoke.texi: Avoid use of @headitem.
30151
30152 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30153
30154         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
30155
30156 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30157
30158         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
30159         list of targets.
30160
30161 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
30162             Richard Sandiford  <richard@codesourcery.com>
30163
30164         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
30165         * config/m68k/m68k.opt: Resort options.
30166         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
30167
30168 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
30169             Richard Sandiford  <richard@codesourcery.com>
30170
30171         * doc/invoke.texi: Document the macros that are defined by
30172         m68k's -mtune and -mhard-float options.
30173         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
30174         (m68k_cpp_cpu_family): Likewise.
30175         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
30176         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
30177         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
30178         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
30179         (m68k_cpp_cpu_family): Likewise.
30180
30181 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30182
30183         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
30184         macros besides mc68000 as tuning macros.  Use a switch statement
30185         to set them and mcpu32.
30186
30187 2007-01-12  Julian Brown  <julian@codesourcery.com>
30188
30189         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
30190         (TARGET_68040_ONLY): Rename to...
30191         (TARGET_68040): ...this.
30192         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
30193         * config/m68k/m68k.md: Likewise.
30194
30195 2007-01-12  Julian Brown  <julian@codesourcery.com>
30196             Nathan Sidwell  <nathan@codesourcery.com>
30197             Richard Sandiford  <richard@codesourcery.com>
30198
30199         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
30200         the -mcpu= argument associated with the --with-cpu setting.
30201         Define M68K_DEFAULT_TUNE to the default -mtune= option,
30202         if different from the one implied by the -mcpu setting.
30203         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
30204         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
30205         * doc/invoke.texi: Mention ColdFire in the introduction to the
30206         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
30207         -mno-div and -mhard-float options.  Make -m68881 a synonym for
30208         -mhard-float.  Document the previously-undocumented -m5206e,
30209         -m528x, -m5307 and -m5407 options.  Tweak the existing option
30210         documentation for consistency.
30211         * doc/install.texi: Mention new --with-cpu arguments.
30212         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
30213         default CPU if neither -mcpu nor -march are specified.
30214         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
30215         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
30216         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
30217         using m68k_tune to decide between families that implement the
30218         same ISA.  Use m68k_tune to set __mcfv4e__.
30219         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
30220         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
30221         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
30222         (FL_ISA_C, FL_ISA_MMU): New macros.
30223         (MASK_COLDFIRE): Delete.
30224         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
30225         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
30226         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
30227         (TARGET_HARD_FLOAT): Do not define here.
30228         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
30229         (TUNE_68000): New macro.
30230         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
30231         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
30232         (TUNE_CFV2): Redefine in terms of m68k_tune.
30233         (uarch_type, target_device, fpu_type): New enums.
30234         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
30235         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
30236         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
30237         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
30238         (FL_FOR_isa_c): New macros.
30239         (m68k_isa): New enum.
30240         (m68k_target_selection): New structure.
30241         (all_devices, all_isas, all_microarchs): New tables.
30242         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
30243         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
30244         (MASK_ALL_CPU_BITS): Delete.
30245         (m68k_find_selection): New function.
30246         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
30247         Map the legacy target options to a combination of the new ones.
30248         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
30249         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
30250         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
30251         settings.
30252         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
30253         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
30254         properties.
30255         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
30256         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
30257         * config/m68k/m68k-devices.def: New file.
30258
30259 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30260             Nathan Sidwell  <nathan@codesourcery.com>
30261
30262         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
30263         (SUBTARGET_EXTRA_SPECS): New macros.
30264         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
30265         use %(asm_cpu_spec) instead.
30266         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
30267         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
30268         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
30269         (EXTRA_SPECS): Rename to...
30270         (SUBTARGET_EXTRA_SPECS): ...this.
30271
30272 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
30273             Richard Sandiford  <richard@codesourcery.com>
30274             Julian Brown  <julian@codesourcery.com>
30275
30276         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30277         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
30278         to the configuration's default CPU.
30279         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
30280         Remove default masks.
30281         (m680[012]0-*-*): Set the default with_cpu to the first part of
30282         the target name.
30283         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
30284         (m68k*-*-linux): Extend the --with-cpu handling to...
30285         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
30286         and m68010.  Don't set target_cpu_default2.
30287         * doc/install.texi: Document --with-cpu for m68k.
30288         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
30289         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
30290         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
30291         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
30292         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
30293         (ASM_SPEC): Remove use of %(asm_cpu_default).
30294         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
30295         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
30296         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
30297         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
30298         __HAVE_FPU__ if TARGET_HARD_FLOAT.
30299         (TARGET_DEFAULT): Delete.
30300         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
30301         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
30302         (CPP_CPU_SPEC): Delete.
30303         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
30304         the appropriate string.
30305         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
30306         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
30307         (ASM_SPEC): Don't use %(asm_default_spec).
30308         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
30309         TARGET_DEFAULT and add MASK_68881.
30310         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
30311
30312 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30313
30314         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
30315         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
30316         MASK_68010 alongside MASK_68020.
30317         * doc/invoke.texi: Document -m68010.
30318         * config/m68k/m68k.opt (m68010): New.
30319         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
30320         if TUNE_68010.
30321         (TUNE_68010): New macro.
30322         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
30323         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
30324         (M68K_CPU_m68332): Add MASK_68010.
30325         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
30326         fallback definition.
30327         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
30328         defines.
30329         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
30330         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
30331         to all entries that use MASK_68020.
30332         (output_move_simode_const, output_move_himode, output_move_qimode)
30333         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
30334         instead of TARGET_68020 to select clr behavior.  Remove comment
30335         about there being no TARGET_68010.
30336         * config/m68k/m68k.md: Likewise throughout.
30337
30338 2007-01-12  Julian Brown  <julian@codesourcery.com>
30339
30340         * config/m68k/m68k.h (TARGET_ISAB): New macro.
30341         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
30342         * config/m68k/m68k.md: Likewise.
30343
30344 2007-01-12  Julian Brown  <julian@codesourcery.com>
30345
30346         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
30347         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
30348
30349 2007-01-12  Julian Brown  <julian@codesourcery.com>
30350
30351         * config/m68k/m68k.h (TUNE_68040_60): New macro.
30352         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
30353         * config/m68k/m68k.md: Likewise.
30354
30355 2007-01-12  Julian Brown  <julian@codesourcery.com>
30356             Richard Sandiford  <richard@codesourcery.com>
30357
30358         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
30359         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
30360         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
30361         TARGET_CPU32.
30362         (TARGET_CPU32): Rename to...
30363         (TUNE_CPU32): ...this.
30364         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
30365         (TUNE_CFV2): New macros.
30366         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
30367         remove conditions that are implied by TARGET_68020.
30368         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
30369         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
30370         (m68k_output_function_epilogue): Likewise.
30371         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
30372         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
30373         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
30374         non-68000 timings.  Refactor multiplication and division costs.
30375         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
30376         TUNE_CPU32 instead of TARGET_CPU32.
30377         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
30378         and TUNE_68060 instead of TARGET_68060.
30379         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
30380         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
30381         TARGET_CPU32.
30382         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
30383         && !TARGET_COLDFIRE" to choose between moveq and clr.
30384         Likewise in the unnamed movsf pattern.
30385         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
30386         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
30387         ashiftrt pattern.
30388
30389 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
30390
30391         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
30392         of tabbing before backslashes.
30393
30394 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30395
30396         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
30397         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
30398         (ASM_OUTPUT_INTERNAL_LABEL): Define.
30399
30400 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
30401
30402         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
30403         find_interesting_uses_cond.
30404         (find_interesting_uses_cond): Use extract_cond_operands.
30405         (rewrite_use_compare): Use extract_cond_operands and
30406         force_gimple_operand_bsi.  Do not call update_stmt.
30407         (determine_use_iv_cost_condition): Use extract_cond_operands.
30408         Return cheaper of using original bound and changing the exit bound.
30409
30410 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
30411
30412         PR tree-optimization/29516
30413         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
30414         most_expensive_mult_to_index, addr_to_parts,
30415         create_mem_ref, maybe_fold_tmr): Make the type of
30416         fields of TARGET_MEM_REF sizetype.
30417         (move_fixed_address_to_symbol, move_pointer_to_base):
30418         New functions.
30419         * tree.def (TARGET_MEM_REF): Add comment on types of
30420         the operands.
30421
30422 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
30423
30424         * c-common.c (vector_types_convertible_p): Treat opaque types as
30425         always convertible if they have the same size, but not otherwise.
30426
30427 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
30428
30429         * ifcvt.c (struct noce_if_info): Add comments to the fields.
30430         Remove the b_unconditional field.
30431         (noce_try_sign_mask): Do not look at b_unconditional.
30432         (noce_process_if_block): Do not use merge_if_blocks.  Update
30433         the CFG here.  Do not set b_unconditional.
30434         (cond_move_process_if_block): Likewise.
30435         (find_cond_trap): Likewise.
30436         (check_cond_move_block): Require simple jump insns at the end
30437         of the basic block.
30438
30439 2007-01-11  Jan Hubicka  <jh@suse.cz>
30440
30441         PR tree-optimization/1046
30442         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
30443         when alias info is not ready.
30444         (pass_tail_recursion): Do not require aliasing.
30445         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
30446         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
30447         * tree-ssa-copy.c (pass_copy_prop): Likewise.
30448         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
30449         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
30450         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
30451         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
30452         before inlining.
30453         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
30454         When aliasing is not build, mark statement as volatile.
30455
30456 2007-01-11  Tom Tromey  <tromey@redhat.com>
30457
30458         PR preprocessor/15185, PR preprocessor/20989:
30459         * doc/cppopts.texi <-MT>: Update description of algorithm for
30460         computing default target.
30461         <-M, -MD>: Reword "basename" text.
30462
30463 2007-01-11  Roger Sayle  <roger@eyesopen.com>
30464
30465         * builtins.c (expand_builtin_pow, expand_builtin_powi,
30466         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
30467         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
30468         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
30469         fold_builtin_bswap, real_constp, fold_builtin_pow,
30470         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
30471         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
30472         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
30473         * convert.c (convert_to_pointer): Likewise.
30474         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
30475         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
30476         const_binop, fold_convert_const_int_from_int,
30477         fold_convert_const_int_from_real,
30478         fold_convert_const_real_from_real, sign_bit_p,
30479         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
30480         fold_sign_changed_comparison, fold_unary, fold_comparison,
30481         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
30482         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
30483         * print-tree.c (print_node_brief, print_node): Likewise.
30484         * stor-layout.c (place_field, layout_type): Likewise.
30485         * tree-chrec.c (keep_cast): Likewise.
30486         * tree.c (build_vector, build_real, build_real_from_int_cst,
30487         build_complex): Likewise.
30488
30489 2007-01-11  Roger Sayle  <roger@eyesopen.com>
30490
30491         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
30492         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
30493
30494 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
30495
30496         * configure.ac (strict1_warn): Rename to strict_warn.
30497         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
30498         cc_set_by_configure, quoted_cc_set_by_configure,
30499         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
30500         all_boot_languages, all_stagestuff): Remove.
30501         (target_list): Remove bootstrap targets.
30502         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
30503         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
30504         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
30505         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
30506         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
30507         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
30508         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
30509         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
30510         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
30511         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
30512         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
30513         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
30514         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
30515         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
30516         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
30517         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
30518         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
30519         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
30520         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
30521         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
30522         (mostlyclean): Adjust.
30523         (clean, distclean): Don't mention bootstrap stuff.
30524         * configure: Regenerate.
30525         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
30526         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
30527         treelang/config-lang.in (stagestuff): Remove.
30528         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
30529         stageprofile, stagefeedback, stagestuff): Remove mention.
30530
30531 2007-01-11  Nick Clifton  <nickc@redhat.com>
30532
30533         * config/mcore/predicates.md (mcore_general_movesrc_operand):
30534         Accept CONSTs.
30535         (mcore_general_movdst_operand): Do not accept CONST_INTs.
30536         (mcore_arith_K_S_operand): Run the test for the S constraint not
30537         the test for the M constraint.
30538         (mcore_addsub_operand): Do not accept integer values that are
30539         larger than 32 bits.
30540         * config/mcore/mcore.md: Remove unused constraints from split.
30541         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
30542         (addsi3): Likewise.
30543         (allocate_stack): Likewise.
30544         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
30545         operands to 32 bits.
30546         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
30547         INTVAL.
30548         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
30549         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
30550         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
30551         mcore_output_bclri, mcore_output_andn, output_inline_const,
30552         mcore_output_move, mcore_output_movedouble): Likewise.
30553         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
30554         (output_inline_const): Likewise.
30555         (output_inline_const): Fix format strings used in sprintf
30556         statements.
30557         * config/mcore/mcore-protos.h: Update prototypes for changed
30558         functions in mcore.c.
30559         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
30560         HOST_WIDE_INT and not int.
30561         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
30562         CONST_OK_FOR_N): Likewise.
30563         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
30564         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
30565         an INTVAL.
30566
30567 2007-01-10  Jan Hubicka  <jh@suse.cz>
30568
30569         * tree-vrp.c (remove_range_assertions): Release defs.
30570         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
30571         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
30572
30573 2007-01-10  Paul Brook  <paul@codesourcery.com>
30574
30575         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
30576         * config/arm/arm.md (mulsi3subsi): New insn.
30577
30578 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
30579
30580         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
30581         (tree_transform_and_unroll_loop): New.
30582         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
30583         Declare.
30584
30585 2007-01-10  Robert Kennedy <jimbob@google.com>
30586
30587         * fold-const.c (fold_comparison): Fold comparisons like (x *
30588         1000 < 0) to (x < 0).
30589
30590 2007-01-10  Ian Lance Taylor  <iant@google.com>
30591
30592         * tree-pretty-print.c (dump_generic_node): Print parentheses when
30593         operands have the same priority.
30594
30595 2007-01-10  Tom Tromey  <tromey@redhat.com>
30596
30597         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
30598         (fold_binary): Likewise.
30599         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
30600         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
30601         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
30602         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
30603         * langhooks.h (struct lang_hooks): Removed field
30604         'can_use_bit_fields_p'.
30605
30606 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
30607
30608         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
30609
30610 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
30611
30612         * function.c (get_last_funcdef_no): New function.
30613         * function.h (get_last_funcdef_no): Declare.
30614         * tree-inline.c (initialize_cfun): Add initialization.
30615         (tree_function_versioning): Cleanup.
30616
30617 2007-01-10  Jan Hubicka  <jh@suse.cz>
30618
30619         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
30620         PHIs.
30621
30622 2007-01-10  Sa Liu  <saliu@de.ibm.com>
30623             Ben Elliston  <bje@au.ibm.com>
30624
30625         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
30626         for SAVE_NONLOCAL and Pmode for any other save level.
30627         * spu-protos.h (spu_restore_stack_block): Declare.
30628         * spu.md (save_stack_block): Remove.
30629         (restore_stack_block): Call spu_restore_stack_block.
30630         * spu.c (spu_restore_stack_block): New function.
30631         (spu_expand_epilogue): Remove old comment.
30632
30633 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
30634
30635         PR tree-optimization/30322
30636         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
30637         (cand_value_at): Return the value as aff_tree.
30638         (may_eliminate_iv): Convert the bound from aff_tree to tree.
30639         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
30640         aff_combination_mult): New functions.
30641         (aff_combination_add): Use aff_combination_add_cst.
30642         (aff_combination_convert): Allow conversions to a wider type.
30643         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
30644         * tree-affine.h (aff_combination_mult): Declare.
30645
30646 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
30647
30648         * doc/tm.texi: Update documentation to reflect reality of exec
30649         and start file search behaviours. Update copyright year.
30650         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
30651         header file directories.
30652
30653 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
30654
30655         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
30656         (*cosxf2): Rename to cosxf2_i387.
30657         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
30658         using X87MODEF12 mode macro. Rename patterns to
30659         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
30660         for SSE math.
30661         (*cosdf2, *cossf2): Ditto.
30662         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
30663         to match extended input operands.
30664         (sincos<mode>3): New expander.
30665         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
30666         insn patterns and corresponding splitters.
30667
30668 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
30669
30670         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
30671         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
30672
30673 2007-01-09  Nicolas Pitre  <nico@cam.org>
30674
30675         PR target/30173
30676         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
30677
30678 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
30679
30680         * target.h (struct gcc_target): New field library_rtti_comdat.
30681         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
30682         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
30683         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
30684         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
30685
30686 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
30687
30688         * doc/invoke.texi (Optimize Options): Correct description of -O0.
30689
30690 2007-01-08  Richard Guenther  <rguenther@suse.de>
30691
30692         * tree.h (force_fit_type_double): Export.
30693         (force_fit_type): Remove.
30694         * fold-const.c (force_fit_type_double): New function.
30695         (force_fit_type): Remove.
30696         (int_const_binop): Use it.
30697         (fold_convert_const_int_from_int): Likewise.
30698         (fold_convert_const_int_from_real): Likewise.
30699         (fold_div_compare): Likewise.
30700         (fold_sign_changed_comparison): Likewise.
30701         (fold_unary): Likewise.
30702         (fold_negate_const): Likewise.
30703         (fold_abs_const): Likewise.
30704         (fold_not_const): Likewise.
30705         * c-common.c (shorten_compare): Use force_fit_type_double.
30706         * convert.c (convert_to_pointer): Likewise.
30707
30708 2007-01-08  Richard Guenther  <rguenther@suse.de>
30709
30710         * tree.h (build_int_cst_wide_type): Export.
30711         * tree.c (build_int_cst_wide_type): New function.
30712         (build_int_cst_wide): Fix comment.
30713         * builtins.c (fold_builtin_object_size): Use build_int_cst
30714         to build -1 or 0 of the correct type.  Use fit_double_type
30715         to check for overflow.
30716         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
30717         to build the mask.
30718         (decode_field_reference): Likewise.
30719         (all_ones_mask_p): Likewise.
30720         (native_interpret_int): Use build_int_cst_wide_type.
30721         (fold_binary): Use build_int_cst_type to build an all-ones
30722         value.
30723         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
30724
30725 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
30726
30727         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
30728
30729 2007-01-09  Ben Elliston  <bje@au.ibm.com>
30730
30731         * genautomata.c (STATS_OPTION): New option.
30732         (stats_flag): New flag.
30733         (gen_automata_option): Handle it.
30734         (initiate_automaton_gen): Ditto.
30735         (write_automata): Output statistics only if stats_flag is
30736         set. Likewise, output time statistics only if time_flag is set.
30737         * doc/md.texi (Processor pipeline description): Document new flag.
30738
30739 2007-01-08  Richard Guenther  <rguenther@suse.de>
30740
30741         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
30742         * tree.c (build_int_cst_type): Likewise.
30743         (size_in_bytes): Don't call force_fit_type on the result.
30744         (int_fits_type_p): Use fit_double_type.
30745         * fold-const.c (fit_double_type): New function.
30746         (force_fit_type): Use it.
30747         * tree.h (fit_double_type): Export.
30748
30749 2007-01-08  Jan Hubicka  <jh@suse.cz>
30750
30751         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
30752         * ipa.c (function_and_variable_visibility): Fix return type.
30753
30754 2007-01-08  Richard Guenther  <rguenther@suse.de>
30755
30756         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
30757         of offset to build the index.
30758         * tree-pretty-print.c (dump_generic_node): Don't build negated
30759         const just for printing.
30760         * c-pretty-print.c (pp_c_integer_constant): Likewise.
30761         * builtins.c (fold_builtin_int_roundingfn): Check if result
30762         fits the type by using force_fit_type and comparing the result.
30763         * predict.c (predict_loops): Use compare_tree_int for comparison.
30764         * tree.c (build_int_cst): Fall back to integer_type_node for
30765         NULL_TREE type.
30766         (build_int_cst_wide): Assert type is non-null.
30767
30768 2007-01-08  Roberto Costa  <roberto.costa@st.com>
30769
30770         * tree-vrp.c (extract_range_from_cond_expr): New.
30771         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
30772         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
30773         as expressions.
30774         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
30775         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
30776         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
30777         used as expressions.
30778         * tree-object-size.c (cond_expr_object_size): New.
30779         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
30780
30781 2007-01-08  Jan Hubicka  <jh@suse.cz>
30782
30783         * tree-ssa-forwprop.c (forward_propagate_into_cond,
30784         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
30785         statement.
30786
30787 2007-01-08  Richard Guenther  <rguenther@suse.de>
30788
30789         PR tree-optimization/23603
30790         * tree-vrp.c (set_value_range_to_truthvalue): New function.
30791         (extract_range_from_binary): Fall back to truthvalue instead of
30792         varying for TRUTH_*_EXPR.
30793         (extract_range_from_comparison): Fall back to truthvalue instead of
30794         varying.
30795         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
30796         if all visited PHI values were constant.
30797
30798 2007-01-08  Jan Hubicka  <jh@suse.cz>
30799
30800         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
30801         (cgraph_analyze_function): break out from ...
30802         (cgraph_finalize_compilation_unit): ... here.
30803         (cgraph_expand_function): Remove forgoten commented out line.
30804         (cgraph_optimize): Analyze functions.
30805
30806 2007-01-08  Jan Hubicka  <jh@suse.cz>
30807
30808         * tree-pas.h (TODO_remove_function): New flag.
30809         (TODO_update*): Renumber.
30810         (pass_ipa_increase_alignment,
30811         pass_ipa_function_and_variable_visibility): New passes.
30812         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
30813         (cgraph_function_and_variable_visibility): Move to ipa.c
30814         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
30815         cgraph_increase_alignment.
30816         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
30817         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
30818         calling tree-inline.
30819         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
30820         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
30821         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
30822         (gate_increase_alignment): New function.
30823         (pass_ipa_increase_alignment): New pass.
30824         * ipa.c: Inline tree-pass.h and timevar.h
30825         (function_and_variable_visibility): Move here from cgraphunit.c
30826         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
30827         * passes.c (init_optimization_passes): Add the two new passes.
30828         (execute_todo): Handle cgraph_remove_functions.
30829
30830 2007-01-08  Nick Clifton  <nickc@redhat.com>
30831
30832         * config/frv/predicates.md (reg_or_0_operand): Accept
30833         CONST_DOUBLEs.
30834
30835 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
30836
30837         * config/bfin/rtems.h, config/bfin/t-rtems: New.
30838         * config.gcc: Add bfin*-rtems*.
30839
30840 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
30841
30842         * c.opt: Add -flax-vector-conversions.
30843         * c-typeck.c (convert_for_assignment): Pass flag to
30844         vector_types_convertible_p to allow emission of note.
30845         (digest_init): Likewise.
30846         * c-opts.c: Handle -flax-vector-conversions.
30847         * c-common.c (flag_lax_vector_conversions): New.
30848         (vector_types_convertible_p): Unless -flax-vector conversions
30849         has been passed, disallow conversions between vectors with
30850         differing numbers of subparts and/or element types.  If such
30851         a conversion is disallowed, possibly emit a note on the first
30852         occasion only to inform the user of -flax-vector-conversions.
30853         The new last argument specifies this.
30854         * c-common.h (flag_lax_vector_conversions): New.
30855         (vector_types_convertible_p): Add extra argument.
30856         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
30857         char_type_node for V*QI type vectors.
30858         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
30859         Update to satisfy new typechecking rules.
30860         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
30861         C and C++ variants.
30862         * doc/invoke.texi (C Dialect Options): Document
30863         -flax-vector-conversions.
30864
30865 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
30866
30867         PR tree-optimization/29877
30868         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
30869         a register variable on the RHS to not be replaceable.
30870
30871 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
30872         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
30873         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
30874         const_simm15, const_pow2, const_npow2): Added.
30875         * config/score/misc.md (insv, extv, extzv, movmemsi,
30876         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
30877         * config/score/score.c (score_address_cost, score_select_cc_mode):
30878         Added.
30879         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
30880         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
30881         Update score_print_operand.
30882         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
30883         Adjust register allocate order and update some macro define.
30884         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
30885         mdx_block_move_straight, mdx_block_move_loop_head,
30886         mdx_block_move_loop_body, mdx_block_move_loop_foot,
30887         mdx_block_move_loop, mdx_block_move): Added.
30888         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
30889         mdp_limm): Updated and fix some bug and typo.
30890         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
30891         (movsf, movdf, doloop_end): Added.
30892
30893 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
30894
30895         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
30896         config/arm/thumb2.md: Fix comment typos.
30897         * doc/extend.texi: Fix a typo.
30898
30899 2007-01-07  Eric Christopher  <echristo@apple.com>
30900
30901         * configure.ac: Check for __stack_chk_fail for darwin.
30902         * configure: Regenerate.
30903
30904 2007-01-07  Richard Guenther  <rguenther@suse.de>
30905
30906         * tree-vrp.c (extract_range_from_assert): CSE calls to
30907         compare_values where possible.
30908         (extract_range_from_unary_expr): Likewise.
30909
30910 2007-01-07  Anatoly Sokolov <aesok@post.ru>
30911
30912         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
30913         * config/avr/avr.c (call_insn_operand): Delete function.
30914         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
30915         instead of register number. Use predicates.
30916         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
30917         call_insn_operand): Add.
30918
30919 2007-01-06  Jan Hubicka  <jh@suse.cz>
30920
30921         * tree-pass.h (pass_build_cgraph_edges): Declare.
30922         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
30923         (visited_nodes): Remove.
30924         (cgraph_create_edges): Move to cgraphbuild.c; rename to
30925         build_cgrpah_edges; make visited_nodes local.
30926         (cgraph_process_new_functions): DO not call initialize_inline_failed.
30927         (record_references_in_initializer): Move to cgraphbuild.c
30928         (initialize_inline_failed, rebuild_cgraph_edges,
30929         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
30930         (verify_cgraph_node): Make visited_nodes local.
30931         (cgraph_analyze_function): Do not call cgraph_create_edges and
30932         initialize_inline_failed.
30933         (cgraph_expand_function): Do not call cgraph_lower_function;
30934         assert that function is already lowered.
30935         * Makefile.in (cgraphbuild.o): New.
30936         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
30937         at the end of lowering passes.
30938
30939 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
30940
30941         * ifcvt.c (cond_move_convert_if_block): New function, code
30942         factored out from...
30943         (cond_move_process_if_block): ...here.  Call the new function
30944         on the THEN and ELSE blocks.
30945         (merge_if_block): Do not copy global_live_at_end, merge_blocks
30946         already takes care of this.
30947
30948 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30949
30950         PR c/19978
30951         * tree.h (TREE_OVERFLOW_P): New.
30952         * c-typeck.c (parser_build_unary_op): Warn only if result
30953         overflowed and operands did not.
30954         (parser_build_binary_op): Likewise.
30955         (convert_for_assignment): Remove redundant overflow_warning.
30956         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
30957
30958 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30959
30960         * c-typeck.c (store_init_value): Split over two lines to follow
30961         the GNU coding style.
30962
30963 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
30964
30965         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
30966         __GXX_EXPERIMENTAL_CXX0X__.
30967         * doc/cpp.texi: Same.
30968
30969 2007-01-05  Richard Guenther  <rguenther@suse.de>
30970
30971         PR middle-end/27826
30972         * tree.c (get_narrower): Do not construct COMPONENT_REFs
30973         with mismatched types.  Instead explicitly build a
30974         conversion NOP_EXPR.
30975
30976 2007-01-05  Ian Lance Taylor  <iant@google.com>
30977
30978         * c-common.c (decl_with_nonnull_addr_p): New function.
30979         (c_common_truthvalue_conversion): Call it.
30980         * c-typeck.c (build_binary_op): Likewise.
30981         * c-common.h (decl_with_nonnull_addr_p): Declare.
30982
30983 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
30984
30985         PR c/30360
30986         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
30987         denom against 0.0.
30988
30989 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
30990
30991         * doc/install.texi (Final install): Document the fact that
30992         the GNAT runtime should not be stripped.
30993
30994 2007-01-04  Jan Hubicka  <jh@suse.cz>
30995
30996         * tree-inline.c (fold_marked_statements): Update operand caches
30997         and EH after folding
30998
30999 2007-01-04  Ian Lance Taylor  <iant@google.com>
31000
31001         * c-common.c (check_function_nonnull): Whitespace fix.
31002
31003 2007-01-04  Jan Hubicka  <jh@suse.cz>
31004
31005         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
31006         comitted older version of patch.
31007         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
31008         function, celanup cfg and collect garbage.
31009
31010 2007-01-04  Mike Stump  <mrs@apple.com>
31011
31012         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
31013         (clean): Likewise.
31014
31015 2007-01-04  Eric Christopher  <echristo@apple.com>
31016
31017         * libgcc2.c (__bswapsi2): Use SItype.
31018         (__bswapdi2): Use DItype.
31019         * libgcc2.h: Update for above.
31020
31021 2007-01-04  Paul Brook  <paul@codesourcery.com>
31022
31023         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
31024         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
31025         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
31026         umulsidi3, umulsidi3adddi, smulsi3_highpart,
31027         umulsi3_highpart): Make conditional on !arm_arch6.
31028         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
31029         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
31030         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
31031         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
31032         umulsi3_highpart_v6): New insns.
31033
31034 2007-01-04  Roger Sayle  <roger@eyesopen.com>
31035
31036         * fold-const.c (fold_convert): When casting an expression to void,
31037         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
31038         have a type.  Instead of attempting to build a NOP_EXPR, return
31039         these "special" trees directly.
31040
31041 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
31042
31043         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
31044         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
31045         rs6000_cost->fp not 0 as adjustment for outer NEG.
31046
31047 2007-01-04  Jan Hubicka  <jh@suse.cz>
31048
31049         * cgraph.c (cgraph_release_function_body): New function.
31050         (cgraph_remove_node): Use it.
31051         * cgraph.h (cgraph_release_function_body): Declare.
31052         * cgraphunit.c (cgraph_expand_function): Use it.
31053         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
31054         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
31055         is initialized and while compilation of other function is running.
31056         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
31057         statement CFG annotations from here to ...
31058         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
31059
31060 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
31061
31062         * cfgloop.h (enum li_flags): Make the constants powers of two.
31063
31064 2007-01-04  Jan Hubicka  <jh@suse.cz>
31065
31066         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
31067         set.
31068         (fold_marked_statements): New function.
31069         (optimize_inline_calls, tree_function_versioning): Fold new statements.
31070         * tree-inline.h (copy_body_data): Add statements_to_fold.
31071
31072 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
31073
31074         * config.gcc: Mention libgcc/config.host.
31075         * Makefile.in: Update comments mentioning libgcc.
31076         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
31077         (all.cross, start.encap, rest.encap, rest.cross): Update
31078         dependencies for libgcc move.
31079         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
31080         (clean-target, clean-target-libgcc): Delete.
31081         (srcdirify, GCC_EXTRA_PARTS): New macros.
31082         (libgcc-support, libgcc.mvars): New rules.
31083         (distclean): Remove mention of mklibgcc.
31084         (install): Don't reference INSTALL_LIBGCC.
31085         (install-common): Don't reference EXTRA_PARTS.
31086         (install-libgcc, install-multilib): Delete rules.
31087         * mklibgcc.in: Delete file.
31088         * doc/configfiles.texi: Don't mention mklibgcc.
31089
31090         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
31091         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
31092         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
31093         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
31094         (mklibgcc, ldblspecs): Likewise.
31095
31096         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
31097         (posixpre.def): Use $(T).
31098         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
31099         (SHLIB_SRC, SHLIB_INSTALL): Delete.
31100         (SHLIB_LINK): Make dummy.
31101         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
31102
31103         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
31104
31105         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
31106         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
31107         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
31108         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
31109
31110         * configure.ac (all_outputs): Remove mklibgcc.
31111         * configure: Regenerated.
31112
31113 2007-01-03  Josh Conner  <jconner@apple.com>
31114
31115         PR middle-end/29683
31116         * calls.c (compute_argument_addresses): Set stack and stack_slot
31117         for partial args, too.
31118         (store_one_arg): Use locate.size.constant for the size when
31119         generating a save_area.
31120
31121 2007-01-03  Robert Kennedy <jimbob@google.com>
31122
31123         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
31124         whose definitions are deleted due to basic block merging.
31125
31126 2007-01-03  Paul Brook  <paul@codesourcery.com>
31127
31128         PR target/16634
31129         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
31130         functions.
31131         (use_return_insn): Return 0 for Thumb interrupt functions.
31132         (print_multi_reg): Add rfe argument for IRQ returns.
31133         (arm_output_epilogue): Pop interrupt return address directly into PC.
31134         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
31135
31136 2007-01-03  Paul Brook  <paul@codesourcery.com>
31137
31138         Merge from sourcerygxx-4_1.
31139         * config/arm/thumb2.md: New file.
31140         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
31141         Thumb-2.
31142         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
31143         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
31144         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
31145         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
31146         tables.
31147         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
31148         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
31149         comptibility.
31150         * config/arm/ieee754-sf.S: Ditto.
31151         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
31152         (thumb1_base_register_rtx_p): ... to this.
31153         (thumb_index_register_rtx_p): Rename...
31154         (thumb1_index_register_rtx_p): ... to this.
31155         (thumb_output_function_prologue): Rename...
31156         (thumb1_output_function_prologue): ... to this.
31157         (thumb_legitimate_address_p): Rename...
31158         (thumb1_legitimate_address_p): ... to this.
31159         (thumb_rtx_costs): Rename...
31160         (thumb1_rtx_costs): ... to this.
31161         (thumb_compute_save_reg_mask): Rename...
31162         (thumb1_compute_save_reg_mask): ... to this.
31163         (thumb_final_prescan_insn): Rename...
31164         (thumb1_final_prescan_insn): ... to this.
31165         (thumb_expand_epilogue): Rename...
31166         (thumb1_expand_epilogue): ... to this.
31167         (arm_unwind_emit_stm): Rename...
31168         (arm_unwind_emit_sequence): ... to this.
31169         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
31170         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
31171         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
31172         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
31173         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
31174         thumb2_output_casesi): New functions.
31175         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
31176         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
31177         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
31178         THUMB2_WORK_REGS): Define.
31179         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
31180         arm_condexec_mask, arm_condexec_masklen)): New variables.
31181         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
31182         (arm_override_options): Check new CPU capabilities.
31183         Set new architecture flag variables.
31184         (arm_isr_value): Handle v7m interrupt functions.
31185         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
31186         Thumb-2.
31187         (const_ok_for_arm): Handle Thumb-2 constants.
31188         (arm_gen_constant): Ditto.  Use movw when available.
31189         (arm_function_ok_for_sibcall): Return false for v7m interrupt
31190         functions.
31191         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
31192         (thumb_find_work_register, arm_load_pic_register,
31193         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
31194         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
31195         print_multi_reg, output_mov_long_double_fpa_from_arm,
31196         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
31197         output_mov_double_fpa_from_arm, output_move_double,
31198         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
31199         output_return_instruction, arm_output_function_prologue,
31200         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
31201         arm_output_mi_thunk, thumb_set_return_address): Ditto.
31202         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
31203         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
31204         (arithmetic_instr, shift_op): Use arm_shift_nmem.
31205         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
31206         '!' and 'L'.
31207         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
31208         (thumb_expand_prologue): Use thumb_set_frame_pointer.
31209         (arm_file_start): Output directive for unified syntax.
31210         (arm_unwind_emit_set): Handle stack alignment instruction.
31211         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
31212         Add v6t2, v7, v7a, v7r and v7m.
31213         (RETLDM): Add Thumb-2 code.
31214         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
31215         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
31216         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
31217         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
31218         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
31219         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
31220         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
31221         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
31222         ADJUST_INSN_LENGTH): Define.
31223         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
31224         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
31225         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
31226         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
31227         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
31228         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
31229         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
31230         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
31231         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
31232         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
31233         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
31234         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
31235         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
31236         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
31237         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
31238         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
31239         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
31240         cortex-m3.
31241         * config/arm/arm-tune.md: Regenerate.
31242         * config/arm/arm-protos.h: Update prototypes.
31243         * config/arm/vfp.md: Enable patterns for Thumb-2.
31244         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
31245         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
31246         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
31247         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
31248         * config/arm/libunwind.S: Add Thumb-2 code.
31249         * config/arm/constraints.md: Update include Thumb-2.
31250         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
31251         * config/arm/ieee754-df.S: Ditto.
31252         * config/arm/bpabi.S: Ditto.
31253         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
31254         * config/arm/predicates.md (low_register_operand,
31255         low_reg_or_int_operand, thumb_16bit_operator): New.
31256         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
31257         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
31258         * config/arm/t-arm-elf: Add armv7 multilib.
31259         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
31260         Include thumb2.md.
31261         (UNSPEC_STACK_ALIGN, ce_count): New.
31262         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
31263         arm_zero_extendsidi2, arm_zero_extendqidi2): New
31264         insns/expanders.
31265         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
31266         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
31267         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
31268         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
31269         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
31270         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
31271         insns.
31272         * doc/extend.texi: Document ARMv7-M interrupt functions.
31273         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
31274
31275 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
31276
31277         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
31278         (struct _Unwind_Context): Rename args_size to flags, remove
31279         signal_frame field, add a new args_size field and version field.
31280         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
31281         _Unwind_IsExtendedContext): New inline functions.
31282         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
31283         Assume by_value array is only present if _Unwind_IsExtendedContext.
31284         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
31285         _Unwind_IsSignalFrame.
31286         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
31287         (uw_update_context_1): Use _Unwind_SetSignalFrame.
31288         (uw_init_context_1): Initialize context->flags to
31289         EXTENDED_CONTEXT_BIT.
31290         * config/rs6000/linux-unwind.h (frob_update_context): Use
31291         _Unwind_SetSignalFrame.
31292
31293 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31294
31295         PR middle-end/30353
31296         * gimplify.c (gimplify_modify_expr_complex_part): Move below
31297         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
31298         the value.
31299
31300 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
31301
31302         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
31303         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
31304         RET, AT_SP): Remove.
31305         * config/i386/i386.md (*sse_prologue_save_insn): Use return
31306         instead of RET.
31307
31308         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
31309         * cfgbuild.c (find_basic_blocks): Likewise.
31310         * cfgrtl.c (rtl_create_basic_block): Likewise.
31311         * function.c (temp_slots_at_level): Likewise.
31312         * reg-stack.c (stack_regs_mentioned): Likewise.
31313         * regclass.c (allocate_reg_info): Likewise.
31314         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
31315         set_bb_for_stmt, move_block_to_fn): Likewise.
31316         * tree-complex.c (tree_lower_complex): Likewise.
31317         * vec.h (VEC_safe_grow_cleared): New.
31318
31319         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
31320
31321 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
31322
31323         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
31324         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
31325         to loop_version.
31326         * cfgloopmanip.c (scale_loop_frequencies): Export.
31327         (loopify): Scale the frequencies by prescribed coefficients.
31328         (set_zero_probability): New function.
31329         (duplicate_loop_to_header_edge): Improve updating of frequencies.
31330         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
31331         and frequencies according to arguments.
31332         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
31333         correctly.
31334         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
31335         * modulo-sched.c (sms_schedule): Set probabilities for entering
31336         versioned loop correctly.
31337         * tree-vect-transform.c (vect_transform_loop): Ditto.
31338         * cfgloop.h (loopify, loop_version): Declaration changed.
31339         (scale_loop_frequencies): Declared.
31340
31341 2007-01-02  Jan Hubicka  <jh@suse.cz>
31342
31343         * cgraph.c: Include tree-flow.h
31344         (cgraph_add_new-function): Handle IPA_SSA mode; execute
31345         early_local_passes.
31346         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
31347         * tree-pass.h (pass_all_early_optimizations): Declare.
31348         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
31349         early_local_passes.
31350         (cgraph_analyze_function): Do early_local_passes.
31351         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
31352         Do not add referenced vars.
31353         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
31354         SSA form.
31355         (gate_all_early_local_passes): New gate.
31356         (pass_early_local_passes): Use new gate.
31357         (execute_early_local_optimizations): New functions.
31358         (gate_all_early_optimizations): New gate.
31359         (pass_all_early_optimizations): New pass.
31360         (execute_free_datastructures): Free SSA only when initialized.
31361         (gate_init_datastructures): Init only when optimizing.
31362         (tree_lowering_passes): Do early local passes when called late.
31363         * tree-profile.c (do_tree_profiling): Don't profile functions added
31364         late.
31365         (do_early_tree_profiling, pass_early_tree_profile): Kill.
31366         * tree-cfg.c (update_modified_stmts): Do not update when operands are
31367         not active.
31368         * passes.c (init_optimizations_passes): Reorder so we go into SSA
31369         during early_local_passes.
31370         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
31371
31372
31373 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
31374
31375         * Makefile.in: Update copyright year.
31376
31377 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
31378
31379         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
31380         in $(lang_checks) and check-consistency targets.
31381
31382 2007-01-02  Jan Hubicka  <jh@suse.cz>
31383
31384         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
31385         Do not add referenced vars.
31386         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
31387         are not active.
31388         * passes.c (init_optimization_passes): Put mudflap_2 after
31389         free_datastructures.
31390
31391 2007-01-02  Jan Hubicka  <jh@suse.cz>
31392
31393         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
31394         Set NOTHROW flag on call statements proved to be nothrow.
31395         Update statement of local calls so new pure/const functions are
31396         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
31397         goto receivers.
31398         (tree_rest_of_compilation): Register hooks and initialize bitmap
31399         early. Do not set after_inlining flag.
31400
31401 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
31402
31403         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
31404         HOST_BITS_PER_LONGLONG
31405
31406 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
31407
31408         PR c/19977
31409         * c-typeck.c (store_init_value): Don't emit pedantic overflow
31410         warning for non-static initializers.
31411
31412 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
31413
31414         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
31415         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
31416         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
31417         Always use set_unique_reg_note to add REG_EQUAL notes.
31418
31419 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
31420
31421         Revert:
31422         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
31423
31424         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
31425         * cfgbuild.c (find_basic_blocks): Likewise.
31426         * cfgrtl.c (rtl_create_basic_block): Likewise.
31427         * function.c (temp_slots_at_level): Likewise.
31428         * reg-stack.c (stack_regs_mentioned): Likewise.
31429         * regclass.c (allocate_reg_info): Likewise.
31430         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
31431         set_bb_for_stmt, move_block_to_fn): Likewise.
31432         * tree-complex.c (tree_lower_complex): Likewise.
31433         * vec.h (VEC_safe_grow_cleared): New.
31434
31435 2007-01-02  Ian Lance Taylor  <iant@google.com>
31436
31437         * c-common.c (c_common_truthvalue_conversion): When warning about
31438         using an assignment as a truth value, set TREE_NO_WARNING.
31439
31440 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
31441
31442         PR middle-end/7651
31443         * c.opt (Wold-style-declaration): New.
31444         * doc/invoke.texi (C-only Warning Options): New.
31445         (Wold-style-declaration): Document it.
31446         (Wextra): Enabled by -Wextra.
31447         * c-opts.c (c_common_post_options): Enabled by -Wextra.
31448         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
31449         -Wold-style-declaration.
31450
31451 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
31452
31453         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
31454         * cfgbuild.c (find_basic_blocks): Likewise.
31455         * cfgrtl.c (rtl_create_basic_block): Likewise.
31456         * function.c (temp_slots_at_level): Likewise.
31457         * reg-stack.c (stack_regs_mentioned): Likewise.
31458         * regclass.c (allocate_reg_info): Likewise.
31459         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
31460         set_bb_for_stmt, move_block_to_fn): Likewise.
31461         * tree-complex.c (tree_lower_complex): Likewise.
31462         * vec.h (VEC_safe_grow_cleared): New.
31463
31464 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
31465
31466         * c-common.c (c_common_nodes_and_builtins): Since variants of
31467         void_type_node get built before it is given a name, we need to
31468         give those variants the name, too.
31469         (complete_array_type): We need to work with the canonical main
31470         type of the array, from which we will build the qualified version.
31471         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
31472         * print-tree.c (print_node): Display canonical type information
31473         for each type.
31474         * stor-layout.c (layout_type): When we don't know the
31475         alignment of a type for which we're building an array, we end up
31476         guessing wrong, so make the type require structural equality.
31477         * tree.c (make_node_stat): When we build a new type, it is its
31478         own canonical type.
31479         (build_type_attribute_qual_variant): When building an attribute
31480         variant, its canonical type is the non-attribute variant. However,
31481         if the attributes are target-dependent and they differ, we need to
31482         use structural equality checks for this type.
31483         (build_qualified_type): A qualified type is not equivalent to its
31484         unqualified variant; set the canonical type appropriately.
31485         (build_distinct_type_copy): When building a distinct type from
31486         another type, the new type is its own canonical type.
31487         (build_variant_type_copy): When building a new type variant, we
31488         assume that it is equivalent to the original type.
31489         (build_pointer_type_for_mode): When building a pointer type, also
31490         build a canonical type pointer.
31491         (build_reference_type_for_mode): When building a reference type,
31492         also build a canonical type reference.
31493         (build_index_type): When we can't hash an index type (e.g.,
31494         because its maximum value is negative), the index type requires
31495         structural equality tests.
31496         (build_array_type): Build the canonical form of an array type.
31497         (build_function_type): Function types require structural equality,
31498         because they contain default arguments, attributes, etc.
31499         (build_method_type_directly): Ditto for method types.
31500         (build_offset_type): Build the canonical offset type.
31501         (build_complex_type): Build the canonical vector type.
31502         (make_vector_type): Build the canonical vector type.
31503         * tree.h (TYPE_CANONICAL): New.
31504         (TYPE_STRUCTURAL_EQUALITY_P): New.
31505         (SET_TYPE_STRUCTURAL_EQUALITY): New.
31506         (struct tree_type): Added "canonical" field.
31507         * params.h (VERIFY_CANONICAL_TYPES): New.
31508         * doc/c-tree.texi (TYPE_CANONICAL): Document.
31509         (TYPE_STRUCTURAL_EQUALITY_P): Document.
31510         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
31511         * doc/invoke.texi (verify-canonical-types): Document --param
31512         parameter for verifying canonical types.
31513
31514 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
31515
31516         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
31517         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
31518         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
31519         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
31520         tm_file.
31521         * config/rs6000/e500.h: New.
31522         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
31523         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
31524         Remove.
31525         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
31526         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
31527         TARGET_E500_DOUBLE): Remove.
31528         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
31529         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
31530         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
31531         * config/rs6000/rs6000.c (rs6000_override_options): Use
31532         CHECK_E500_OPTIONS.
31533
31534 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
31535
31536         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
31537         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
31538         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
31539         rs6000_emit_cmove): Don't check TARGET_E500.
31540         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
31541         sordered): Don't check TARGET_E500.
31542
31543 2007-01-01  Eric Christopher  <echristo@apple.com>
31544
31545         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
31546         HARD_REGISTER_NUM_P.
31547
31548 2007-01-01  Roger Sayle  <roger@eyesopen.com>
31549
31550         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
31551         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
31552         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
31553         eq/ne Y".
31554
31555 2007-01-01  Mike Stump  <mrs@apple.com>
31556
31557         * configure.ac: Remove support for building with Apple's gcc-3.1.
31558
31559 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
31560
31561         PR middle-end/30311
31562         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
31563         REG is a hard register.  Do not modify REG before calling
31564         subreg_nregs.
31565         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
31566         multiple of the size of YMODE for certain lowpart cases.
31567
31568 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
31569
31570         PR middle-end/30253
31571         * gimplify (voidify_wrapper_expr): Update for
31572         GIMPLE_MODIFY_STMT.
31573
31574 2007-01-01  Andreas Schwab  <schwab@suse.de>
31575
31576         PR target/29166
31577         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
31578         save of BR0 in extra_spill_size instead of spill_size.
31579         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
31580         area.
31581         (ia64_expand_epilogue): Restore BR0 from its new location.
31582
31583 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
31584
31585         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
31586         Use a temporary variable if the left hand side is not a gimple
31587         register.
31588
31589 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
31590
31591         * gimplify.c (gimplify_return_expr): Make the temporary variable
31592         for the return expression, a gimple register variable.
31593
31594 2007-01-01  Jan Hubicka  <jh@suse.cz>
31595
31596         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
31597         INSN_LIST.
31598
31599 2007-01-01  Mike Stump  <mrs@apple.com>
31600
31601         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
31602         .literal16.
31603         * config/darwin.c (machopic_select_rtx_section): Use
31604         HAVE_GAS_LITERAL16.
31605         (darwin_mergeable_constant_section): Likewise.
31606         * configure: Regenerate.
31607         * config.in: Regenerate.
31608
31609 2007-01-01  Jan Hubicka  <jh@suse.cz>
31610             Andrew Pinski  <pinskia@gmail.com>
31611
31612         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
31613         before starting IPA passes.