OSDN Git Service

* rtlanal.c (note_stores): Improve documentation.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
2
3         * rtlanal.c (note_stores): Improve documentation.
4
5 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
6
7         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
8         LOCAL_LABEL_PREFIX): Delete.
9         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
10         (bfin_internal_label): Delete.
11
12 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
13
14         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
15         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
16         otherwise define to LIBGCC2_TF_CEXT.
17         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
18         (LIBGCC_TF_CEXT): Ditto.
19         (TF_SIZE): Ditto.
20
21 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
22
23         PR rtl-optimization/32339
24         * df-scan.c (df_uses_record): Don't modify flags but just add to
25         it for df_ref_record.
26
27 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28
29         * tree-mudflap.c: Fix whitespace issues.
30
31 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
32
33         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
34
35 2007-06-14  Eric Christopher  <echristo@apple.com>
36
37         * config/i386/sse.md (movdi_to_sse): Rewrite body.
38         (movv4sf): Use gcc_unreachable instead of abort.
39
40 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
41
42         PR target/32268
43         * config/i386/sfp-machine.h (CMPtype): New define.
44         (mach stubs): Use CMPtype instead of int as a return type.
45
46 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
47
48         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
49         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
50         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
51         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
52         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
53         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
54         config/soft-fp/soft-fp.h: Update from glibc CVS.
55
56 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
57
58         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
59
60 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
61
62         PR target/32341
63         * config/v850/v850.c: Include dataflow header file.
64         (substitute_ep_register): Fix typo.
65
66 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
67
68         * configure.ac: Fix earlier checkin.
69         * configure: Regenerated.
70
71 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
72
73         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
74         * aclocal.m4: Regenerate.
75         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
76         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
77         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
78         * configure: Regenerate.
79         * Makefile.in (LOOSE_WARN): Subst loose_warn.
80
81         * Makefile.in (quickstrap): Build libgcc too.
82
83 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
84
85         * configure.ac: Add --enable-checking=df.  Explicitly mention that
86         the variables are initialized as for "release".
87         * df-core.c: Use it.
88         * configure: Regenerate.
89         * config.in: Regenerate.
90
91 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
92
93         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
94         validate_replace_rtx instead of replace_rtx.
95         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
96
97 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
98
99         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
100         (DWARF2_UNWIND_INFO): Override default if configured with
101         SJLJ EH disabled.
102         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
103         (ENDFILE_SPEC): Add crtend.o.
104         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
105         (ENDFILE_SPEC): Add crtend.o.
106         (TARGET_USE_JCR_SECTION): Define.
107         (MD_UNWIND_SUPPORT): Define for 32-bit target.
108
109         * config/i386/cygming-crtbegin.c: New file.
110         * config/i386/cygming-crtend.c: New file.
111
112 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
113
114         * config/i386/w32-unwind.h: New file.
115
116 2007-06-13  Eric Christopher  <echristo@apple.com>
117
118         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
119         the user set a value below STACK_BOUNDARY.
120
121 2007-06-13  Thiemo Seufer  <ths@networkno.de>
122
123         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
124         imply -lpthread for -pthread.
125
126 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
127
128         * basic-block.h: Remove the prototype for
129         free_basic_block_vars.
130         * cfglayout.h: Remove the prototype for
131         insn_locators_initialize.
132         * tree.h: Remove the prototype for emit_line_note.
133
134         * tree-ssa-pre.c (mergephitemp): Remove.
135         (init_pre): Don't use mergephitemp.
136
137 2007-06-13  Eric Christopher  <echristo@apple.com>
138
139         * config/i386/i386.c (override_options): If we've specified
140         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
141
142 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
143
144         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
145         is defined.
146
147 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
148
149         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
150         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
151         (eh_store_handler): New pattern.
152         (eh_return): Emit it instead of a plain move.
153
154 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
155
156         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
157         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
158         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
159         def_builtin_const.
160
161 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
162
163         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
164         (find_next_insn_start, find_load): New functions.
165         (bfin_reorg): Use them to deal with the fact that parallel insns are
166         no longer represented as a SEQUENCE.
167
168 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
169
170         * config/sparc/sparc.c (sparc_override_options): Initialize
171         fpu mask correctly.
172
173 2007-06-13  Dave Korn  <dave.korn@artimi.com>
174
175         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
176         df_get_live_out.
177
178 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
179
180         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
181         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
182         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
183         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
184         tree-vect-transform.c: Fix comment typos.  Follow spelling
185         conventions.
186
187 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
188
189        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
190        to the exit block use set.
191        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
192        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
193
194 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
195
196         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
197         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
198         to indicate an error.
199         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
200         (dbg_cnt_process_opt): Print an error on a bad argument.
201         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
202         * common.opt (-fdbg-cnt-list): New.
203         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
204
205 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
206
207         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
208         flag on ref-all pointers.
209
210 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
211
212         PR middle-end/31579
213         * expr.c (expand_expr_addr_expr_1): Call expand_expr
214         for the offset with the modifier as EXPAND_INITIALIZER
215         if the modifier is EXPAND_INITIALIZER.
216         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
217         a register if we had an overflow.
218
219 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
220
221         * real.c (real_isfinite): New.
222         (real_sqrt): Use it.
223         * real.h (real_isfinite): New.
224         * builtins.c: Use it.
225
226 2007-06-12  Ian Lance Taylor  <iant@google.com>
227             Daniel Berlin  <dberlin@dberlin.org>
228
229         PR libstdc++/29286
230         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
231         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
232         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
233         (DECL_NO_TBAA_P): Define.
234         (struct tree_decl_common): Add no_tbaa_flag field.
235         * tree-ssa-structalias.c (struct variable_info): Add
236         no_tbaa_pruning field.
237         (new_var_info): Initialize no_tbaa_pruning field.
238         (unify_nodes): Copy no_tbaa_pruning field.
239         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
240         (dump_solution_for_var): Print no_tbaa_pruning flag.
241         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
242         callers.
243         (compute_tbaa_pruning): New static function.
244         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
245         Call compute_tbaa_pruning.
246         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
247         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
248         * gimple-low.c (lower_stmt): Likewise.
249         * tree-gimple.c (is_gimple_stmt): Likewise.
250         * tree-ssa-operands.c (get_expr_operands): Likewise.
251         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
252         * tree-inline.c (estimate_num_insns_1): Likewise.
253         (copy_result_decl_to_var): Likewise.
254         * expr.c (expand_expr_real_1): Likewise.
255         * tree-pretty-print.c (dump_generic_node): Likewise.
256         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
257         * omp-low.c (omp_copy_decl_2): Likewise.
258         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
259         * doc/c-tree.texi (Expression trees): Document
260         CHANGE_DYNAMIC_TYPE_EXPR.
261
262 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
263
264         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
265         with !HONOR_NANS and !HONOR_INFINITIES.
266         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
267
268 2007-06-12  Tristan Gingold  <gingold@adacore.com>
269
270         * gcov.c: Comments updated.
271         (source_info): Add file_time field.
272         (source_index): New variable.
273         (mutiple_files): New variable.
274         (generate_results): New function extracted from process_file.
275         (process_file): Save and restore chain of functions, generate
276         results and free structures only if not merging results.
277         (release_structures): File names are now freed in create_file_names
278         (create_file_names): Free previous file names.
279         (find_source): File date is now read here and modifications in
280         source files is checked here.
281         (read_graph_file): Only reverse order of functions for the current
282         object file.
283         (make_gcov_file_name): Do not generate long names if input_name is
284         NULL.
285         (output_lines): If merging results do not display graph, data and
286         runs informations.
287         Checking source file modification is done in find_source.
288
289         * doc/gcov.texi: Append an s to sourcefile.
290
291 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
292
293         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
294         (forced_nop): New pattern.
295         * config/bfin/bfin.c: Include "df.h".
296         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
297         (bfin_discover_loop): Use df_get_live_in instead of
298         global_live_at_start.
299         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
300         df_analyze when done.
301         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
302         the insns.  Use QImode for the final insn in a bundle.  Call
303         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
304         gen_nop.
305         (reorder_var_tracking_notes): New function.
306         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
307         update_life_info.  Call df_analyze after scheduling and bundle
308         generation.  Call reorder_var_tracking_notes if generating these notes.
309         Call df_finish_pass at the end.
310
311 2007-06-12  Dirk Mueller  <dmueller@suse.de>
312
313         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
314         a comparison, not an assignment.
315
316 2007-06-12  Olivier Hainque  <hainque@adacore.com>
317
318         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
319         Request walking the subtrees only, leaving the current is_lhs/val_only
320         untouched.
321         (convert_non_local_reference): Likewise.
322
323 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
324
325         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
326
327 2007-06-12  Richard Guenther  <rguenther@suse.de>
328
329         PR tree-optimization/15353
330         PR tree-optimization/31657
331         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
332         * timevar.def: Add TV_TREE_IFCOMBINE.
333         * tree-pass.h (pass_tree_ifcombine): Declare.
334         * tree-ssa-ifcombine.c: New file.
335         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
336         * tree-flow.h (blocks_in_phiopt_order): Declare.
337         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
338         (tree-ssa-ifcombine.o): New dependencies.
339
340 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
341
342         PR rtl-optimization/32293
343         * combine.c (simplify_if_then_else): Truncate return from
344         nonzero_bits() to correct mode.
345
346 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
347
348         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
349         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
350
351 2007-06-11  Diego Novillo  <dnovillo@google.com>
352
353         * Makefile.in (reload1.o-warn): Remove.
354
355 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
356
357         * combine.c (subst): Use reg_overlap_mentioned_p
358         instead of comparing register numbers directly.
359
360 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
361
362         * reload1.c (mark_home_live_1): Use the mode parameter.
363
364 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
365
366         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
367         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
368         word "deferred".
369         * df-core.c: Ditto.
370
371 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
372
373         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
374
375 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
376
377         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
378         from integer registers.
379         (FP mode splitters): Handle TFmode.
380
381 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
382
383         * tree-ssa-structalias.c (find_what_p_points_to): Return false
384         for ref-all pointers that point-to anything.
385
386 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
387
388         * config/arm/arm.c (arm_output_dwarf_dtprel,
389         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
390
391 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
392
393         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
394         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
395         to memory moves.
396
397 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
398
399         * gcc/tree.c (signed_or_unsigned_type_for): New.
400         (unsigned_type_for): Use signed_or_unsigned_type_for.
401         (signed_type_for): Use signed_or_unsigned_type_for.
402         * gcc/tree.h (signed_or_unsigned_type_for): New.
403         (get_signed_or_unsigned_type): Remove.
404         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
405         lang_hooks.types.signed_type
406         (size_diffop): Likewise.
407         (all_ones_mask_p): Likewise.
408         (build_range_check): Likewise.
409         (fold_cond_expr_with_comparison): Likewise.
410         (fold_cond_expr_with_comparison): Likewise.
411         (unextend): Likewise.
412         (extract_muldiv_1): Likewise.
413         (fold_single_bit_test_into_sign_test): Likewise.
414         (fold_binary): Likewise.
415         (fold_ternary): Likewise.
416         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
417         instead of get_signed_or_unsigned_type.
418         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
419         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
420         * gcc/expr.c (signed_or_unsigned_type_for): Use
421         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
422         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
423         (lhd_signed_or_unsigned_type): Remove.
424         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
425         signed_or_unsigned_type.
426         (lhd_signed_or_unsigned_type): Remove.
427         * gcc/expmed.c (make_tree): Use signed_type_for instead of
428         lang_hooks.types.signed_type.
429         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
430         c_common_signed_type instead of lang_hooks.types.signed_type.
431         (c_common_unsigned_type): New.
432         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
433         (shorten_compare): Use c_common_unsigned_type instead of
434         c_common_signed_or_unsigned_type.
435         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
436         unsigned_type_for.
437         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
438         lang_hooks.types.signed_type.
439         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
440         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
441         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
442         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
443         instead of unsigned_type_for.
444         * gcc/c-decl.c (groakdeclarator): Likewise.
445         * gcc/c-typeck.c (convert_for_assignment): Likewise.
446         * gcc/c-common.h (c_common_unsigned_type): New.
447
448 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
449
450         PR target/32280
451         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
452         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
453
454 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
455
456         PR middle-end/32279
457         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
458         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
459
460 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
461             Sebastian Pop  <sebpop@gmail.com>
462
463         * lambda-code.c (remove_iv): New.
464         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
465
466 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
467
468         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
469         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
470         * tree-ssa-loop-prefetch.c: Include optabs.h.
471         (FENCE_FOLLOWING_MOVNT): New macro.
472         (struct mem_ref): Add independent_p and storent_p fields.
473         (record_ref): Initalize the new fields.
474         (gather_memory_references_ref): Return true if the reference
475         could be analysed.
476         (gather_memory_references): Check whether all memory accesses
477         in loop were recorded.
478         (should_issue_prefetch_p): Return false for nontemporal stores.
479         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
480         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
481         (determine_loop_nest_reuse): Detect independent memory references.
482         (loop_prefetch_arrays): Call mark_nontemporal_stores.
483         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
484         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
485         * config/i386/i386.h (x86_mfence): Declare.
486         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
487         * config/i386/i386.c (x86_mfence): New variable.
488         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
489
490         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
491         * optabs.c (init_optabs): Initialize storent_optab.
492         * optabs.h (enum optab_index): Add OTI_storent.
493         (storent_optab): Declare.
494         * genopinit.c (optabs): Add initialization for storent_optab.
495         * tree.h (MOVE_NONTEMPORAL): New macro.
496         * expr.c (expand_assignment, store_expr, store_constructor_field,
497         store_constructor, store_field, expand_expr_real_1): Propagate
498         nontemporality of the expanded store.
499         (emit_storent_insn): New function.
500         * expr.h (expand_assignment, store_expr): Declaration changed.
501         * function.c (assign_parm_setup_reg): Pass false as nontemporality
502         to expand_assignment.
503         * stmt.c (expand_asm_expr): Ditto.
504         * calls.c (initialize_argument_information): Pass false as
505         nontemporality to store_expr.
506         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
507         storentsi): New.
508
509 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
510
511         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
512         parameter, use it.
513         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
514
515 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
516
517         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
518         and allow DECL_P here.
519
520 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
521
522         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
523         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
524         track of the size of the expression.
525         * cfghooks.c (merge_blocks): Remove block from loops structure only
526         after call of the merge_blocks hook.
527
528 2007-06-09  Tom Tromey  <tromey@redhat.com>
529
530         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
531         (deprecated_state): Removed.
532         (start_decl): Update.
533         (enum deprecated_states): Moved earlier.
534         (groktypename): Update.
535         (push_parm_decl): Likewise.
536         (grokfield): Likewise.
537         (start_function): Likewise.
538
539 2007-06-09  Ian Lance Taylor  <iant@google.com>
540
541         PR tree-optimization/32169
542         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
543         CONVERT_EXPR, check whether min and max both converted to an
544         overflow infinity representation.
545
546 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
547
548         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
549         not inserted on the edge.
550
551 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
552
553         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
554         instructions if they are supported.
555         (__divsi3, __umodsi3, __modsi3): Likewise.
556         (__ashldi3, __ashrdi3, __lshrdi3): New.
557         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
558
559 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
560             Tony Linthicum <tony.linthicum@amd.com>
561
562         * doc/extend.texi: Add fvect-cost-model flag.
563         * common.opt (fvect-cost-model): New flag.
564         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
565         cost fields in stmt_vec_info struct for STMT.
566         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
567         fields in stmt_vec_info struct and access functions for the same.
568         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
569         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
570         load, store and vector to scalar operation.
571         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
572         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
573         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
574         (TARG_VEC_STORE_COST): Define cost of vector store.
575         (vect_estimate_min_profitable_iters): Define new function.
576         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
577         check to evaluate if loop iterations are less than minimum profitable
578         iterations determined by cost model or minimum vect loop bound defined
579         by user, whichever is more conservative.
580         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
581         run-time check to evaluate if loop iterations are less than minimum
582         profitable iterations determined by cost model or minimum vect loop
583         bound defined by user, whichever is more conservative.
584         (vect_estimate_min_profitable_iterations): New function to estimate
585         mimimimum iterartions required for vector version of loop to be
586         profitable over scalar version.
587         (vect_model_reduction_cost): New function.
588         (vect_model_induction_cost): New function.
589         (vect_model_simple_cost): New function.
590         (vect_cost_strided_group_size): New function.
591         (vect_model_store_cost): New function.
592         (vect_model_load_cost): New function.
593         (vectorizable_reduction): Call vect_model_reduction_cost during
594         analysis phase.
595         (vectorizable_induction): Call vect_model_induction_cost during
596         analysis phase.
597         (vectorizable_load): Call vect_model_load_cost during analysis phase.
598         (vectorizable_store): Call vect_model_store_cost during analysis phase.
599         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
600         vectorizable_promotion, vectorizable_demotion): Call
601         vect_model_simple_cost during analysis phase.
602
603 2007-06-08  Simon Baldwin  <simonb@google.com>
604
605         * reg-stack.c (get_true_reg): Readability change.  Moved default case
606         label into direct switch statement scope.
607
608 2007-06-08  Simon Baldwin  <simonb@google.com>
609
610         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
611         in gcc_assert() with '==' comparison.
612
613 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
614
615         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
616         TARGET_ABM handling of x86_popcnt variable.
617
618 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
619
620         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
621         __builtin_copysignq and __builtin_infq built-in functions.
622
623 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
624
625         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
626         SSE4.2 section.  Correct built-in function names in SSE4A section.
627
628 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
629
630         PR tree-optimization/32243
631         * tree-vect-transform.c (vectorizable_type_promotion): Move check
632         for ncopies after ratio check between nunits_out and nunits_in.
633         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
634
635 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
636
637         PR tree-optimization/32224
638         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
639         vectorization upon a non GIMPLE_MODIFY_STMT.
640
641 2007-06-08  Christian Bruel  <christian.bruel@st.com>
642
643         PR target/29953
644         * config/sh/sh.md (doloop_end): New pattern and splitter.
645         * loop-iv.c (simple_rhs_p): Check for hardware registers.
646
647 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
648
649         PR middle-end/32209
650         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
651         functions.
652         (verify_dominators): Do not change dominance tree.
653
654 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
655
656         * config/sh/constraints.md: New file.
657         * config/sh/sh.c: Include tm-constrs.h.
658         (reg_class_from_letter): Remove.
659         (prepare_cbranch_operands): Use satisfies_constraint_*
660         function instead of macro.
661         (andcosts, broken_move, sh_secondary_reload): Likewise.
662         * config/sh/predicates.md (trapping_target_operand): Likewise.
663         (and_operand, arith_operand, arith_reg_or_0_operand,
664         cmp_operand, logical_operand, target_operand,
665         ua_address_operand, ua_offset, xor_operand): Likewise.
666         * config/sh/sh.md: Include constraints.md.
667         (*movsicc_t_false): Use satisfies_constraint_* function
668         instead of macro.
669         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
670         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
671         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
672         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
673         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
674         (REG_CLASS_FROM_CONSTRAINT): Remove.
675         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
676         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
677         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
678         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
679         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
680         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
681         function instead of macro.
682         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
683         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
684         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
685         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
686         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
687         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
688         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
689         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
690         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
691         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
692         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
693         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
694         EXTRA_CONSTRAINT_STR): Likewise.
695         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
696
697 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
698
699         * config/i386/darwin.h (STACK_BOUNDARY): Define.
700
701 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
702
703         PR c++/30759
704         * c-common.h (flag_cpp0x): Replaced by...
705         (cxx_dialect): ... this new variable specifying the C++ dialect that
706         is used.
707         * c-common.c (flag_cpp0x): Removed.
708         (cxx_dialect): Defined.
709         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
710         cxx_dialect.
711         * c-opts.c (c_common_post_options): Likewise.
712         (set_std_cxx98): Set cxx_dialect to cxx98.
713         (set_std_cxx0x): Set cxx_dialect to cxx0x.
714
715 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
716             Hui-May Chang <hm.chang@apple.com>
717
718         * doc/invoke.texi (Darwin Options): Update documentation for
719         -mmacosx-version-min.
720         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
721         * config/darwin-driver.c: New file.
722         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
723         * config/t-darwin (darwin-driver.o): New rule.
724
725         * config/darwin-c.c (version_as_macro): Ignore low digit.
726
727 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
728
729         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
730         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
731         (CSGNMODE): New mode macro.
732         (CSGNVMODE): New mode attribute.
733         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
734         expander using CSGNMODE mode macro.  Handle TFmode.
735         (copysign<mode>3_const): Rename from copysignsf3_const and
736         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
737         Handle TFmode.
738         (copysign<mode>3_var): Rename from copysignsf3_var and
739         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
740         Handle TFmode.
741         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
742         mode macro.  Handle TFmode.
743         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
744         (iortf3, *iortf3): Ditto.
745         (xortf3, *xortf3): Ditto.
746         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
747         TFmode and TImode masks.
748         (ix86_expand_copysign): Expand TFmode copysign insn.
749         (IX86_BUILTIN_INFQ): New.
750         (IX86_BUILTIN_FABSQ): Ditto.
751         (IX86_BUILTIN_COPYSIGNQ): Ditto.
752         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
753         [__builtin_fabsq]: Ditto.
754         [__builtin_copysignq]: Ditto.
755         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
756         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
757         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
758         ix86_expand_binop_builtin().
759
760 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
761
762         * config/xtensa/lib1funcs.asm: Clean up whitespace.
763
764 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
765
766         PR target/31850
767         * rtl.h (push_to_sequence2): New.
768         * emit-rtl.c (push_to_sequence2): New.
769         * function.c (assign_parm_data_all): Add new fields.
770         (assign_parm_setup_block): Call push_to_sequence2 instead of
771         push_to_sequence.
772         (assign_parm_setup_reg): Ditto.
773         (assign_parm_setup_stack): Ditto.
774         (assign_parms_unsplit_complex): Ditto.
775         (assign_parms): Change field name.
776
777 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
778
779         PR tree-optimization/32220
780         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
781         phi node is reached before defining statement.
782
783 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
784
785         PR tree-opt/32231
786         * tree-vect-transform.c (vectorizable_call): Call update_stmt
787         after changing the right hand side of the assignment.
788
789 2007-06-06  Eric Christopher  <echristo@apple.com>
790
791         * config.gcc (i?86-*-darwin*): Remove arch parameter.
792         (x86_64-*-darwin*): Ditto.
793         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
794         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
795
796 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
797
798         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
799         coding conventions.
800         (add_key): Likewise.
801         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
802         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
803         variable names.
804         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
805         (add_cost_one_coalesce): Likewise.
806         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
807         variable names. Rename orig to orig_name for consistency.
808         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
809         conventions.
810         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
811         (record_equivalences_from_stmt): Likewise.
812         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
813         the coding conventions.
814         (memory_ssa_name_same): Likewise.
815         (dse_optimize_stmt): Likewise.
816         (dse_record_phis): Likewise.
817         (dse_finalize_block): Likewise.
818         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
819         keywords as variable names.
820         (may_move_till): Cast according to the coding conventions.
821         (force_move_till_expr): Avoid using C++ keywords as variable names.
822         (force_move_till): Cast according to the coding conventions.
823         (memref_hash): Likewise.
824         (memref_eq): Likewise.
825         (gather_mem_refs_stmt): Likewise.
826         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
827         keywords as variable names.
828         (idx_find_step): Cast according to the coding conventions.
829         (idx_record_use): Likewise.
830         (find_depends): Likewise.
831         (prepare_decl_rtl): Likewise.
832         (mbc_entry_hash): Likewise.
833         (mbc_entry_eq): Likewise.
834         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
835         (simplify_replace_tree): Avoid using C++ keywords as variable names.
836         (idx_infer_loop_bounds): Cast according to the coding conventions.
837         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
838         * tree-ssa-math-opts.c (occ_new ): Likwise.
839         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
840         macros.
841         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
842         names.
843         (add_use_op): Likewise.
844         (add_vop): Likewise.
845         (add_vuse_op): Likewise.
846         (add_vdef_op): Likewise.
847         (get_expr_operands): Likewise.
848         (push_stmt_changes): Use type safe memory macros.
849         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
850         keywords as variable names.
851         (conditional_replacement): Likewise.
852         (minmax_replacement): Likewise.
853         (abs_replacement): Likewise.
854         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
855         coding conventions.
856         (insert_fake_stores): Avoid using C++ keywords as variable names.
857         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
858         conventions.
859         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
860         (heapvar_insert): Use type safe memory macros.
861         (new_var_info): Cast according to the coding conventions.
862         (new_constraint): Likewise.
863         (remove_preds_and_fake_succs): Use type safe memory macros.
864         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
865         conventions.
866         (thread_single_edge): Likewise.
867         (thread_through_loop_header): Likewise.
868
869 2007-06-06  Eric Christopher  <echristo@apple.com>
870
871         * config/i386/i386.c (override_options): Move handling
872         of TARGET_SUBTARGET* earlier.
873
874 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
875
876         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
877         use %n on printf.
878
879 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
880
881         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
882         emited outside of basic block.
883         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
884         the created blocks.
885         * rtl.h (delete_insn_chain): Declaration changed.
886         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
887         non-removed insns.
888         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
889         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
890         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
891         to delete_insn_chain.
892         (rtl_verify_flow_info_1): Verify that the insns in header and footer
893         do not have bb field set.
894         (rtl_verify_flow_info): Verify that insns between basic blocks do not
895         have bb field set.
896         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
897         * cfgcleanup.c (try_optimize_cfg): Ditto.
898
899 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
900
901         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
902         (lambda_body_vector_new): Use type safe memory macros.
903         (lambda_linear_expression_new): Likewise.
904         (lambda_loopnest_new): Likewise.
905         (lambda_lattice_new): Likewise.
906         (replace_uses_equiv_to_x_with_y): Cast according to the coding
907         conventions. Use type safe memory macros.
908         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
909         (lambda_body_vector_s): Likewise.
910         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
911         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
912
913 2007-06-06  Richard Guenther  <rguenther@suse.de>
914
915         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
916         if we need to schedule cfg_cleanup.
917         (tree_ssa_forward_propagate_single_use_vars): Do so.
918
919 2007-06-06  Ian Lance Taylor  <iant@google.com>
920
921         * fold-const.c (merge_ranges): If range_successor or
922         range_predecessor fail, just return 0.
923
924 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
925
926         PR tree-optimization/32216
927         * tree-vectorizer.c (supportable_widening_operation): Determine
928         signedness of FIX_TRUNC_EXPR from output operand.
929         (supportable_narrowing_operation): Ditto.
930         * tree-vect-generic.c (expand_vector_operations_1): Determine
931         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
932         from input operand.
933
934 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
935
936         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
937         (struct pta): ...from here. Change flags to unsigned to avoid
938         excessive casting (as it is used as a bit mask).
939         (override_options): Add casts according to the coding convenventions.
940         (x86_64_elf_unique_section): Likewise.
941         (examine_argument): Avoid using C++ keywords as variable names.
942         (construct_container): Likewise.
943         (legitimize_pic_address): Likewise.
944         (get_dllimport_decl): Cast according to the coding conventions. Use
945         type safe memory macros.
946         (legitimize_address): Cast according to the coding conventions.
947         (emit_i387_cw_initialization): Corrected the type of slot to enum
948         ix86_stack_slot.
949         (ix86_init_machine_status): Use type safe memory macros.
950         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
951         (bdesc_pcmpistr): Likewise.
952         (bdesc_crc32): Likewise.
953         (bdesc_sse_3arg): Likewise.
954         (bdesc_2arg): Likewise.
955         (bdesc_1arg): Likewise.
956         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
957         (ix86_expand_sse_pcmpistr): Likewise.
958         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
959         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
960         int to match the langhook definition.
961         (ix86_builtin_conversion): Change the type of code to unsigned init to
962         match the langhook definition.
963         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
964         names.
965         (ix86_preferred_output_reload_class): Likewise.
966         (ix86_cannot_change_mode_class): Likewise.
967         (ix86_memory_move_cost): Likewise.
968         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
969         avoid excessive casting later on.
970         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
971
972 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
973
974         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
975         as flags setting insn.
976         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
977
978 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
979
980         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
981         (UNSPEC_ROUND): New.
982         ("sse4_1_round<mode>2"): New insn pattern.
983         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
984         SSE4.1 targets.
985         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
986         expander using SSEMODEF mode macro.  Expand using
987         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
988         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
989         expander using SSEMODEF mode macro.  Expand using
990         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
991         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
992         expander using SSEMODEF mode macro.  Expand using
993         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
994         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
995         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
996         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
997         UNSPEC_ROUNDS.
998
999 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
1000             Sebastian Pop  <sebpop@gmail.com>
1001
1002         * lambda.h (build_linear_expr): New.
1003         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
1004         Use build_linear_expr, call fold and force_gimple_operand.
1005         (lambda_loopnest_to_gcc_loopnest): Check that there is
1006         something to insert.
1007         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
1008
1009 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
1010
1011         PR preprocessor/23479
1012         * doc/extend.texi: Document the 0b-prefixed binary integer
1013         constant extension.
1014
1015 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1016
1017         PR tree-optimization/32215
1018         * tree-vectorizer.c (supportable_widening_operation): Return false
1019         for unsupported FIX_TRUNC_EXPR tree code.
1020         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
1021
1022 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
1023
1024         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
1025         register on SPE targets.  Change documentation to reflect
1026         reality.
1027         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
1028         Change FIXED_SCRATCH to 14 and document why we're keeping r14
1029         out of the register allocation pool.
1030         (rs6000_reg_live_or_pic_offset_p): New function.
1031         (rs6000_emit_prologue): Move the actual saving of LR up to free
1032         r0 for holding r11.  Split saving of SPE 64-bit registers into
1033         its own case.  Ensure that offsets will always be in-range for
1034         'evstdd' by using r11 as a scratch register to point at the start
1035         of the SPE save area.  Save r11 if necessary, as it is the static
1036         chain register.
1037         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
1038         into its own case.  Ensure that offsets will always be in-range
1039         for 'evldd' by using r11 as a scratch register to point at the
1040         start of the SPE save area.  Also adjust r11 when restoring
1041         the stack pointer to compensate for pre-loading r11.
1042
1043 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
1044
1045         * cfg.c (init_flow): Use type safe memory macros.
1046         (alloc_block): Likewise.
1047         (unchecked_make_edge): Likewise.
1048         (dump_flow_info): Avoid using C++ keywords as variable names.
1049         (copy_original_table_clear): Cast according to the coding conventions.
1050         (copy_original_table_set): Likewise.
1051         * cfgexpand (label_rtx_for_bb): Likewise.
1052         (expand_gimple_basic_block): Likewise.
1053         * cfghooks.c (dump_bb): Likewise.
1054         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
1055         variable names.
1056         (lv_add_condition_to_bb): Likewise.
1057         * cfglayout (relink_block_chain): Cast according to the coding
1058         conventions.
1059         (fixup_reorder_chain): Likewise.
1060         (fixup_fallthru_exit_predecessor): Likewise.
1061         * cfgloop.c (glb_enum_p): Likewise.
1062         (get_exit_description): Likewise.
1063         (dump_recorded_exit): Likewise.
1064         * cfgloop.h (enum loop_estimation): Move out of struct scope...
1065         (struct loop): ... from here.
1066         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
1067         conventions.
1068         * cfgrtl.c (rtl_create_basic_block): Likewise.
1069         (rtl_split_block): Likewise.
1070         (rtl_dump_bb): Likewise.
1071         (cfg_layout_split_block): Likewise.
1072         (init_rtl_bb_info): Use typesafe memory macros.
1073
1074         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
1075         * graphds.h: Updated all usages of edge to graph_edge.
1076         * graphds.c: Likewise.
1077         * cfgloopanal.c: Likewise.
1078
1079 2007-06-05  Ian Lance Taylor  <iant@google.com>
1080
1081         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
1082         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
1083         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
1084         expression.
1085         (test_for_singularity): Likewise.
1086
1087 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1088
1089         * config/i386/constraints.md ("Y2"): Replaced by ...
1090         ("Yt"): This.
1091         * config/i386/i386.md: Likewise.
1092         * config/i386/mmx.md: Likewise.
1093         * config/i386/sse.md: Likewise.
1094
1095 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1096
1097         * config/i386/constraints.md ("z"): Replaced by ...
1098         ("Y0"): This.
1099         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
1100         (sse4_1_blendvps): Likewise.
1101         (sse4_1_pblendvb): Likewise.
1102         (sse4_2_pcmpestr): Likewise.
1103         (sse4_2_pcmpestrm): Likewise.
1104         (sse4_2_pcmpestr_cconly): Likewise.
1105         (sse4_2_pcmpistr): Likewise.
1106         (sse4_2_pcmpistrm): Likewise.
1107         (sse4_2_pcmpistr_cconly): Likewise.
1108
1109 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
1110
1111         * matrix-reorg.c (transform_access_sites): Fix computation.
1112         (transform_allocation_sites): Same.
1113
1114 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1115
1116         * config/i386/i386.c (override_options): Use
1117         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
1118
1119 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1120
1121         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
1122         (nonimm_not_xmm0_operand): Ditto.
1123         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
1124         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
1125         as operand[2] predicate.  Require "z" class XMM register for
1126         operand[3].  Adjust asm template.
1127         ("sse4_1_blendvpd"): Ditto.
1128         ("sse4_1_pblendvb"): Ditto.
1129         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
1130         force op2 into xmm0 register for variable blend instructions.
1131
1132 2007-06-04  Tom Tromey  <tromey@redhat.com>
1133
1134         * c-tree.h (start_enum): Update.
1135         (build_enumerator): Likewise.
1136         * c-decl.c (enum_next_value): Removed.
1137         (enum_overflow): Likewise.
1138         (start_enum): Add c_enum_contents argument.  Don't use globals.
1139         (build_enumerator): Likewise.
1140         * c-tree.h (struct c_enum_contents): New struct.
1141
1142 2007-06-04  Tom Tromey  <tromey@redhat.com>
1143
1144         * c-common.c (c_common_get_alias_set): Fix indentation.
1145
1146 2007-06-04  Ian Lance Taylor  <iant@google.com>
1147
1148         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
1149         to overflow, reduce overflow infinity to regular infinity.
1150         (vrp_var_may_overflow): New static function.
1151         (vrp_visit_phi_node): Check vrp_var_may_overflow.
1152
1153 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
1154
1155         * stor-layout.c (layout_type): Remove duplicate code.
1156
1157 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
1158
1159         PR c/32191
1160         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
1161         before build_common_builtin_nodes ().
1162
1163 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
1164
1165         PR target/31733
1166         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
1167
1168 2007-06-04  Jan Hubicka  <jh@suse.cz>
1169
1170         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
1171         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
1172         instead of _stat version.
1173
1174 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1175
1176         PR tree-optimization/32194
1177         * tree-predcom.c (determine_offset): Check that both references have
1178         the same type.
1179
1180 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1181
1182         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
1183         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
1184         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
1185         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
1186         Add argument to iterate_fix_dominators call.
1187         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
1188         * gcse.c (hoist_code): Change domby to vector.
1189         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
1190         Add argument to iterate_fix_dominators call.
1191         * loop-doloop.c (doloop_modify): Changed recount_dominator to
1192         recompute_dominator.
1193         * lambda-code.c (perfect_nestify): Ditto.
1194         * cfgloopanal.c: Include graphds.h.
1195         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
1196         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
1197         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
1198         add_edge call.
1199         * graphds.c: New file.
1200         * graphds.h: New file.
1201         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
1202         (get_dominated_by, get_dominated_by_region): Change return type to
1203         vector.
1204         (verify_dominators): Recompute all dominators and compare the results.
1205         (recount_dominator): Renamed to ...
1206         (recompute_dominator): ... this.  Do not check that the block is
1207         dominated by entry.
1208         (iterate_fix_dominators): Reimplemented.
1209         (prune_bbs_to_update_dominators, root_of_dom_tree,
1210         determine_dominators_for_sons): New functions.
1211         * et-forest.c (et_root): New function.
1212         * et-forest.h (et_root): Declare.
1213         * Makefile.in (graphds.o): Add.
1214         (cfgloopanal.o): Add graphds.h dependency.
1215         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
1216         * basic-block.h (get_dominated_by, get_dominated_by_region,
1217         iterate_fix_dominators): Declaration changed.
1218         (recount_dominator): Renamed to ...
1219         (recompute_dominator): ... this.
1220         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
1221         (thread_through_all_blocks): Do not free dominance info.
1222
1223 2007-06-03  Andreas Schwab  <schwab@suse.de>
1224
1225         * config/m68k/m68k.c (override_options): Don't override
1226         REAL_MODE_FORMAT.
1227         * config/m68k/m68k-modes.def (SF, DF): Define to use
1228         motorola_single_format and motorola_double_format, resp.
1229         * real.c (motorola_single_format): Renamed from
1230         coldfire_single_format.
1231         (motorola_double_format): Renamed from coldfire_double_format.
1232         (encode_ieee_extended): Generate a proper canonical NaN image
1233         respecting canonical_nan_lsbs_set.
1234         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
1235         true.
1236         * real.h: Adjust declarations.
1237
1238 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1239
1240         PR target/32163
1241         * config/sh/sh.md (symGOT_load): Don't schedule insns when
1242         the symbol is generated with the stack protector.
1243
1244 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
1245
1246         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
1247         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
1248         "interrupt".
1249         * doc/extend.texi (interrupt): Mention m68k.
1250
1251 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
1252
1253         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
1254         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
1255         (ix86_expand_sse_pcmpestr): Do not check operands for
1256         "register_operand", when insn operand predicate is "register_operand".
1257         (ix86_expand_sse_pcmpistr): Ditto.
1258
1259 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
1260             Uros Bizjak  <ubizjak@gmail.com>
1261
1262         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
1263         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
1264         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
1265         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
1266         * config/i386/constraints.md ("z"): New register constraint
1267         for members of SSE_FIRST_REG class.
1268         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
1269         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
1270         SSE_FIRST_REG class.
1271         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
1272         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
1273         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
1274         (IX86_BUILTIN_PCMPESTRM128): Likewise.
1275         (IX86_BUILTIN_PCMPESTRA128): Likewise.
1276         (IX86_BUILTIN_PCMPESTRC128): Likewise.
1277         (IX86_BUILTIN_PCMPESTRO128): Likewise.
1278         (IX86_BUILTIN_PCMPESTRS128): Likewise.
1279         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
1280         (IX86_BUILTIN_PCMPISTRI128): Likewise.
1281         (IX86_BUILTIN_PCMPISTRM128): Likewise.
1282         (IX86_BUILTIN_PCMPISTRA128): Likewise.
1283         (IX86_BUILTIN_PCMPISTRC128): Likewise.
1284         (IX86_BUILTIN_PCMPISTRO128): Likewise.
1285         (IX86_BUILTIN_PCMPISTRS128): Likewise.
1286         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
1287         (struct builtin_description): Change "flag" field to unsigned.
1288         (bdesc_pcmpestr): New builtin description table.
1289         (bdesc_pcmpistr): Likewise.
1290         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
1291         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
1292         Initialize pcmp[ei]str[im] insns for SSE4.2.
1293         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
1294         (ix86_expand_sse_pcmpistr): Likewise.
1295         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
1296         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
1297         (UNSPEC_PCMPISTR): Likewise.
1298         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
1299         (sse4_2_pcmpestri):New isns pattern.
1300         (sse4_2_pcmpestrm): Likewise.
1301         (sse4_2_pcmpestr_cconly): Likewise.
1302         (sse4_2_pcmpistr): New insn patern and splitter.
1303         (sse4_2_pcmpistri):New isns pattern.
1304         (sse4_2_pcmpistrm): Likewise.
1305         (sse4_2_pcmpistr_cconly): Likewise.
1306         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
1307         in SSE4.2.
1308
1309 2007-06-01  David Daney  <ddaney@avtrex.com>
1310
1311         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
1312         LOADGP_ABSOLUTE and not binds_local_p.
1313
1314 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
1315
1316         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
1317
1318 2007-06-01  Ian Lance Taylor  <iant@google.com>
1319
1320         * tree-vrp.c (compare_name_with_value): Always set
1321         used_strict_overflow if we get a result from the variable itself.
1322
1323 2007-06-01  Ian Lance Taylor  <iant@google.com>
1324
1325         PR rtl-optimization/31455
1326         * lower-subreg.c (find_decomposable_subregs): Don't decompose
1327         subregs which have a cast between modes which are not tieable.
1328
1329 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
1330
1331         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
1332         breaks after return statements.
1333
1334 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
1335
1336         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
1337         only after no_new_pseudos.
1338
1339 2007-05-31  Eric Christopher  <echristo@apple.com>
1340
1341         * expr.c (convert_move): Assert that we don't have a BLKmode
1342         operand.
1343         (store_expr): Handle BLKmode moves by calling emit_block_move.
1344
1345 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
1346
1347         * c-typeck.c (build_indirect_ref): Include type in error message.
1348         (build_binary_op): Pass types to binary_op_error.
1349         * c-common.c (binary_op_error): Take two type arguments, print out
1350         types with error.
1351         * c-common.h (binary_op_error): Update prototype.
1352
1353 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1354
1355         * config/i386/i386.c: Correct coments on -mno-sse4.
1356
1357 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1358
1359         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
1360         (x86_64-*-*): Likewise.
1361         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
1362         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
1363         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
1364         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
1365         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
1366         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
1367         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
1368         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
1369         (OPTION_MASK_ISA_SSE4): Likewise.
1370         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
1371         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
1372         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
1373         (override_options): Support SSE4.2.
1374         (ix86_build_const_vector): Support SImode and DImode.
1375         (ix86_build_signbit_mask): Likewise.
1376         (ix86_expand_int_vcond): Support V2DImode.
1377         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
1378         (IX86_BUILTIN_CRC32HI): Likewise.
1379         (IX86_BUILTIN_CRC32SI): Likewise.
1380         (IX86_BUILTIN_CRC32DI): Likewise.
1381         (IX86_BUILTIN_PCMPGTQ): Likewise.
1382         (bdesc_crc32): Likewise.
1383         (bdesc_sse_3arg): Likewise.
1384         (ix86_expand_crc32): Likewise.
1385         (ix86_init_mmx_sse_builtins): Support SSE4.2.
1386         (ix86_expand_builtin): Likewise.
1387         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
1388         __SSE4_2__ for -msse4.2.
1389         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
1390         (CRC32MODE): Likewise.
1391         (crc32modesuffix): Likewise.
1392         (crc32modeconstraint): Likewise.
1393         (sse4_2_crc32<mode>): Likewise.
1394         (sse4_2_crc32di): Likewise.
1395         * config/i386/i386.opt (msse4.2): New for SSE4.2.
1396         (msse4): Likewise.
1397         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
1398         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
1399         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
1400         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
1401         (vcondu<mode>): Likewise.
1402         * doc/extend.texi: Document SSE4.2 built-in functions.
1403         * doc/invoke.texi: Document -msse4.2/-msse4.
1404
1405 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
1406
1407         PR tree-optimization/32160
1408         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
1409         variable as gimple reg.
1410         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
1411
1412 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
1413
1414         * gcc.c (main): Don't consider linker options when issuing the
1415         warning about a linker input file not being used.
1416
1417 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1418
1419         * tree-vrp.c (compare_names): Initialize sop.
1420
1421 2007-05-30  Dirk Mueller  <dmueller@suse.de>
1422
1423         * cgraphunit.c (cgraph_analyze_function): Remove
1424         computation of inline parameters.
1425
1426 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
1427
1428         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
1429
1430 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
1431
1432         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
1433         Add vx-common.h.  Include vxworks.h between vx-common.h and
1434         arm/vxworks.h.
1435         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
1436         redefining.
1437         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
1438         (TARGET_ASM_DESTRUCTOR): Likewise.
1439         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
1440         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
1441         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
1442         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
1443         (VXWORKS_ENDIAN_SPEC): Define.
1444         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
1445         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
1446         VXWORKS_* equivalents.
1447         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
1448         (ASM_FILE_START): Delete.
1449         (TARGET_VERSION): Reformat.
1450         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
1451         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
1452         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
1453         (FPBIT, DPBIT): Define.
1454         (fp-bit.c, dp-bit.c): New rules.
1455         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
1456         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
1457         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
1458         * config/arm/arm.h: Include vxworks-dummy.h.
1459         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
1460         Mark with ATTRIBUTE_UNUSED.
1461         (arm_override_options): Do not allow VxWorks RTP PIC to be used
1462         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
1463         make it incompatible with -msingle-pic-base.
1464         (arm_function_ok_for_sibcall): Return false for calls that might
1465         go through a VxWorks PIC PLT entry.
1466         (require_pic_register): New function, split out from...
1467         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
1468         for VxWorks RTPs.
1469         (arm_load_pic_register): Handle the VxWorks RTP initialization
1470         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
1471         (arm_emit_call_insn): New function.
1472         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
1473         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
1474         (pic_offset_arm): New pattern.
1475         (call, call_value): Use arm_emit_call_insn.
1476         (call_internal, call_value_internal): New expanders.
1477         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
1478         VxWorks unless __PIC__.
1479
1480 2007-05-30  Eric Christopher  <echristo@gmail.com>
1481
1482         * genrecog.c: Include regs.h in generated file.
1483         * genemit.c: Ditto. Fix up formatting.
1484         * config/mn10300/constraints.md: New.
1485         * config/mn10300/mn10300.md: Include.
1486         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
1487         Fix up for removed macro.
1488         * config/mn10300/predicates.md (call_address_operand):  Ditto.
1489         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
1490         (CONST_OK_FOR_I): Ditto.
1491         (CONST_OK_FOR_J): Ditto.
1492         (CONST_OK_FOR_K): Ditto.
1493         (CONST_OK_FOR_L): Ditto.
1494         (CONST_OK_FOR_M): Ditto.
1495         (CONST_OK_FOR_N): Ditto.
1496         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
1497         (OK_FOR_Q): Ditto.
1498         (OK_FOR_R): Ditto.
1499         (OK_FOR_T): Ditto.
1500         (EXTRA_CONSTRAINT): Ditto.
1501
1502 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
1503
1504         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
1505         Remove defines.
1506         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
1507         OPTION_MASK_ISA_64BIT.
1508         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
1509
1510 2007-05-30  Richard Guenther  <rguenther@suse.de>
1511
1512         PR middle-end/32152
1513         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
1514         types for comparison.
1515         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
1516         with original typed arguments.
1517         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
1518
1519 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
1520
1521         PR tree-optimization/31769
1522         * except.c (duplicate_eh_regions): Clear prev_try if
1523         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
1524
1525 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
1526
1527         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
1528         * tree-ssa-sink.c (statement_sink_location): Return basic block and
1529         bsi of the location where statements should be inserted.
1530         (sink_code_in_bb): Take bsi from statement_sink_location.
1531         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
1532         instead of bsi_start.
1533         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
1534         bsi_insert_after.
1535         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
1536         (bsi_move_before): Document inconsistency with bsi_move_after.
1537         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
1538
1539 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
1540
1541         * config/i386/i386.h (TARGET_ABM): New define.
1542         (TARGET_POPCNT): Ditto.
1543         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
1544         New temporary defines to redefine from OPTION_ISA_* defines.
1545         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
1546         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
1547         (ix86_isa_flags): New extern int declaration.
1548         (TARGET_SUBTARGET_DEFAULT): New define.
1549         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
1550         (TARGET_SUBTARGET32_DEFAULT): Ditto.
1551         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
1552         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
1553         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
1554         * config/i386/darwin.h: Change TARGET_64BIT define to
1555         OPTION_ISA_64BIT.
1556
1557         * config/i386/i386.opt (m3dnowa): Define as undocumented option
1558         using existing "ix86_isa_flags" varible.
1559         (m32, m64): Use existing "ix86_isa_flags" variable.
1560         (mmmx, m3dnow): Ditto.
1561         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
1562         (mabm): Define as non-negative option using "x86_abm" variable.
1563         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
1564
1565         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
1566         Rewrite feature test bitmap.
1567         (ix86_isa_flags): New initialized global int varible.
1568         (ix86_isa_flags_explicit): New static int variable.
1569         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
1570         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
1571         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
1572         target_flags_explicit.
1573         (override_options): Remove "target_enable" and "target_disable" fields
1574         from "struct ptt". Update processor_target_table accordingly. Remove
1575         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
1576         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
1577         "target_flags" and "ix86_isa_flags_explicit" instead of
1578         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
1579         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
1580         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
1581         to true when either of PTA_POPCNT or PTA_ABM is set in
1582         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
1583         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
1584         processor_alias_table flags entry.  Remove handling of
1585         "target_enable" and "target_disable" fields of processor_target_table.
1586         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
1587         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
1588         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
1589         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
1590         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
1591         "target_flags".
1592         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
1593
1594 2007-05-29  David Daney  <ddaney@avtrex.com>
1595
1596         PR gcc/31975
1597         * config/mips/mips.c (mips_output_mi_thunk): Emit
1598         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
1599
1600 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
1601         * config/i386/i386.c (ix86_function_regparm): Added checking of
1602         ix86_force_align_arg_pointer to determine the number of
1603         register parameters.
1604
1605 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
1606
1607         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
1608         (SET_DR_MISALIGNMENT): New.
1609         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
1610         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
1611         Use SET_DR_MISALIGNMENT.
1612         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
1613         pointer.
1614         * tree-data-ref.c (create_data_ref, compute_all_dependences,
1615         find_loop_nest): Export.
1616         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
1617         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
1618         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
1619         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
1620         New macros.
1621         (struct mem_ref): Add field reuse_distance.
1622         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
1623         Initialize reuse_distance field.
1624         (issue_prefetch_ref): Select temporality of prefetch according to
1625         reuse_distance.
1626         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
1627         self_reuse_distance, determine_loop_nest_reuse): New functions.
1628         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
1629         (tree_ssa_prefetch_arrays): Dump L2 cache size.
1630         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
1631         dependency.
1632
1633 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
1634
1635         * tree-ssa-alias.c: Add aliasing overview.
1636
1637 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
1638             Danny Smith  <dannysmith@users.sourceforge.net>
1639
1640         PR target/29498
1641         * config/i386/t-crtfm: Compile crtfastmath.o with
1642         -minline-all-stringops.
1643         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
1644         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
1645
1646 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1647
1648         * doc/md.texi: Document constraints on HP PA-RISC.
1649
1650         * pa/constraints.md: New file.
1651         * pa.md: Include constraints.md.
1652         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
1653         (integer_store_memory_operand, ldil_cint_p): New functions.
1654         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
1655         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
1656         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
1657         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
1658         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
1659
1660 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
1661
1662         PR c/31339
1663         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
1664         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
1665         case POSTDECREMENT_EXPR>): Return the error_mark_node
1666         if either the real or imaginary parts would an
1667         error_mark_node.
1668
1669 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
1670
1671         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
1672         name when we remove it from a call.
1673
1674 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
1675
1676         * targhooks.c (default_narrow_bitfield): Remove.
1677         * targhooks.h: Remove the prototype for
1678         default_narrow_bitfield.
1679
1680         * langhooks-def.h: Remove the prototype for
1681         hook_get_alias_set_0.
1682         * langhooks.c (hook_get_alias_set_0): Remove.
1683
1684         * global.c (EXECUTE_IF_CONFLICT): Remove.
1685
1686 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1687
1688         PR tree-opt/32100
1689         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
1690         return true when truth_value_p is true and the type
1691         is of signed:1.
1692
1693 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
1694
1695         * doc/install.texi (Prerequisites): We no longer require Autoconf
1696         2.13 for the top-level.
1697
1698 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
1699
1700         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
1701         memory access via x86_expand_vector_move_misalign() only for
1702         TImode values on 32-bit targets.
1703
1704 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
1705
1706         * matrix-reorg.c: New file. Implement matrix flattening and
1707         transposing optimization.
1708         * tree-pass.h: Add matrix reorg pass.
1709         * common.opt: Add fipa-mreorg flag.
1710         * Makefile.in: Add matrix-reorg.c.
1711         * passes.c: Add matrix reorg pass.
1712         * varpool.c (add_new_static_var): New function.
1713         * cgraph.h (add_new_static_var): Declare.
1714
1715 2007-05-27  Eric Christopher  <echristo@apple.com>
1716
1717         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
1718         sp_offset depending on stack size. Save r12 depending
1719         on registers we're saving later.
1720         (rs6000_emit_epilogue): Update sp_offset depending only
1721         on stack size.
1722
1723 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
1724
1725         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
1726         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
1727         * ifcvt.c (if_convert): Ditto.
1728         * tree-ssa-threadupdate.c (thread_block): Ditto.
1729         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
1730         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
1731         verify_loop_closed_ssa): Check number_of_loops instead of
1732         current_loops.
1733         * predict.c (tree_estimate_probability): Ditto.
1734         * tree-if-conv.c (main_tree_if_conversion): Ditto.
1735         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
1736         * modulo-sched.c (sms_schedule): Ditto.
1737         * tree-scalar-evolution.c (scev_const_prop): Ditto.
1738         (scev_finalize): Do not do anything if scev analysis was not
1739         initialized.
1740         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
1741         current_loops == NULL.
1742         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
1743         * loop-init.c (loop_optimizer_init): Do not free current_loops when
1744         there are no loops.
1745         (loop_optimizer_finalize): Assert that loops were analyzed.
1746         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
1747         rtl_doloop): Check number_of_loops instead of current_loops.
1748         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
1749         current_loops == NULL.
1750         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
1751         gate_tree_vectorize tree_linear_transform, check_data_deps,
1752         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
1753         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
1754         Check number_of_loops instead of current_loops.
1755         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
1756         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
1757         free loops if available.
1758         (execute_pre): Do not pass do_fre to fini_pre.
1759
1760 2007-05-27  Tobias Burnus  <burnus@net-b.de>
1761
1762         PR middle-end/32083
1763         * real.c (mpfr_from_real): Fix sign of -Inf.
1764
1765 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
1766
1767         * tree-vect-transform.c (vectorizable_conversion): Initialize
1768         tree_code variables to ERROR_MARK.
1769         (vectorizable_type_demotion): Likewise.
1770         (vectorizable_type_promotion): Likewise.
1771
1772 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
1773
1774         PR target/32065
1775         * config/i386/i386.md (movti): Handle push operands via
1776         ix86_expand_push().
1777
1778 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
1779
1780         * basic-block.h: Remove the prototype for merge_seq_blocks.
1781         * cfgcleanup.c (merge_seq_blocks): Remove.
1782
1783         * tree-flow.h: Remove the prototype for is_aliased_with.
1784         * tree-ssa-alias.c (is_aliased_with): Remove.
1785
1786 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
1787
1788         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
1789
1790         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
1791
1792         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
1793         ix86_expand_sse4_unpack if SSE4.1 is enabled.
1794         (vec_unpacks_hi_v16qi): Likewise.
1795         (vec_unpacku_lo_v16qi): Likewise.
1796         (vec_unpacks_lo_v16qi): Likewise.
1797         (vec_unpacku_hi_v8hi): Likewise.
1798         (vec_unpacks_hi_v8hi): Likewise.
1799         (vec_unpacku_lo_v8hi): Likewise.
1800         (vec_unpacks_lo_v8hi): Likewise.
1801         (vec_unpacku_hi_v4si): Likewise.
1802         (vec_unpacks_hi_v4si): Likewise.
1803         (vec_unpacku_lo_v4si): Likewise.
1804         (vec_unpacks_lo_v4si): Likewise.
1805
1806 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
1807
1808         * c-typeck.c, config/arm/arm.c, config/darwin.c,
1809         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
1810         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
1811         follow spelling conventions in various
1812         warning/error/diagnostic messages.
1813
1814         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
1815         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
1816         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
1817         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
1818         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
1819         * doc/tm.texi: Follow spelling conventions.
1820
1821 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1822
1823         PR tree-opt/32090
1824         * tree-ssa-forwprop.c
1825         (forward_propagate_addr_into_variable_array_index): Remove
1826         the lhs argument.  Use the type of def_rhs instead of lhs.
1827         (forward_propagate_addr_expr_1): Update use of
1828         forward_propagate_addr_into_variable_array_index.
1829
1830 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
1831             Nigel Stephens  <nigel@mips.com>
1832
1833         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
1834         function attributes, "far" being an alias for "long_call".
1835         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
1836         (mips_near_type_p, mips_far_type_p): New.
1837         (mips_comp_type_attributes): New function to check that attributes
1838         attached to a function type are compatible.
1839         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
1840         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
1841         to the target function of the thunk.
1842         (mips_encode_section_info): Check for "near" and "far" function
1843         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
1844
1845         * config/mips/predicates.md (const_call_insn_operand): Test only
1846         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
1847
1848         * doc/extend.texi (Function Attributes): Document MIPS "near" and
1849         "far" attributes.
1850
1851         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
1852         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
1853         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
1854         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
1855
1856 2007-05-25  Eric Christopher  <echristo@apple.com>
1857
1858         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
1859         to x86-darwin configurations.
1860         * config/i386/t-darwin: Add softfp support.
1861         * config/i386/t-darwin64: Ditto.
1862         * config/i386/sfp-machine.h: If mach then don't use
1863         aliasing, emit a stub to call.
1864
1865 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
1866
1867         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
1868         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
1869         tree-predcom.c, tree-ssa-alias-warnings.c,
1870         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
1871         comment typos.  Follow spelling conventions.
1872         * doc/cpp.texi, doc/invoke.texi: Fix typos.
1873
1874 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
1875
1876         PR target/32065
1877         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
1878         constants into memory.  Expand unaligned memory references for
1879         SSE modes via x86_expand_vector_move_misalign() function.
1880
1881 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
1882
1883         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
1884         "memory" attribute for "sseishft" type insn without operands[2].
1885
1886 2007-05-25  Dirk Mueller  <dmueller@suse.de>
1887             Marcus Meissner <meissner@suse.de>
1888
1889         * doc/extend.texi (alloc_size): New attribute.
1890         * c-common.c (handle_alloc_size_attribute): New.
1891         * tree-object-size.c (alloc_object_size): Use alloc_size
1892         attribute, if available.
1893
1894 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
1895
1896         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
1897         with MASK_SSE2.
1898         (__builtin_ia32_vec_ext_v2di): Likewise.
1899         (__builtin_ia32_vec_ext_v4si): Likewise.
1900         (__builtin_ia32_vec_ext_v8hi): Likewise.
1901         (__builtin_ia32_vec_ext_v16qi): Likewise.
1902         (__builtin_ia32_vec_set_v8hi): Likewise.
1903
1904 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
1905
1906         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
1907
1908 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
1909
1910         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
1911         (arm_is_longcall_p): Rename to...
1912         (arm_is_long_call_p): ...this.  Take a single tree argument and
1913         return a bool.
1914         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
1915         (CUMULATIVE_ARGS): Remove call_cookie.
1916         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
1917         (ENCODED_LONG_CALL_ATTR_P): Delete.
1918         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
1919         LONG_CALL_FLAG_CHAR cases.
1920         (ARM_DECLARE_FUNCTION_SIZE): Delete.
1921         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
1922         ARM_DECLARE_FUNCTION_SIZE.
1923         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
1924         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
1925         (arm_encode_call_attribute, current_file_function_operand): Delete.
1926         (arm_function_in_section_p): New function.
1927         (arm_is_longcall_p): Rename to...
1928         (arm_is_long_call_p): ...this.  Take the target function as a single
1929         argument and return a bool.  Do not rely on call cookies.  Check
1930         whether the target symbol is in the same section as the current
1931         function, not just the same compilation unit.
1932         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
1933         (arm_encode_section_info): Don't encode a call type.
1934         * config/arm/arm.md (call, call_value): Update calls to
1935         arm_is_long(_)call_p.  Simplify logic.
1936         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
1937         Update calls to arm_is_long(_)call_p.
1938
1939 2007-05-25  Richard Guenther  <rguenther@suse.de>
1940
1941         PR tree-optimization/31982
1942         * tree-ssa-forwprop.c
1943         (forward_propagate_addr_into_variable_array_index): Handle arrays
1944         with element size one.
1945
1946 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1947
1948         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
1949         (umulsi3_highpart): Likewise.
1950
1951 2007-05-24  Ian Lance Taylor  <iant@google.com>
1952
1953         PR rtl-optimization/32069
1954         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
1955         is NULL.
1956
1957 2007-05-24  Ollie Wild  <aaw@google.com>
1958
1959         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
1960         description.
1961
1962 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1963
1964         * postreload-gcse.c (reg_changed_after_insn_p): New function.
1965         (oprs_unchanged_p): Use it to check all registers in a REG.
1966         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
1967         (reg_set_between_after_reload_p): Delete.
1968         (reg_used_between_after_reload_p): Likewise.
1969         (reg_set_or_used_since_bb_start): Likewise.
1970         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
1971         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
1972         Use reg_set_between_p instead of reg_set_between_after_reload_p.
1973         * rtlanal.c (reg_set_p): Check whether REG overlaps
1974         regs_invalidated_by_call, rather than just checking the
1975         membership of REGNO (REG).
1976
1977 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
1978
1979         * doc/passes.texi: Document predictive commoning.
1980         * doc/invoke.texi (-fpredictive-commoning): Document.
1981         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
1982         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
1983         adding indices to the generated name.
1984         (schedule_sm): Pass 0 to get_lsm_tmp_name.
1985         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
1986         * tree-pretty-print.c (op_symbol_1): Renamed to ...
1987         (op_symbol_code): ... and exported.
1988         (dump_omp_clause, op_symbol): Use op_symbol_code
1989         instead of op_symbol_1.
1990         * tree-pass.h (pass_predcom): Declare.
1991         * timevar.def (TV_PREDCOM): New timevar.
1992         * tree-ssa-loop.c (run_tree_predictive_commoning,
1993         gate_tree_predictive_commoning, pass_predcom): New.
1994         * tree-data-ref.c (find_data_references_in_loop): Find the
1995         references in dominance order.
1996         (canonicalize_base_object_address): Ensure that the result has
1997         pointer type.
1998         (dr_analyze_innermost): Export.
1999         (create_data_ref): Code to fail for references with invariant
2000         address moved ...
2001         (find_data_references_in_stmt): ... here.
2002         * tree-data-ref.h (dr_analyze_innermost): Declare.
2003         * tree-affine.c: Include tree-gimple.h and hashtab.h.
2004         (aff_combination_find_elt, name_expansion_hash,
2005         name_expansion_eq, tree_to_aff_combination_expand,
2006         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
2007         New functions.
2008         * tree-affine.h (aff_combination_constant_multiple_p,
2009         tree_to_aff_combination_expand): Declare.
2010         * tree-predcom.c: New file.
2011         * common.opt (fpredictive-commoning): New option.
2012         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
2013         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
2014         * Makefile.in (tree-predcom.o): Add.
2015         (tree-affine.o): Add TREE_GIMPLE_H dependency.
2016         * passes.c (init_optimization_passes):  Add dceloop after
2017         copy propagation in loop optimizer.  Add predictive commoning
2018         to loop optimizer passes.
2019
2020 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2021
2022         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
2023         default hook.
2024
2025 2007-05-24  Jan Hubicka  <jh@suse.cz>
2026
2027         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
2028         statistics.
2029         (genheader): Include statistics.h.
2030
2031         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
2032         notes are gone.
2033         * print-rtl.c (flag_dump_unnumbered): Update comments.
2034         (print_rtl): Fix my previous change.
2035         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
2036         specific data.
2037
2038 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2039
2040         PR middle-end/32018
2041         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
2042         set_loop_copy.
2043         (thread_through_all_blocks): Call initialize_original_copy_tables
2044         and free_original_copy_tables.
2045         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
2046         Use set_loop_copy.
2047         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
2048         * cfghooks.c (duplicate_block): Use get_loop_copy.
2049         * cfg.c: Include cfgloop.h.
2050         (loop_copy): New hash table.
2051         (initialize_original_copy_tables): Initialize loop_copy table.
2052         (free_original_copy_tables): Free loop_copy table.
2053         (copy_original_table_clear, copy_original_table_set,
2054         set_loop_copy, get_loop_copy): New functions.
2055         (set_bb_original, set_bb_copy): Use copy_original_table_set.
2056         * cfgloop.h (struct loop): Remove copy field.
2057         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
2058         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
2059
2060 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2061
2062         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
2063         -msse/-msse2/-msse3.
2064
2065 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2066
2067         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
2068         __builtin_ia32_vec_set_v2di with MASK_64BIT.
2069
2070 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
2071
2072         PR target/27067
2073         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
2074         * targhooks.h (default_mangle_decl_assembler_name): Declare
2075         default hook.
2076         * targhooks.c (default_mangle_decl_assembler_name): Define
2077         default hook.
2078         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
2079         default hook.
2080         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
2081         * langhooks.c (lhd_set_decl_assembler_name): Call
2082         targetm.mangle_decl_assembler_name for names with global scope.
2083
2084         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
2085         default.
2086         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
2087         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
2088         Declare.
2089         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
2090         New. Factored out of i386_pe_encode_section_info.
2091         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
2092         Move check for prior decoration of stdcall
2093         symbols to i386_pe_encode_section_info.
2094         (i386_pe_encode_section_info): Adjust call to
2095         gen_stdcall_or_fastcall_suffix.  Use
2096         i386_pe_maybe_mangle_decl_assembler_name, if needed.
2097         (i386_pe_mangle_decl_assembler_name): New. Wrap
2098         i386_pe_maybe_mangle_decl_assembler_name.
2099
2100 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
2101
2102         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
2103         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
2104         * langhooks.c (get_signed_or_unsigned_type): Don't check for
2105         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
2106         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
2107         TYPE_UNSIGNED.
2108
2109 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
2110             Nigel Stephens  <nigel@mips.com>
2111             Richard Sandiford  <richard@codesourcery.com>
2112
2113         Fix up MIPS16 hard float and add support for complex.
2114
2115         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
2116         (TARGET_SOFT_FLOAT_ABI): New.
2117         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
2118         __mips_soft_float to reflect the ABI in use, not whether the
2119         FPU is directly accessible (e.g., in MIPS16 mode).
2120         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
2121         (UNITS_PER_FPVALUE): Likewise.
2122
2123         * config/mips/mips.c (mips_expand_call): Remove redundant
2124         TARGET_MIPS16 check.
2125         (mips_arg_regno): New.
2126         (function_arg_advance): When setting bits in cum->fp_code for
2127         MIPS16, don't subtract 1 from cum->arg_number, since it is now
2128         zero-based.
2129         (function_arg): Use mips_arg_regno.
2130         (mips_return_mode_in_fpr_p): New.
2131         (mips16_call_stub_mode_suffix): New.
2132         (mips16_cfun_returns_in_fpr_p): New.
2133         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
2134         (mips_output_function_prologue): Test mips16_hard_float, not
2135         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
2136         (mips_expand_epilogue): Call MIPS16 helper routines to copy
2137         return value into a floating-point register.
2138         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
2139         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
2140         (mips16_fp_args): Handle MIPS32r2 ISA which supports
2141         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
2142         word of double arguments from or to the high bits of 64-bit
2143         floating point registers.
2144         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
2145         (mips16_fpret_double): New helper function.
2146         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
2147         support for complex modes.  Fill in DECL_RESULT for stubdecl.
2148         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
2149
2150         * config/mips/mips16.S
2151         (RET, ARG1, ARG2): New.
2152         (MERGE_GPRf, MERGE_GPRt): New.
2153         (DELAYt, DELAYf): New.
2154         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
2155         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
2156         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
2157         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
2158         (SFOP): Renamed to...
2159         (OPSF3): This, and macro-ified.  Updated all uses.
2160         (SFOP2): Renamed to...
2161         (OPSF2): This, and macro-ified.  Updated all uses.
2162         (SFCMP): Renamed to...
2163         (CMPSF): This, and macro-ified.  Updated all uses.
2164         (SFREVCMP): Renamed to...
2165         (REVCMPSF): This, and macro-ified.  Updated all uses.
2166         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
2167         (LDDBL1, LDDBL2, RETDBL): Deleted.
2168         (DFOP): Renamed to...
2169         (OPDF3): This, and macro-ified.  Updated all uses.
2170         (DFOP2): Renamed to...
2171         (OPDF2): This, and macro-ified.  Updated all uses.
2172         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
2173         (DFCMP): Renamed to...
2174         (CMPDF): This, and macro-ified.  Updated all uses.
2175         (DFREVCMP): Renamed to...
2176         (REVCMPDF): This, and macro-ified.  Updated all uses.
2177         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
2178         (RET_FUNCTION): New.
2179         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
2180         (__mips16_ret_sc, __mips16_ret_dc): New.
2181         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
2182         STUB_ARGS_6, STUB_ARGS_10): New.
2183         (CALL_STUB_NO_RET): New.
2184         (__mips16_call_stub_1): Macro-ified.
2185         (__mips16_call_stub_5): Macro-ified.
2186         (__mips16_call_stub_2): Macro-ified.
2187         (__mips16_call_stub_6): Macro-ified.
2188         (__mips16_call_stub_9): Macro-ified.
2189         (__mips16_call_stub_10): Macro-ified.
2190         (CALL_STUB_RET): New.
2191         (__mips16_call_stub_sf_0): Macro-ified.
2192         (__mips16_call_stub_sf_1): Macro-ified.
2193         (__mips16_call_stub_sf_5): Macro-ified.
2194         (__mips16_call_stub_sf_2): Macro-ified.
2195         (__mips16_call_stub_sf_6): Macro-ified.
2196         (__mips16_call_stub_sf_9): Macro-ified.
2197         (__mips16_call_stub_sf_10): Macro-ified.
2198         (__mips16_call_stub_df_0): Macro-ified.
2199         (__mips16_call_stub_df_1): Macro-ified.
2200         (__mips16_call_stub_df_5): Macro-ified.
2201         (__mips16_call_stub_df_2): Macro-ified.
2202         (__mips16_call_stub_df_6): Macro-ified.
2203         (__mips16_call_stub_df_9): Macro-ified.
2204         (__mips16_call_stub_df_10): Macro-ified.
2205         (__mips16_call_stub_sc_0): New.
2206         (__mips16_call_stub_sc_1): New.
2207         (__mips16_call_stub_sc_5): New.
2208         (__mips16_call_stub_sc_2): New.
2209         (__mips16_call_stub_sc_6): New.
2210         (__mips16_call_stub_sc_9): New.
2211         (__mips16_call_stub_sc_10): New.
2212         (__mips16_call_stub_dc_0): New.
2213         (__mips16_call_stub_dc_1): New.
2214         (__mips16_call_stub_dc_5): New.
2215         (__mips16_call_stub_dc_2): New.
2216         (__mips16_call_stub_dc_6): New.
2217         (__mips16_call_stub_dc_9): New.
2218         (__mips16_call_stub_dc_10): New.
2219
2220         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
2221         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
2222         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
2223
2224 2007-05-23  Ian Lance Taylor  <iant@google.com>
2225
2226         * doc/invoke.texi (Invoking GCC): Document that the order of the
2227         -l option matters.
2228
2229 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
2230
2231         PR target/30987
2232         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
2233         * config/score/predicate.md (const_pow2, const_npow2): Remove.
2234         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
2235         undef.
2236
2237         PR target/30474
2238         * config/score/score.c (score_print_operand): Make sure that only
2239         lower bits are used.
2240
2241 2007-05-22  Ian Lance Taylor  <iant@google.com>
2242
2243         * tree-vrp.c (avoid_overflow_infinity): New static function,
2244         broken out of set_value_range_to_value.
2245         (set_value_range_to_value): Call avoid_overflow_infinity.
2246         (extract_range_from_assert): Likewise.
2247
2248 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2249
2250         PR middle-end/31095
2251          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
2252         change the type before looking for a COMPOUND_EXPR.
2253
2254 2007-05-22  Ian Lance Taylor  <iant@google.com>
2255
2256         * lower-subreg.c (decompose_multiword_subregs): If we change an
2257         insn, call remove_retval_note on it.
2258
2259 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2260
2261         * regs.h (end_hard_regno): New function.
2262         (END_HARD_REGNO, END_REGNO): New macros.
2263         (add_to_hard_reg_set): New function.
2264         (remove_from_hard_reg_set): Likewise.
2265         (in_hard_reg_set_p): Likewise.
2266         (overlaps_hard_reg_set_p): Likewise.
2267         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
2268         (note_btr_set): Use END_HARD_REGNO.
2269         * caller-save.c (setup_save_areas): Use end_hard_regno.
2270         (mark_set_regs): Use END_HARD_REGNO.
2271         (add_stored_regs): Use end_hard_regno.
2272         (mark_referenced_regs): Use add_to_hard_reg_set.
2273         * combine.c (update_table_tick): Use END_REGNO.
2274         (record_value_for_reg): Likewise.
2275         (record_dead_and_set_regs): Likewise.
2276         (get_last_value_validate): Likewise.
2277         (use_crosses_set_p): Likewise.
2278         (reg_dead_at_p_1): Likewise.
2279         (reg_dead_at_p): Likewise.
2280         (mark_used_regs_combine): Use add_to_hard_reg_set.
2281         (move_deaths): Use END_HARD_REGNO.
2282         (reg_bitfield_target_p): Use end_hard_regno.
2283         (distribute_notes): Use END_HARD_REGNO.
2284         * cse.c (mention_regs): Use END_REGNO.
2285         (insert): Use add_to_hard_reg_set.
2286         (invalidate): Use END_HARD_REGNO.
2287         (invalidate_for_call): Likewise.
2288         (exp_equiv_p): Use END_REGNO.
2289         (cse_insn): Likewise.
2290         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
2291         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
2292         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
2293         * function.c (keep_stack_depressed): Use end_hard_regno.
2294         * global.c (global_alloc): Use end_hard_regno.
2295         (global_conflicts): Use add_to_hard_reg_set instead of
2296         mark_reg_live_nc.
2297         (find_reg): Likewise.
2298         (mark_reg_store): Likewise.
2299         (mark_reg_conflicts): Likewise.
2300         (mark_reg_death): Use remove_from_hard_reg_set.
2301         (mark_reg_live_nc): Delete.
2302         (set_preference): Use end_hard_regno.
2303         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
2304         remove_from_hard_reg_set.
2305         (post_mark_life): Use add_to_hard_reg_set.
2306         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
2307         (reg_becomes_live): Use add_to_hard_reg_set.
2308         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
2309         (peep2_find_free_register): Use add_to_hard_reg_set.
2310         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
2311         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
2312         * regrename.c (note_sets): Use add_to_hard_reg_set.
2313         (clear_dead_regs): Use remove_from_hard_reg_set.
2314         (regrename_optimize): Use add_to_hard_reg_set.
2315         (find_oldest_value_reg): Use in_hard_reg_set_p.
2316         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
2317         (hard_reg_set_here_p): Use end_hard_regno.
2318         (decompose): Likewise.
2319         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
2320         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
2321         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
2322         (mark_home_live): Use end_hard_regno.
2323         (spill_hard_reg): Likewise.
2324         (clear_reload_reg_in_use): Likewise.
2325         * reorg.c (delete_prior_computation): Use END_REGNO.
2326         * resource.c (update_live_status): Use END_HARD_REGNO.
2327         (mark_referenced_resources): Use add_to_hard_reg_set.
2328         (mark_set_resources): Likewise.
2329         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
2330         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
2331         (reg_overlap_mentioned_p): Likewise.
2332         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
2333         (covers_regno_no_parallel_p): Use END_REGNO.
2334         (find_regno_note): Likewise.
2335         (find_reg_fusage): Use END_HARD_REGNO.
2336         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
2337         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
2338
2339 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2340
2341         * mode-switching.c (reg_dies): Change type of second argument to
2342         "HARD_REG_SET *".
2343         (optimize_mode_switching): Update accordingly.
2344
2345 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
2346
2347         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
2348         in favor of...
2349         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
2350         (hard_reg_set_empty_p): ...these new functions.
2351         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
2352         GO_IF_HARD_REG_SUBSET.
2353         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
2354         instead of GO_IF_HARD_REG_EQUAL.
2355         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
2356         instead of GO_IF_HARD_REG_EQUAL.
2357         * global.c (find_reg): Use hard_reg_set_empty_p instead of
2358         GO_IF_HARD_REG_SUBSET.
2359         (modify_reg_pav): Use hard_reg_set_empty_p instead of
2360         GO_IF_HARD_REG_EQUAL.
2361         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
2362         of GO_IF_HARD_REG_SUBSET.
2363         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
2364         instead of GO_IF_HARD_REG_EQUAL.
2365         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
2366         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
2367         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
2368         of GO_IF_HARD_REG_SUBSET,
2369         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
2370         GO_IF_HARD_REG_SUBSET.
2371         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
2372         instead of GO_IF_HARD_REG_EQUAL.
2373         * config/sh/sh.c (push_regs, calc_live_regs): Use
2374         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
2375         (hard_regs_intersect_p): Delete.
2376
2377 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
2378
2379         * doc/sourcebuild.texi (Test Directives) Add dg-message.
2380
2381 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
2382             Richard Henderson  <rth@redhat.com>
2383
2384         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
2385         extra_headers.
2386         (x86_64-*-*): Likewise.
2387
2388         * i386/i386-modes.def (V2QI): New.
2389
2390         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
2391         SSE4A.
2392         (override_options): Support SSE4.1.
2393         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
2394         (IX86_BUILTIN_BLENDPS): Likewise.
2395         (IX86_BUILTIN_BLENDVPD): Likewise.
2396         (IX86_BUILTIN_BLENDVPS): Likewise.
2397         (IX86_BUILTIN_PBLENDVB128): Likewise.
2398         (IX86_BUILTIN_PBLENDW128): Likewise.
2399         (IX86_BUILTIN_DPPD): Likewise.
2400         (IX86_BUILTIN_DPPS): Likewise.
2401         (IX86_BUILTIN_INSERTPS128): Likewise.
2402         (IX86_BUILTIN_MOVNTDQA): Likewise.
2403         (IX86_BUILTIN_MPSADBW128): Likewise.
2404         (IX86_BUILTIN_PACKUSDW128): Likewise.
2405         (IX86_BUILTIN_PCMPEQQ): Likewise.
2406         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
2407         (IX86_BUILTIN_PMAXSB128): Likewise.
2408         (IX86_BUILTIN_PMAXSD128): Likewise.
2409         (IX86_BUILTIN_PMAXUD128): Likewise.
2410         (IX86_BUILTIN_PMAXUW128): Likewise.
2411         (IX86_BUILTIN_PMINSB128): Likewise.
2412         (IX86_BUILTIN_PMINSD128): Likewise.
2413         (IX86_BUILTIN_PMINUD128): Likewise.
2414         (IX86_BUILTIN_PMINUW128): Likewise.
2415         (IX86_BUILTIN_PMOVSXBW128): Likewise.
2416         (IX86_BUILTIN_PMOVSXBD128): Likewise.
2417         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
2418         (IX86_BUILTIN_PMOVSXWD128): Likewise.
2419         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
2420         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
2421         (IX86_BUILTIN_PMOVZXBW128): Likewise.
2422         (IX86_BUILTIN_PMOVZXBD128): Likewise.
2423         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
2424         (IX86_BUILTIN_PMOVZXWD128): Likewise.
2425         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
2426         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
2427         (IX86_BUILTIN_PMULDQ128): Likewise.
2428         (IX86_BUILTIN_PMULLD128): Likewise.
2429         (IX86_BUILTIN_ROUNDPD): Likewise.
2430         (IX86_BUILTIN_ROUNDPS): Likewise.
2431         (IX86_BUILTIN_ROUNDSD): Likewise.
2432         (IX86_BUILTIN_ROUNDSS): Likewise.
2433         (IX86_BUILTIN_PTESTZ): Likewise.
2434         (IX86_BUILTIN_PTESTC): Likewise.
2435         (IX86_BUILTIN_PTESTNZC): Likewise.
2436         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
2437         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
2438         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
2439         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
2440         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
2441         (bdesc_ptest): New.
2442         (bdesc_sse_3arg): Likewise.
2443         (bdesc_2arg): Likewise.
2444         (bdesc_1arg): Likewise.
2445         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
2446         with 3 args.
2447         (ix86_expand_sse_4_operands_builtin): New.
2448         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
2449         smaller than 8 bits as the 2nd arg.
2450         (ix86_expand_sse_ptest): New.
2451         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
2452         (ix86_expand_vector_set): Support SSE4.1.
2453         (ix86_expand_vector_extract): Likewise.
2454
2455         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2456         __SSE4_1__ for -msse4.1.
2457
2458         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
2459         (UNSPEC_INSERTPS): Likewise.
2460         (UNSPEC_DP): Likewise.
2461         (UNSPEC_MOVNTDQA): Likewise.
2462         (UNSPEC_MPSADBW): Likewise.
2463         (UNSPEC_PHMINPOSUW): Likewise.
2464         (UNSPEC_PTEST): Likewise.
2465         (UNSPEC_ROUNDP): Likewise.
2466         (UNSPEC_ROUNDS): Likewise.
2467
2468         * config/i386/i386.opt (msse4.1): New for SSE4.1.
2469
2470         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
2471         (const_pow2_1_to_32768_operand): Likewise.
2472
2473         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
2474         file.
2475
2476         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
2477         SSE4.1.
2478         (sse4_1_insertps): Likewise.
2479         (*sse4_1_extractps): Likewise.
2480         (sse4_1_ptest): Likewise.
2481         (sse4_1_mulv2siv2di3): Likewise.
2482         (*sse4_1_mulv4si3): Likewise.
2483         (*sse4_1_smax<mode>3): Likewise.
2484         (*sse4_1_umax<mode>3): Likewise.
2485         (*sse4_1_smin<mode>3): Likewise.
2486         (*sse4_1_umin<mode>3): Likewise.
2487         (sse4_1_eqv2di3): Likewise.
2488         (*sse4_1_pinsrb): Likewise.
2489         (*sse4_1_pinsrd): Likewise.
2490         (*sse4_1_pinsrq): Likewise.
2491         (*sse4_1_pextrb): Likewise.
2492         (*sse4_1_pextrb_memory): Likewise.
2493         (*sse4_1_pextrw_memory): Likewise.
2494         (*sse4_1_pextrq): Likewise.
2495         (sse4_1_blendpd): Likewise.
2496         (sse4_1_blendps): Likewise.
2497         (sse4_1_blendvpd): Likewise.
2498         (sse4_1_blendvps): Likewise.
2499         (sse4_1_dppd): Likewise.
2500         (sse4_1_dpps): Likewise.
2501         (sse4_1_movntdqa): Likewise.
2502         (sse4_1_mpsadbw): Likewise.
2503         (sse4_1_packusdw): Likewise.
2504         (sse4_1_pblendvb): Likewise.
2505         (sse4_1_pblendw): Likewise.
2506         (sse4_1_phminposuw): Likewise.
2507         (sse4_1_extendv8qiv8hi2): Likewise.
2508         (*sse4_1_extendv8qiv8hi2): Likewise.
2509         (sse4_1_extendv4qiv4si2): Likewise.
2510         (*sse4_1_extendv4qiv4si2): Likewise.
2511         (sse4_1_extendv2qiv2di2): Likewise.
2512         (*sse4_1_extendv2qiv2di2): Likewise.
2513         (sse4_1_extendv4hiv4si2): Likewise.
2514         (*sse4_1_extendv4hiv4si2): Likewise.
2515         (sse4_1_extendv2hiv2di2): Likewise.
2516         (*sse4_1_extendv2hiv2di2): Likewise.
2517         (sse4_1_extendv2siv2di2): Likewise.
2518         (*sse4_1_extendv2siv2di2): Likewise.
2519         (sse4_1_zero_extendv8qiv8hi2): Likewise.
2520         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
2521         (sse4_1_zero_extendv4qiv4si2): Likewise.
2522         (*sse4_1_zero_extendv4qiv4si2): Likewise.
2523         (sse4_1_zero_extendv2qiv2di2): Likewise.
2524         (*sse4_1_zero_extendv2qiv2di2): Likewise.
2525         (sse4_1_zero_extendv4hiv4si2): Likewise.
2526         (*sse4_1_zero_extendv4hiv4si2): Likewise.
2527         (sse4_1_zero_extendv2hiv2di2): Likewise.
2528         (*sse4_1_zero_extendv2hiv2di2): Likewise.
2529         (sse4_1_zero_extendv2siv2di2): Likewise.
2530         (*sse4_1_zero_extendv2siv2di2): Likewise.
2531         (sse4_1_roundpd): Likewise.
2532         (sse4_1_roundps): Likewise.
2533         (sse4_1_roundsd): Likewise.
2534         (sse4_1_roundss): Likewise.
2535         (mulv4si3): Don't expand for SSE4.1.
2536         (smax<mode>3): Likewise.
2537         (umaxv4si3): Likewise.
2538         (uminv16qi3): Likewise.
2539         (umin<mode>3): Likewise.
2540         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
2541
2542         * doc/extend.texi: Document SSE4.1 built-in functions.
2543
2544         * doc/invoke.texi: Document -msse4.1.
2545
2546 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
2547
2548         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
2549         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
2550         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
2551         (ASM_SPEC): Add asm_pcrel_spec.
2552         (EXTRA_SPECS): Add asm_pcrel_spec.
2553
2554 2007-05-21  David Daney  <ddaney@avtrex.com>
2555
2556         * doc/install.texi (Building a cross compiler): Add requirements
2557         for Java cross compiler.
2558
2559 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2560
2561         PR middle-end/31995
2562         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
2563         Add loopno argument.  Use evolution_function_is_invariant_rec_p
2564         instead of evolution_function_is_constant_p.
2565         Update calls to evolution_function_is_affine_multivariate_p.
2566         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
2567         Add loopno argument.
2568         * tree-scalar-evolution.c (gather_chrec_stats): Call
2569         evolution_function_is_affine_multivariate_p with a loop
2570         number of 0.
2571         * tree-data-ref.c (analyze_miv_subscript): Likewise.
2572         (analyze_overlapping_iterations): Likewise.
2573         (access_functions_are_affine_or_constant_p): Likewise.
2574         (build_classic_dist_vector_1): If the access functions
2575         are equal, don't do anything.
2576
2577 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
2578             Paolo Carlini  <pcarlini@suse.de>
2579             Uros Bizjak  <ubizjak@gmail.com>
2580
2581         * c-cppbuiltin.c (c_cpp_builtins): Define
2582         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
2583         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
2584         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
2585         * doc/cpp.texi ([Standard Predefined Macros]): Document.
2586
2587 2007-05-21  Mike Stump  <mrs@apple.com>
2588
2589         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
2590         handling as well.
2591         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
2592
2593 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
2594
2595         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
2596         implementation if __OPTIMIZE__ is not defined.
2597         (_mm_alignr_pi8): Ditto.
2598         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
2599         (_mm_inserti_si64): Ditto.
2600         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
2601         (_mm_slli_epi16): Ditto.
2602         (_mm_slli_epi32): Ditto.
2603         (_mm_slli_epi64): Ditto.
2604         (_mm_srai_epi16): Ditto.
2605         (_mm_srai_epi32): Ditto.
2606         (_mm_srli_si128): Ditto.
2607         (_mm_slli_si128): Ditto.
2608         (_mm_srli_epi16): Ditto.
2609         (_mm_srli_epi32): Ditto.
2610         (_mm_srli_epi64): Ditto.
2611         (_mm_extract_epi16): Ditto.
2612         (_mm_insert_epi16): Ditto.
2613         (_mm_shufflehi_epi16): Ditto.
2614         (_mm_shufflelo_epi16): Ditto.
2615         (_mm_shuffle_epi32): Ditto.
2616         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
2617         (_m_pextrw): Ditto.
2618         (_mm_insert_pi16): Ditto.
2619         (_m_pinsrw): Ditto.
2620         (_mm_shuffle_pi16): Ditto.
2621         (_m_pshufw): Ditto.
2622         (_mm_shufle_ps): Ditto.
2623         (_mm_prefetch): Ditto.
2624
2625 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
2626
2627         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
2628         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
2629         * real.c (encode_i370_single, decode_i370_single,
2630         encode_i370_double, decode_i370_double): Functions removed.
2631         (i370_single_format, i370_double_format): Initializations removed.
2632         (real_maxval, round_for_format, exact_real_truncate, significand_size):
2633         Consider the log2_b field to always be one.
2634         (ieee_single_format, mips_single_format, coldfire_single_format,
2635         ieee_double_format, mips_double_format, coldfire_double_format,
2636         ieee_extended_motorola_format, ieee_extended_intel_96_format,
2637         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
2638         ibm_extended_format, mips_extended_format, ieee_quad_format,
2639         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
2640         decimal_single_format, decimal_double_format, decimal_quad_format,
2641         c4x_single_format, c4x_extended_format, real_internal_format): Remove
2642         initialization of log2_b.
2643         * real.h (i370_single_format, i370_double_format): Declarations removed.
2644         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
2645         field to always be one.
2646
2647 2007-05-21  Andreas Schwab  <schwab@suse.de>
2648
2649         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
2650         NOTE_INSN_BASIC_BLOCK_P.
2651         (process_for_unwind_directive): Likewise.
2652
2653 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
2654
2655         * builtins.c (expand_builtin_setjmp_setup): Update comment.
2656         * function.h (struct function): Move va_list_gpr_size,
2657         va_list_fpr_size, function_frequency to front of bitfields.  Add
2658         calls_unwind_init.
2659         (current_function_calls_unwind_init): New.
2660         * except.c (expand_builtin_unwind_init): Set
2661         current_function_calls_unwind_init not
2662         current_function_has_nonlocal_label.
2663         * reload1.c (has_nonexceptional_receiver): New.
2664         (reload): Use it and current_function_calls_unwind_init to
2665         determine whether call-saved regs must be saved.
2666
2667 2007-05-20  Jan Hubicka  <jh@suse.cz>
2668
2669         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
2670         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
2671         * ddg.c (create_ddg): LIkewise.
2672         * final.c (final): Remove hunk moving line numbernotes around since
2673         they are no longer present at this stage.
2674         (final_scan_insn): Use NOTE_KIND instead of
2675         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
2676         (output_asm_label): Likewise.
2677         * reorg.c (dbr_schedule): Likewise.
2678         * haifa-sched.c (unlink_other_notes): Likewise.
2679         * mode-switching.c (optimize_mode_switching): Likewise.
2680         * graph.c (start_bb): Likewise.
2681         * rtl.def (NOTE): Update description.
2682         * jump.c (squeeze_notes): Delete.
2683         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
2684         NOTE_INSN_BASIC_BLOCK_P when possible.
2685         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
2686         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
2687         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
2688         (dwarf2out_var_location): Likewise.
2689         * cfgbuild.c (make_edges): Likewise.
2690         (find_basic_blocks_1): Likewise.
2691         * function.c (reorder_blocks_1): Likewise.
2692         (epilogue_done): Likewise.
2693         (reposition_prologue_and_epilogue_notes): Likewise.
2694         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
2695         notes.
2696         (print_rtl): Likewise.
2697         (print_rtl_single): Likewise.
2698         * gcse.c (insert_insn_start_bb): Likewise.
2699         * alias.c (init_alias_analysis): Likewise.
2700         * calls.c (fixup_tail_calls): Likewise.
2701         * except.c (sjlj_emit_function_enter): Likewise.
2702         * emit-rtl.c (add_insn_after): Likeiwse.
2703         (emit_label_before): Likewise.
2704         (emit_label_after): Likewise.
2705         (emit_note_before, emit_note_after, emit_note): Update
2706         parameter to be enum insn_note; do not deal with source
2707         files.
2708         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
2709         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
2710         when possible.
2711         (merge_blocks_move_successor_nojumps): Simplify now when
2712         we don't have BLOCK notes.
2713         (try_optimize_cfg): Likewise.
2714         * cfglayout.c (skip_insns_after_block): Likewise.
2715         (record_effective_endpoints): Likewise.
2716         (duplicate_insn_chain): Likewise.
2717         * varasm.c (output_constant_pool_1): Likewise.
2718         * sched-deps.c (sched_analyze): Likewise.
2719         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
2720         Exterminate.
2721         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
2722         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
2723         (SET_INSN_DELETED): Simplify.
2724         (NOTE_LINE_NUMBER): Exterminate.
2725         (NOTE_LINE_KIND): New.
2726         (NOTE_INSN_BASIC_BLOCK_P): Update.
2727         (enum insn_note): Simplify.
2728         (GET_NOTE_INSN_NAME) Simplify.
2729         (emit_note_before, emit_note_after, emit_note): Update prototype.
2730         (squeeze_notes): Remove.
2731         * sched-int.h (NOTE_NOT_BB_P): Update.
2732         * resource.c (mark_target_live_regs): Update.
2733         * sched-rgn.c (debug_dependencies): Update.
2734         * sched-vis.c (print_insn): Update.
2735         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
2736         * config/i386/i386.c (ix86_output_function_epilogue): Update.
2737         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
2738         (TARGET_ADJUST_UNROLL_MAX): Likewise.
2739         (split_branches): Update.
2740         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
2741         4.0.0.
2742         (sh_adjust_unroll_max): Exterminate.
2743         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
2744         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
2745         (m68hc11_reorg): Likewise.
2746         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
2747         (emit_predicate_relation_info): Update.
2748         (process_for_unwind_directive): Update.
2749         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
2750         (output_call): Update.
2751         * config/pa/pa.c (output_lbranch): Update.
2752         (output_millicode_call): Update.
2753         (output_call): Update.
2754         (pa_combine_instructions): Update.
2755         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
2756         * config/bfin/bfin.c (gen_one_bundle): Update.
2757         * cfgrtl.c (can_delete_note_p): Update.
2758         (delete_insn): Update.
2759         (rtl_merge_blocks): Update.
2760         (commit_one_edge_insertion): Update.
2761         (rtl_verify_flow_info): Update.
2762         * stmt.c (expand_case): Do not call squeeze_notes.
2763
2764 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2765
2766         PR middle-end/7651
2767         PR c++/11856
2768         PR c/12963
2769         PR c/23587
2770         PR other/29694
2771         * c.opt (Wtype-limits): New.
2772         * doc/invoke.texi (Wtype-limits): Document it.
2773         (Wextra): Enabled by -Wextra.
2774         * c-opts.c (c_common_post_options): Enabled by -Wextra.
2775         * c-common.c (shorten_compare): Warn with Wtype-limits.
2776
2777 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
2778
2779         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
2780         inlined function, not as a macro.
2781         (_mm_alignr_pi8): Ditto.
2782         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
2783         (_mm_inserti_si64): Ditto.
2784         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
2785         (_mm_extract_epi16): Ditto.
2786         (_mm_insert_epi16): Ditto.
2787         (_mm_shufflehi_epi16): Ditto.
2788         (_mm_shufflelo_epi16): Ditto.
2789         (_mm_shuffle_epi32): Ditto.
2790         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
2791         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
2792         all functions.
2793         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
2794         float constant.
2795         (_m_to_float): Use C89 compatible assignment.
2796
2797 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
2798
2799         PR target/32007
2800         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
2801
2802 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2803
2804         PR middle-end/7651
2805         * doc/invoke.texi (Wreturn-type): Complete description.
2806         (Wextra): Delete item about return-type warning.
2807         * c-decl.c: Delete redundant Wextra warning.
2808
2809 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
2810
2811         PR target/31585
2812         * config/i386/pmmintrin.h: Do not include xmmintrin.h
2813         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
2814         inlined function, not as a macro.
2815         (_mm_prefetch): Ditto.
2816         (_m_pextrw): Ditto.
2817         (_mm_insert_pi16): Ditto.
2818         (_m_pinsrw): Ditto.
2819         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
2820         (_m_pshufw): Ditto. Add const to __N argument.
2821         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
2822         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
2823         (_mm_slli_epi32): Ditto.
2824         (_mm_srli_si128): Implement as always inlined function, not as a macro.
2825         Add __inline to function declaration.
2826         (_mm_slli_si128): Ditto.
2827
2828 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
2829
2830         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
2831         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
2832         New constants.
2833         (struct fenv): New structure.
2834         (FP_HANDLE_EXCEPTIONS): New define.
2835         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
2836         (_FP_DECL_EXP): New define.
2837         (FP_INIT_ROUNDMODE): New define.
2838         (FP_ROUNDMODE): New define.
2839
2840 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2841
2842         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
2843         (Wconversion): Update description.
2844         (Wconversion-sign): New.
2845         * c.opt (Wconversion-sign): New.
2846         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
2847         means disabled for C++. Otherwise, take the status of Wconversion.
2848         * c-common.c (conversion_warning): Warn with either Wconversion or
2849         Wconversion-sign.
2850         (warnings_for_convert_and_check): Conditions are already checked by
2851         conversion_warning.
2852         (convert_and_check): Don't check warnings if the conversion failed.
2853
2854 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
2855            Anatoly Sokolov <aesok@dol.ru>
2856
2857         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
2858         avr_epilogue_uses) : Add declaration.
2859         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
2860         * config/avr/constraints.md (R): New constraint.
2861         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
2862         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
2863         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
2864         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
2865         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
2866         call_prologue_saves, epilogue_restores, return_from_epilogue,
2867         return_from_main_epilogue, return_from_interrupt_epilogue,
2868         return_from_naked_epilogue, prologue, epilogue): New patterns.
2869         (jump): Handle symbol reference.
2870         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
2871         avr_output_function_prologue, avr_output_function_epilogue): Remove
2872         functions.
2873         (avr_init_machine_status, expand_prologue, expand_epilogue,
2874         avr_asm_function_end_prologue, avr_epilogue_uses,
2875         avr_asm_function_begin_epilogue): New functions.
2876         (prologue_size, epilogue_size, jump_tables_size): Remove global
2877         variables.
2878         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
2879         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
2880         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
2881         (avr_override_options): Initialise init_machine_status.
2882         (output_movhi): Handle all stack pointer loads.
2883         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
2884         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
2885         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
2886         (EPILOGUE_USES) Redefine.
2887         (machine_function) Declare.
2888
2889 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
2890
2891         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
2892         Use a single return statement.
2893
2894 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2895
2896         PR middle-end/30250
2897         * builtins.c (do_mpfr_lgamma_r): New.
2898         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
2899         * tree.h (CASE_FLT_FN_REENT): New.
2900
2901 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
2902
2903         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
2904         (output_die): Use 'unsigned long' with %x.
2905         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
2906         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
2907         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
2908
2909         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
2910
2911 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
2912
2913         PR target/31989
2914         PR target/31681
2915         PR target/31666
2916         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
2917         true if function has no argument.
2918
2919 2007-05-18  DJ Delorie  <dj@redhat.com>
2920
2921         * config/mips/mips.c (mips_offset_within_alignment_p): New.
2922         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
2923
2924 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2925
2926         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
2927         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
2928         count_trailing_zeros.
2929         (__i386__): Implement count_leading_zeros using __builtin_clz().
2930         Implement count_trailing_zeros usign __builtin_ctz().
2931
2932 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
2933
2934         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
2935
2936 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2937
2938         PR middle-end/31344
2939         * expr.c (emit_move_change_mode): Change mode of push operands here.
2940
2941 2007-05-17  Ian Lance Taylor  <iant@google.com>
2942
2943         PR tree-optimization/31953
2944         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
2945         Change all callers.
2946         (set_value_range_to_null): Call set_value_range_to_value.
2947         (extract_range_from_comparison): Likewise.
2948
2949 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2950
2951         * toplev.c (print_version): Output GMP/MPFR version info.
2952
2953         * builtins.c (CASE_MATHFN_REENT): New macro.
2954         (mathfn_built_in): Use it.
2955         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
2956         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
2957         BUILT_IN_LGAMMAL_R): New.
2958         * doc/extend.texi: Document new builtins.
2959
2960         PR middle-end/31796
2961         * builtins.c (do_mpfr_remquo): New.
2962         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
2963         (fold_builtin_3): Handle BUILT_IN_REMQUO.
2964
2965         PR middle-end/30251
2966         * builtins.c (fold_builtin_1): Handle y0, y1.
2967         (fold_builtin_2): Handle yn.
2968
2969         PR middle-end/30251
2970         * builtins.c (do_mpfr_bessel_n): New.
2971         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
2972         (fold_builtin_2): Handle BUILT_IN_JN.
2973
2974 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
2975
2976         PR target/31965
2977         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
2978         TYPE_PRECISION (intmax_type_node).
2979
2980 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
2981
2982         PR target/31850
2983         * reload.c (subst_reloads): Remove checking.
2984
2985 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
2986
2987         PR rtl-optimization/31691
2988         * combine.c (simplify_set): Build a new src pattern instead of
2989         substituting its operands in the COMPARE case.
2990
2991 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2992
2993         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
2994         (execute_vrp): Preserve loops through jump threading.
2995         * tree-ssa-threadupdate.c (thread_single_edge,
2996         dbds_continue_enumeration_p, determine_bb_domination_status,
2997         thread_through_loop_header): New functions.
2998         (create_edge_and_update_destination_phis,
2999         create_edge_and_update_destination_phis): Set loops for the new blocks.
3000         (prune_undesirable_thread_requests): Removed.
3001         (redirect_edges): Do not pretend that redirect_edge_and_branch can
3002         create new blocks.
3003         (thread_block): Do not call prune_undesirable_thread_requests.
3004         Update loops.
3005         (mark_threaded_blocks): Select edges to thread here.
3006         (thread_through_all_blocks): Take may_peel_loop_headers argument.
3007         Thread edges through loop headers independently.
3008         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
3009         * tree-pass.h (TODO_mark_first_instance): New.
3010         (first_pass_instance): Declare.
3011         * cfghooks.c (duplicate_block): Put the block to the original loop
3012         if copy is not specified.
3013         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
3014         jump threading.  Pass may_peel_loop_headers to
3015         thread_through_all_blocks according to first_pass_instance.
3016         * cfgloop.h (create_preheader): Declare.
3017         * tree-flow.h (thread_through_all_blocks): Declaration changed.
3018         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
3019         * passes.c (first_pass_instance): New variable.
3020         (next_pass_1): Set TODO_mark_first_instance.
3021         (execute_todo): Set first_pass_instance.
3022
3023 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
3024
3025         PR tree-optimization/24659
3026         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
3027         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
3028         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
3029         OTI_vec_pack_ufix_trunc.
3030         (vec_unpacks_float_hi_optab): Define new macro.
3031         (vec_unpacks_float_lo_optab): Ditto.
3032         (vec_unpacku_float_hi_optab): Ditto.
3033         (vec_unpacku_float_lo_optab): Ditto.
3034         (vec_pack_sfix_trunc_optab): Ditto.
3035         (vec_pack_ufix_trunc_optab): Ditto.
3036         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
3037         and vec_pack_[s|u]fix_trunc_optab using
3038         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
3039         * tree-vectorizer.c (supportable_widening_operation): Handle
3040         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
3041         (supportable_narrowing_operation): New function.
3042         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
3043         * tree-vect-transform.c (vectorizable_conversion): Handle
3044         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
3045         (vect_gen_widened_results_half): Move before vectorizable_conversion.
3046         (vectorizable_type_demotion): Call supportable_narrowing_operation()
3047         to check for target support.
3048         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
3049         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
3050         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
3051         for VEC_PACK_FIX_TRUNC_EXPR.
3052         (expand_binop): Special case mode of the result for
3053         vec_pack_[u|s]fix_trunc_optab.
3054         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
3055         vec_pack_[u|s]fix_trunc_optab.
3056
3057         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
3058         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
3059         * tree-pretty-print.c (dump_generic_node): Handle
3060         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
3061         VEC_PACK_FIX_TRUNC_EXPR.
3062         (op_prio): Ditto.
3063         * expr.c (expand_expr_real_1): Ditto.
3064         * tree-inline.c (estimate_num_insns_1): Ditto.
3065         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
3066
3067         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
3068         (vec_unpacks_float_lo_v8hi): Ditto.
3069         (vec_unpacku_float_hi_v8hi): Ditto.
3070         (vec_unpacku_float_lo_v8hi): Ditto.
3071         (vec_unpacks_float_hi_v4si): Ditto.
3072         (vec_unpacks_float_lo_v4si): Ditto.
3073         (vec_pack_sfix_trunc_v2df): Ditto.
3074
3075         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
3076         Document.
3077         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
3078         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
3079         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
3080         [vec_pack_ufix_trunc]: Ditto.
3081         [vec_unpacks_float_hi]: Ditto.
3082         [vec_unpacks_float_lo]: Ditto.
3083         [vec_unpacku_float_hi]: Ditto.
3084         [vec_unpacku_float_lo]: Ditto.
3085
3086 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
3087
3088         * soft-fp/README: Update for new files.
3089         * soft-fp/floattisf.c: New file.
3090         * soft-fp/floattidf.c: New file.
3091         * soft-fp/floattitf.c: New file.
3092         * soft-fp/floatuntisf.c: New file.
3093         * soft-fp/floatuntidf.c: New file.
3094         * soft-fp/floatuntitf.c: New file.
3095         * soft-fp/fixsfti.c: New file.
3096         * soft-fp/fixdfti.c: New file.
3097         * soft-fp/fixtfti.c: New file.
3098         * soft-fp/fixunssfti.c: New file.
3099         * soft-fp/fixunsdfti.c: New file.
3100         * soft-fp/fixunstfti.c: New file.
3101         * soft-fp/extendxftf.c: New file.
3102         * soft-fp/trunctfxf.c: New file.
3103
3104         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
3105         (__trunctfxf2): Ditto.
3106
3107         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
3108         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
3109         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
3110         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
3111         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
3112         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
3113
3114         * config/i386/t-fprules-softfp64: New file.
3115         * config/i386/sfp-machine.h: New file.
3116         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
3117         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
3118         and soft-fp/t-softfp to tmake_file.
3119         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
3120         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
3121
3122         * config/i386/t-linux64 (softfp_wrap_start): New.
3123         (softfp_wrap_end): New.
3124         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
3125         supported for TARGET_64BIT.
3126
3127 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
3128
3129         * c-common.c (c_common_signed_or_unsigned_type): Emulate
3130         c_common_unsigned_type behavior.
3131
3132 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
3133
3134         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
3135         calls as pure.
3136
3137 2007-05-16  Eric Christopher  <echristo@apple.com>
3138
3139         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
3140         saving after stack push. Set sp_offset whenever we push.
3141         (rs6000_emit_epilogue): Move altivec register restore before
3142         stack push.
3143
3144 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
3145
3146         * configure.ac: Allow sysroots to be relocated under $prefix as
3147         well as $exec_prefix.
3148         * configure: Regenerate.
3149
3150 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
3151
3152         Revert:
3153
3154         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
3155
3156         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
3157         (gcc_tooldir): Likewise.
3158         * configure: Regenerate.
3159         * Makefile.in (libsubdir_to_prefix): New variable, based on the
3160         old configure.ac gcc_tooldir setting.
3161         (prefix_to_exec_prefix): New variable.
3162         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
3163         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
3164
3165 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
3166
3167         * c-typeck.c (build_binary_op): Return early for error.
3168
3169 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
3170
3171         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
3172         struct nb_iter_bound.
3173         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
3174         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
3175         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
3176         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
3177         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
3178         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
3179         (del_scev_info): Use ggc_free.
3180         (scev_initialize): Allocate scalar_evolution_info in gc memory.
3181         * loop-init.c: Include ggc.h.
3182         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
3183         (loop_optimizer_finalize): Use ggc_free.
3184         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
3185         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
3186         pass_iv_optimize): Add TODO_ggc_collect.
3187         * function.h (struct function): Remove skip marker from x_current_loops.
3188         * cfgloop.c: Include ggc.h.
3189         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
3190         memory.
3191         (establish_preds): Vector superloops is gc allocated.
3192         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
3193         loop->exits list.
3194         (flow_loops_find): Vector larray is gc allocated.
3195         (loop_exit_free): Use ggc_free.
3196         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
3197         that head of exits list is now not a part of struct loop.
3198         (record_loop_exits): Allocate exits table in gc memory.
3199         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
3200         head of exits list is now not a part of struct loop.
3201         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
3202         struct loop_exit): Add GTY marker.
3203         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
3204         Add skip marker to aux field.  Make head of exits list a separate
3205         object.
3206         (struct loops): Add GTY marker.  Make larray vector gc allocated.
3207         Add param marker to exits table.
3208         (get_loops): Type changed.
3209         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
3210         dependency.
3211         (cfgloop.o, loop-init.o): Add ggc.h dependency.
3212         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
3213         * basic-block.h (struct basic_block_def): Remove skip marker from
3214         loop_father field.
3215
3216 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
3217
3218         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
3219         of 0 in the call to expand_expr().
3220         (expand_builtin_mathfn_3): Ditto.
3221         (expand_builtin_interclass_mathfn): Ditto.
3222         (expand_builtin_cexpi): Ditto.
3223         (expand_builtin_int_roundingfn): Ditto.
3224         (expand_builtin_int_roundingfn_2): Ditto.
3225         (expand_builtin_pow): Ditto.
3226         (expand_builtin_powi): Ditto.
3227         (expand_builtin_bswap): Ditto.
3228         (expand_builtin_unop): Ditto.
3229         (expand_builtin_fabs): Ditto.
3230         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
3231         the call to expand_expr().
3232         (expand_builtin_sync_operation): Ditto.
3233         (expand_builtin_compare_and_swap): Ditto.
3234         (expand_builtin_lock_test_and_set): Ditto.
3235         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
3236         instead of 0 in the call to expand_expr().
3237         (expand_builtin_extract_return_addr): Ditto.
3238         (expand_builtin_eh_return): Ditto.
3239         (expand_eh_return): Ditto.
3240         * explow.c (expr_size): Ditto.
3241         * expr.c (optimize_bitfield_assignment_op): Ditto.
3242         (expand_assignement): Ditto.
3243         (store_expr): Ditto.
3244         (store_field): Ditto.
3245         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
3246         the call to expand_expr().
3247         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
3248         in the call to expand_expr().
3249         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
3250         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
3251         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
3252         of expand_expr().
3253         * optabs.c (expand_vec_shift_expr): Ditto.
3254         (expand_vec_cond_expr): Ditto.
3255         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
3256         call to expand_expr().
3257         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
3258         in the call to expand_expr().
3259
3260 2007-05-14  Dave Korn  <dave.korn@artimi.com>
3261
3262         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
3263
3264 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
3265
3266         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
3267         instead of c_common_unsigned_type.
3268         (c_common_unsigned_type): Remove.
3269         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
3270         c_common_unsigned_type.
3271         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
3272         c_common_unsigned_type.
3273         * c-common.h (c_common_unsigned_type): Remove.
3274         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
3275         c_common_unsigned_type.
3276         * c-format.c (check_format_types): Use unsigned_type_for instead of
3277         c_common_unsigned_type.
3278         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
3279         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
3280         c_common_unsigned_type.
3281         * convert.c (convert_to_integer): Use unsigned_type_for instead of
3282         lang_hooks.types.unsigned_type.
3283         * expmed.c (make_tree): Use unsigned_type_for instead of
3284         lang_hooks.types.unsigned_type.
3285         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
3286         lang_hooks.types.unsigned_type.
3287         (build_range_check): Likewise.
3288         (fold_unary): Likewise.
3289         (fold_binary): Likewise.
3290         (fold_ternary): Likewise.
3291         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
3292         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
3293         * tree.c (get_unsigned_type): New.
3294         (unsigned_type_for): Use get_unsigned_type instead of
3295         lang_hooks.types.unsigned_type.
3296
3297 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
3298
3299         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
3300         to m68k_get_function_kind.  Update its prototype.
3301         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
3302         interrupt_thread.
3303         (m68k_interrupt_function_p): Return enum m68k_function_type
3304         instead of bool.  Rename to m68k_get_function_kind.
3305         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
3306         target is not fido.
3307         (m68k_compute_frame_layout): Don't mark any register for save
3308         if an interrupt_thread attribute is specified.
3309         (m68k_hard_regno_rename_ok): Update a use of
3310         m68k_interrupt_function_p.
3311         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
3312         m68k_interrupt_function_p.
3313         (m68k_function_type): New.
3314         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
3315         for a function with an interrupt_thread attribute.
3316         * doc/extend.texi: Document the interrupt_thread attribute.
3317
3318 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
3319
3320         Fix PR tree-optimization/31911
3321         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
3322         if they didn't change the expression.
3323
3324 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
3325
3326         * tree-scalar-evolution.c (resolve_mixers): Exported.
3327         * tree-scalar-evolution.h (resolve_mixers): Declare.
3328         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
3329         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
3330         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
3331         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
3332         init_array_ref, init_pointer_ref, analyze_indirect_ref,
3333         strip_conversion, analyze_offset_expr, address_analysis,
3334         object_analysis, analyze_offset): Removed.
3335         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
3336         split_constant_offset, canonicalize_base_object_address,
3337         object_address_invariant_in_loop_p, disjoint_objects_p,
3338         dr_may_alias_p, dr_address_invariant_p): New functions.
3339         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
3340         and dr_analyze_alias.
3341         (initialize_data_dependence_relation): Use dr_may_alias_p
3342         and object_address_invariant_in_loop_p.
3343         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
3344         is chrec_dont_know.
3345         (find_data_references_in_stmt): Restrict the analysis of data references
3346         to the given loop nest.
3347         (find_data_references_in_loop): Made static.  Pass loop nest to
3348         find_data_references_in_stmt.
3349         (compute_data_dependences_for_loop): Use DR_VOPS.
3350         (free_data_ref): Free DR_VOPS.
3351         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
3352         (struct innermost_loop_behavior): ... new.
3353         (struct base_object_info): Replaced by ...
3354         (struct indices): ... new.
3355         (struct dr_alias): New.
3356         (enum data_ref_type): Removed.
3357         (struct data_reference): Consist of struct innermost_loop_behavior,
3358         struct indices and struct dr_alias.
3359         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
3360         (DR_MEMTAG): Renamed to ...
3361         (DR_SYMBOL_TAG): ... this.
3362         (find_data_references_in_loop): Declaration removed.
3363         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
3364         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
3365         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
3366         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
3367
3368 2007-05-13  Revital Eres  <eres@il.ibm.com>
3369
3370         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
3371         which walks virtual def-use chains to find redundant stores.
3372         (dse_optimize_stmt): Call it.
3373
3374 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
3375
3376         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
3377         * passes.c (init_optimization_passes): Move pass_jump_bypass
3378         after loop2.
3379
3380         * basic-block.h (bb_has_eh_pred): Fix style issue.
3381
3382 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
3383
3384         PR rtl-optimization/31848
3385         * loop-invariant.c (move_invariant_reg): If we move an insn
3386         with a REG_EQUAL note, and that insn is not always executed,
3387         remove the REG_EQUAL note.
3388
3389 2007-05-12  Richard Guenther  <rguenther@suse.de>
3390
3391         PR tree-optimization/31797
3392         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
3393         propagate into a stmt that has volatile ops.
3394
3395 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
3396
3397         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
3398         (gcc_tooldir): Likewise.
3399         * configure: Regenerate.
3400         * Makefile.in (libsubdir_to_prefix): New variable, based on the
3401         old configure.ac gcc_tooldir setting.
3402         (prefix_to_exec_prefix): New variable.
3403         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
3404         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
3405
3406 2007-05-11  Silvius Rus  <rus@google.com>
3407
3408         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
3409         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
3410         * c-common.h (strict_aliasing_warning): Change return type.
3411         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
3412         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
3413         (build_c_cast): Condition call to strict_aliasing_warning.
3414         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
3415         * flags.h (set_Wstrict_aliasing): Declare.
3416         * opts.c (set_Wstrict_alising): Define, add call to.
3417         * tree-flow.h (strict_aliasing_warning_backend): Declare.
3418         * tree-ssa-alias-warnings.c: New file.
3419         * tree-ssa-alias.c (compute_may_aliases): Add call to
3420         strict_aliasing_warning_backend.
3421
3422 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
3423
3424         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
3425         Use loop_depth and loop_outer accessor functions.
3426         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
3427         determine_invariantness_stmt, move_computations_stmt): Ditto.
3428         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
3429         add_loop, loopify, unloop, fix_loop_structure): Ditto.
3430         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
3431         * tree-scalar-evolution.c (interpret_loop_phi,
3432         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
3433         instantiate_parameters_1, scev_const_prop): Ditto.
3434         * cfghooks.c (make_forwarder_block): Ditto.
3435         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
3436         * modulo-sched.c (loop_canon_p): Ditto.
3437         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
3438         slpeel_can_duplicate_loop_p): Ditto.
3439         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
3440         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3441         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
3442         cancel_loop, verify_loop_structure): Ditto.
3443         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
3444         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
3445         superloops vector instead of "pred" array.
3446         (establish_preds): Take father loop as an argument.  Initialize the
3447         superloops vector.
3448         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
3449         initialize loop->outer.
3450         (flow_loop_tree_node_remove): Truncate the superloops vector.
3451         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
3452         "pred" merged to "superloops" vector.
3453         (loop_depth, loop_outer): New.
3454         (fel_init): Use loop_outer.
3455
3456 2007-05-11  Jan Hubicka  <jh@suse.cz>
3457
3458         * cgraphunit.c: Include gt-cgraphunit.h
3459         (static_ctors, static_dtors): New static vars.
3460         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
3461         based on implementation in c-common.c
3462         (cgraph_finalize_function): Call record_cdtor_fn.
3463         (cgraph_optimize): Call cgraph_build_cdtor_fns.
3464         * decl.c (finish_function): Do not call c_record_cdtor_fn.
3465         (c_write_global_declarations): Do not call c_build_cdtor_fns.
3466         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
3467         build_cdtor, c_build_cdtor_fns): Remove.
3468         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
3469         c_build_cdtor_fns): Remove prototype.
3470
3471 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
3472
3473         PR other/31852
3474         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
3475         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
3476         * builtins.c (fold_builtin_memchr): New.
3477         (expand_builtin_memchr): Call the latter.
3478         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
3479         * doc/extend.texi ([Other built-in functions provided by GCC]):
3480         Document memchr.
3481
3482 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
3483
3484         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
3485         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
3486         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
3487         PFPO_OP1_TYPE_SHIFT): Constants added.
3488         (DFP_ALL): Mode macro defined.
3489         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
3490         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
3491         Insn definitions added.
3492         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
3493         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
3494         Expanders added.
3495
3496 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
3497
3498         PR tree-optimization/31885
3499         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
3500         to be undetermined.
3501         (automatically_generated_chrec_p): Return false for NULL.
3502
3503 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
3504
3505         * config/bfin/bfin.h (MOVE_RATIO): Define.
3506
3507 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
3508
3509         * config.gcc (sparc-wrs-vxworks): New target.
3510         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
3511         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
3512         * config/sparc/sparc.h: Include vxworks-dummy.h.
3513         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
3514         include LABEL_REFs too.
3515         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
3516         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
3517         VxWorks.
3518         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
3519         on VxWorks.
3520         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
3521         (sparc_emit_call_insn): New function.
3522         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
3523         functions when generating VxWorks PIC.
3524         * config/sparc/sparc.md (vxworks_load_got): New pattern.
3525         (call, call_value): Use sparc_emit_call_insn instead of
3526         emit_call_insn.
3527
3528 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
3529
3530         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
3531
3532 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
3533
3534         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
3535         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
3536         instead of operand_subword.
3537
3538 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
3539
3540         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
3541         * config/bfin/bfin.c (bfin_local_alignment): New function.
3542         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
3543
3544 2007-05-08  Chao-ying Fu  <fu@mips.com>
3545
3546         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
3547         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
3548         (smsub_widen_optab, umsub_widen_optab): Define.
3549         * optabs.c (init_optabs): Initialize smsub_widen_optab and
3550         umsub_widen_optab.
3551         * genopinit.c (optabs): Fill in smsub_widen_optab and
3552         umsub_widen_optab.
3553         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
3554         and umsub_widen_optab to implement multiply-subtract sequences.
3555         * config/mips/mips.md (*msac<u>_di): Rename to...
3556         (<u>msubsidi4): ...this.  Extend condition to include
3557         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
3558         of operand 0 to "ka" and use the three-operand form of msub<u>
3559         for TARGET_DSPR2.
3560         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
3561         to define_expands.
3562
3563 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3564
3565         PR rtl-optimization/28011
3566         * reload.c (push_reload): Set dont_share if IN appears in OUT
3567         also when IN is a PLUS rtx.
3568         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
3569         are same PLUS rtx.
3570
3571 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
3572
3573         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
3574         call unshare_all_decls.
3575         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
3576         (unshare_all_decls): Remove.
3577
3578 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
3579
3580         PR 31847
3581         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
3582         dumps.
3583
3584 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
3585             Nigel Stephens  <nigel@mips.com>
3586
3587         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
3588         Update comments and all uses.
3589         (MIN_FPRS_PER_FMT): Define.
3590         * config/mips/mips.c (function_arg): Fix to correctly handle
3591         the -mips32r2 -mfp64 -mabi=32 case.
3592         (override_options): Enable use of odd-numbered registers for
3593         SFmode values on MIPS32.
3594         (mips_save_reg_p): Save whole floating-point register pair if
3595         either half is used.
3596         (compute_frame_size): Fix comment.
3597
3598 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
3599
3600         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
3601         argument of type bool.
3602         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
3603         argument. Safely select temporary P register according to it.
3604         (do_link): Change call site of add_to_reg accordingly.
3605         (do_unlink): Add epilogue_p as a fourth argument and pass it
3606         to add_to_reg.
3607         (expand_interrupt_handler_epilogue): Change call of do_unlink
3608         accordingly.
3609         (bfin_expand_prologue): Add a third argument sibcall_p.
3610         * config/bfin/bfin.md (epilogue): Change call of
3611         bfin_expand_epilogue accordingly.
3612         (sibcall_epilogue): Likewise.
3613         (eh_return_internal): Likewise.
3614
3615         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
3616         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
3617         * config/bfin/bfin.c (bfin_handle_option): Handle
3618         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
3619         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
3620         Support bf534, bf536 and bf561.
3621         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
3622
3623 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
3624
3625         PR target/31854
3626         * config/i386/i386.c (ix86_function_regparm): Process local
3627         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
3628
3629 2007-05-07  Mike Stump  <mrs@apple.com>
3630
3631         * doc/invoke.texi (Warning Options): Document that -Wempty-body
3632         also checks for and while statements in C++.
3633
3634 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
3635
3636         * gcc.c (at_file_supplied): New variable.
3637         (main): Set it if we expanded argv.
3638         (do_spec_1): Pass an @-file to the linker if we were called with
3639         an @-file argument and HAVE_GNU_LD.
3640         * collect2.c (at_file_supplied): New variable.
3641         (response_file): New variable.
3642         (collect_exit): Unlink response_file if necessary.
3643         (handler): Likewise.
3644         (do_wait): Likewise.
3645         (main): Set at_file_supplied if we expanded argv.
3646         (collect_execute): Pass an @-file to subprocesses if we were called
3647         with an @-file argument.
3648         * configure.ac: Add define for HAVE_GNU_LD.
3649         * configure: Regenerate.
3650         * config.in: Regenerate.
3651
3652 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
3653
3654         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
3655         operand to HI mode.
3656         (mulsi3): New.
3657         (divsi3): New.
3658         (udivsi3): New.
3659
3660 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
3661
3662         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
3663         (TARGET_ENCODE_SECTION_INFO): Re-define.
3664         (m32c_encode_section_info): New
3665         (function_vector_handler): New
3666         (current_function_special_page_vector): New
3667         (m32c_special_page_vector_p): New.
3668         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
3669         Prototype.
3670         * config/m32c/jump.md: Added instruction JSRS for functions
3671         with attribute "function_vector".
3672         * doc/extend.texi (function_vector): Added description
3673         for M16C, M32C targets.
3674
3675 2007-05-07  DJ Delorie  <dj@redhat.com>
3676
3677         PR 31794
3678         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
3679         ashrpsi3, lshrpsi3): Update shift count constraint.
3680
3681 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
3682             Nathan Froyd  <froydnj@codesourcery.com>
3683
3684         PR 22133
3685         * c-incpath.c (add_path): Strip trailing path separators.
3686
3687 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
3688
3689         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
3690         Free dominance info before purging EH edges.
3691         (eliminate_degenerate_phis): Likewise.
3692         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
3693
3694 2007-05-07  Jan Hubicka  <jh@suse.cz>
3695
3696         * gimplify.c (gimplify_expr): Do not crash when folding
3697         (void *)(int)&a + 4.
3698
3699 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3700
3701         PR driver/31694
3702         * c-opts.c (lang_fortran): Make it non static.
3703         * c-common.h (lang_fortran): New prototype.
3704         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
3705         -lang-fortran option was passed by the driver.
3706
3707 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
3708
3709         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
3710         of ASSERT_CHECKING.  Tweak message.
3711
3712 2007-05-06  Revital Eres  <eres@il.ibm.com>
3713
3714         PR 30957
3715         * loop-unroll.c (insert_var_expansion_initialization):
3716         Initialize the expansions with -zero instead of +zero.
3717
3718 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
3719
3720         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
3721         into pic and non-pic versions. Mark r19 as used for
3722         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
3723         for tgd_load, tld_load and tie_load .
3724         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
3725         version of tgd_load, tld_load and tie_load depending on the
3726         value of flag_pic.
3727
3728 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
3729             Jakub Jelinek  <jakub@redhat.com>
3730
3731         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
3732         (__do_global_dtors_aux): Use more paranoid loop to run
3733         destructors if HIDDEN_DTOR_LIST_END.
3734         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
3735
3736 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
3737
3738         * varasm.c (align_variable): Don't increase alignment for
3739         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
3740         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
3741
3742 2007-05-04  Josh Conner  <jconner@apple.com>
3743
3744         * basic-block.h (cdi_direction): Assign values to all enumeration
3745         constants.
3746         (dom_computed): Remove.
3747         (dom_info_state): New.
3748         (set_dom_info_availability): New.
3749         * tree-ssa-loop-im.c (determine_invariantness): Initialize
3750         walk_data.dom_direction.
3751         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
3752         instead of dom_computed[].
3753         (split_edge): Likewise.
3754         (create_basic_block): Likewise.
3755         (merge_blocks): Likewise.
3756         * ifcvt.c (find_if_header): Likewise.
3757         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
3758         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
3759         * tree-ssa.c (verify_ssa): Likewise.
3760         * tree-cfg.c (tree_verify_flow_info): Likewise.
3761         (remove_edge_and_dominated_blocks): Likewise.
3762         * dominance.c (dom_computed): Make static.
3763         (calc_dfs_tree_nonrec): Change third param to a bool.
3764         (calc_dfs_tree): Change second param to a bool.
3765         (calc_idioms): Change second param to a bool.  Use
3766         dom_convert_dir_to_idx.
3767         (init_dom_info): Validate dir before using.
3768         (dom_convert_dir_to_idx): New.
3769         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
3770         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
3771         (free_dominance_info): Use dom_convert_dir_to_idx.
3772         (get_immediate_dominator): Likewise.
3773         (set_immediate_dominator): Likewise.
3774         (get_dominated_by): Likewise.
3775         (redirect_immediate_dominators): Likewise.
3776         (nearest_common_denominator): Likewise.
3777         (dominated_by_p): Likewise.
3778         (bb_dom_dfs_in): Likewise.
3779         (bb_dom_dfs_out): Likewise.
3780         (recount_dominator): Likewise.
3781         (iterate_fix_dominators): Likewise.
3782         (add_to_dominance_info): Likewise.
3783         (delete_from_dominance_info): Likewise.
3784         (first_dom_son): Likewise.
3785         (next_dom_son): Likewise.
3786         (dom_info_available_p): Likewise.
3787         (dom_info_state): New.
3788         (set_dom_info_availability): New.
3789
3790 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
3791
3792         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
3793         Expander removed.
3794         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
3795
3796 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
3797
3798         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
3799         (subdi3, subdi_carry): Delete.
3800
3801 2007-05-04  Jan Hubicka  <jh@suse.cz>
3802             Richard Guenther  <rguenther@suse.de>
3803
3804         * opts.c (decode_options): Do not fiddle with inlining
3805         parameters in case of optimizing for size.
3806         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
3807         for size do nothing.
3808         (cgraph_decide_inlining_of_small_function): When optimizing for
3809         size never inline functions increasing caller size.
3810         (cgraph_early_inlining): Inline for size when optimizing for size.
3811
3812 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
3813
3814         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
3815         logical operations piecewise.
3816         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
3817         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
3818         subdi_sesidi_di): Delete.
3819         (add_with_carry): Produce carry in CC instead of a DREG to shorten
3820         the generated sequence.  Allow three-reg add in constraints.  Rewrite
3821         the rtl expression for carry to avoid zero_extend of a constant.
3822         (sub_with_carry): New pattern.
3823         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
3824         different sequence not involving jumps.
3825         (notbi): Now a named pattern.
3826
3827 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
3828
3829         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
3830         Add the note about a significant loss of accuracy of some
3831         mathematical routines when these options are used.
3832
3833 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3834
3835         * haifa-sched.c (rtx_vec_t): New typedef.
3836         (contributes_to_priority_p): Extract piece of priority () into new
3837         static function.
3838         (priority): Use the function.  Add assertion.
3839         (rank_for_schedule, set_priorities): Add assertion to check that
3840         insn's priority is initialized.
3841         (clear_priorities, calc_priorities): Change signature.  Make it update
3842         all relevant insns.  Update all callers ('add_to_speculative_block ()'
3843         and 'create_block_check_twin ()').
3844         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
3845         Add new field 'priority_status'.
3846         (INSN_PRIORITY_STATUS): New macro.
3847         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
3848
3849 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3850
3851         * sched-ebb.c (debug_ebb_dependencies): New static function.
3852         (init_ready_list): Use it.
3853
3854         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
3855         with changed signature and 'debug_rgn_dependencies ()'.
3856         (debug_rgn_dependencies): New static function.
3857         (init_ready_list): Use it.
3858
3859         * sched-int.h (debug_dependencies): Declare.
3860
3861 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
3862
3863         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
3864
3865 2007-05-04  Dirk Mueller  <dmueller@suse.de>
3866
3867         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
3868
3869 2007-05-03  Jan Hubicka  <jh@suse.cz>
3870
3871         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
3872         for pointer type in more cases than before.
3873
3874         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
3875
3876         * tree-object-size.c (plus_expr_object_size): When operand size is
3877         unknown, return unknown.
3878
3879 2007-05-03  Dirk Mueller  <dmueller@suse.de>
3880
3881         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
3882
3883         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
3884         options.
3885
3886         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
3887
3888 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
3889
3890         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
3891
3892 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
3893
3894         * config/soft-fp/double.h, config/soft-fp/extended.h,
3895         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
3896         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
3897         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
3898         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
3899         glibc CVS.
3900
3901 2007-05-03  Ian Lance Taylor  <iant@google.com>
3902
3903         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
3904         MASK_PPC_GFXOPT for 8540 or 8548.
3905
3906 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
3907
3908         * tree-vect-transform.c (vect_update_inits_of_drs): Use
3909         vect_print_dump_info() to output debug information.
3910
3911 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
3912
3913         PR target/31768
3914         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
3915         operands of size 2 when operand is not MEM_P.
3916
3917 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
3918
3919         PR tree-optimization/30565
3920         * lambda-code.c (perfect_nestify): Fix updating of dominators.
3921
3922 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
3923
3924         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
3925         (umulsi3_highpart): Use them.
3926         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
3927         for final accumulator to D regisster tranfser.
3928
3929 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
3930
3931         PR tree-optimization/31699
3932         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
3933         code.
3934         (vect_enhance_data_refs_alignment): Compute peel amount using
3935         TYPE_VECTOR_SUBPARTS instead of vf.
3936         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
3937
3938 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
3939
3940         PR bootstrap/31776
3941         * system.h: Remove inclusion of double-int.h
3942         * tree.h: Include double-int.h
3943         * gengtype.c: Likewise
3944         * cfgloop.h: Likewise
3945         * Makefile.in: Adjust dependencies on double-int.h
3946
3947 2007-05-02  Eric Christopher  <echristo@apple.com>
3948
3949         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
3950         -shared to -Zdynamiclib.
3951
3952 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
3953
3954         PR c++/31663
3955         * c-common.c (strip_pointer_or_array_types): New function.
3956         * c-common.h (strip_pointer_or_array_types): New function declaration.
3957
3958 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
3959
3960         PR tree-optimization/31771
3961         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
3962
3963 2007-05-02  Paul Brook  <paul@codesourcery.com>
3964
3965         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
3966
3967 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3968
3969         PR middle-end/29715
3970         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
3971         transformation.
3972
3973 2007-05-02  Nick Clifton  <nickc@redhat.com>
3974
3975         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
3976
3977 2007-05-02  Richard Guenther  <rguenther@suse.de>
3978
3979         PR tree-optimization/31146
3980         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
3981         argument, single_use_p.  If we have a single use that is
3982         a conversion to the definition rhs type, propagate that rhs.
3983         (forward_propagate_addr_expr): Pass single_use_p argument
3984         to forward_propagate_addr_expr_1.
3985
3986 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
3987
3988         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
3989         variable.
3990
3991 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3992
3993         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
3994         'AMD Family 10 core'.
3995
3996 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3997
3998         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
3999         and athlon64-sse3 as improved versions of k8, opteron and athlon64
4000         with SSE3 instruction set support.
4001         * doc/invoke.texi: Likewise.
4002
4003 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4004
4005         * config/i386/i386.c (override_options): Tuning 32-byte loop
4006         alignment for amdfam10 architecture. Increasing the max loop
4007         alignment to 24 bytes.
4008
4009 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
4010
4011         * config/m68k/constraints.md: New.
4012         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
4013         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
4014         EXTRA_CONSTRAINT): Remove.
4015         * config/m68k/m68k.md: Include constraints.md.
4016         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
4017
4018 2007-05-01  Ian Lance Taylor  <iant@google.com>
4019
4020         PR tree-optimization/31739
4021         * tree-vrp.c (vrp_val_is_max): New static function.
4022         (vrp_val_is_min): New static function.
4023         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
4024         copying the node.
4025         (set_value_range): Use vrp_val_is_{max,min}.
4026         (extract_range_from_assert): Likewise.
4027         (extract_range_from_binary_expr): Likewise.
4028         (extract_range_from_unary_expr): Likewise.
4029         (dump_value_range, vrp_meet): Likewise.
4030         (vrp_visit_phi_node): Likewise.
4031         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
4032
4033 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
4034
4035         * config/i386/gmon-sol2.c (size_t): New type.
4036         (intptr_t): Likewise.
4037         (s_textsize): Declare as size_t.
4038         (sbrk): Declare.
4039         (monstartup): Use size_t for sizes.
4040         (_mcount): Save and restore registers.
4041         (internal_mcount): Pass 0 as the first argument to monstartup
4042         in 64-bit mode.
4043         (moncontrol): Convert pointer to appropriately sized integer
4044         before passing to profil.
4045
4046 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
4047
4048         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
4049         __NO_FPRS__, not just if _SOFT_DOUBLE.
4050         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
4051         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
4052         also for E500 double.
4053         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
4054         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
4055         && !TARGET_FPRS).
4056
4057 2007-05-01  Richard Guenther  <rguenther@suse.de>
4058
4059         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
4060         is NULL.
4061
4062 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
4063
4064         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
4065
4066 2007-05-01  Jan Hubicka  <jh@suse.cz>
4067
4068         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
4069         invariant.
4070
4071 2007-05-01  Jan Hubicka  <jh@suse.cz>
4072
4073         * tree.h (maybe_fold_offset_to_component_ref): Remove.
4074         (maybe_fold_offset_to_reference): Declare.
4075         * fold-const.c (fold_unary): Do not fold
4076         (type *)&A into &A->field_of_type_and_offset_0
4077         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
4078         size is unknown, give up.
4079         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
4080         offsets.
4081         (maybe_fold_offset_to_reference): New.
4082         (maybe_fold_stmt_indirect): Use it.
4083         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
4084         * gimplify.c (gimplify_conversion): Canonicalize conversions to
4085         field references.
4086         (gimplify_expr): Likewise for plus_expr.
4087
4088 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
4089
4090         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
4091         bsi_after_labels.  Always insert statements before bsi.
4092         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
4093         * predict.c (apply_return_prediction): Check for empty blocks.
4094         * cfgexpand.c (lab_rtx_for_bb): New variable.
4095         (label_rtx_for_bb): Do not create new tree labels.
4096         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
4097         (tree_expand_cfg): Initialize lab_rtx_for_bb.
4098         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
4099         creating edges.
4100         (label_for_bb): Add field used.
4101         (update_eh_label, main_block_label): Mark the label used.
4102         (cleanup_dead_labels): Remove unused labels.
4103
4104 2007-05-01  Richard Guenther  <rguenther@suse.de>
4105
4106         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
4107         if it is not about to be set.
4108         (get_value_range): Do not pre-allocate equiv bitmap.
4109         (update_value_range): No need to clear equiv field.
4110         (add_equivalence): Change prototype to get bitmap pointer.
4111         Allocate bitmap here if it is not already.
4112         (extract_range_from_assert): Do not allocate bitmap here.
4113         Update callers to add_equivalence.
4114         (extract_range_from_ssa_name): Likewise.
4115         (get_vr_for_comparison): New static helper.
4116         (compare_name_with_value): Handle NULL equiv bitmap by
4117         peeling the first iteration of the comparison loop.
4118         Use get_vr_for_comparison.
4119         (compare_names): Handle NULL equiv bitmaps by using fake
4120         ones.  Use get_vr_for_comparison.
4121
4122 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
4123
4124         * double-int.c (mpz_set_double_int): Moved from
4125         tree-ssa-loop-niter.c.
4126         (mpz_get_double_int): Likewise; also, add option to wrap
4127         out-of-range integers.
4128         * double-int.h: New prototypes for above.
4129         * tree.c (get_static_type_bounds): Moved from
4130         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
4131         TYPE_MAX_VALUE if they exist..
4132         * tree.h: New prototype for above.
4133         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
4134         get_type_bounds calls.
4135         (mpz_set_double_int): Move to double-int.c.
4136         (get_type_bounds): Move to tree.c, rename to
4137         get_static_type_bounds.
4138         (mpz_to_double_int): Move to double-int.c, rename to
4139         mpz_get_double_int.
4140
4141 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
4142
4143         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
4144         DIV0 exception can fall through to a normal return.
4145
4146 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
4147
4148         PR middle-end/22156
4149         Temporarily revert:
4150         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
4151         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
4152         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
4153         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
4154         initialize align to silence bogus warning.
4155         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
4156         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
4157         all_no_warning.
4158         (struct sra_walk_fns): Remove use_all parameter from use.
4159         (sra_hash_tree): Handle BIT_FIELD_REFs.
4160         (sra_elt_hash): Don't hash bitfld blocks.
4161         (sra_elt_eq): Skip them in parent compares as well.  Handle
4162         BIT_FIELD_REFs.
4163         (sra_walk_expr): Don't maintain or pass down use_all_p.
4164         (scan_use): Remove use_all parameter.
4165         (scalarize_use): Likewise.  Re-expand assignment to
4166         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
4167         output, and re-scalarize after output.  Don't mark anything
4168         for no warning.
4169         (scalarize_ldst): Adjust.
4170         (scalarize_walk_gimple_modify_statement): Likewise.
4171         (build_element_name_1): Handle BIT_FIELD_REFs.
4172         (instantiate_element): Don't warn for any element whose parent
4173         is used as a whole.
4174         (instantiate_missing_elements_1): Return the sra_elt.
4175         (canon_type_for_field): New.
4176         (try_instantiate_multiple_fields): New.
4177         (instantiate_missing_elemnts): Use them.
4178         (mark_no_warning): Removed.
4179         (generate_one_element_ref): Handle BIT_FIELD_REFs.
4180         (REPLDUP, sra_build_elt_assignment): New.
4181         (generate_copy_inout): Use them.
4182         (generate_element_copy): Likewise.  Handle bitfld differences.
4183         (generate_element_zero): Don't recurse for blocks.  Use
4184         sra_build_elt_assignment.
4185         (generate_one_element_int): Take elt instead of var.  Use
4186         sra_build_elt_assignment.
4187         (generate_element_init_1): Adjust.
4188         (scalarize_use, scalarize_copy): Use REPLDUP.
4189         (scalarize_ldst): Move assert before dereference.
4190         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
4191
4192 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4193
4194         PR C++/31721
4195         * tree.c (reconstruct_complex_type): Reconstruct a reference
4196         correctly.
4197         Also use the same mode for the pointer as the old pointer type.
4198
4199 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
4200
4201         * doc/trouble.texi (Interoperation): Remove note about Ultrix
4202         Fortran compiler.
4203
4204 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
4205
4206         PR rtl-optimization/31676
4207         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
4208         (df_refs_record): Call it.
4209
4210 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4211
4212         * rtl.def (SS_ABS): New code.
4213         * config/bfin/bfin.c (print_operand): New modifier 'v'.
4214         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
4215         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
4216         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
4217         (bfin_init_builtins): Define them.
4218         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
4219         (bfin_expand_builtin): ... and handle the others here.
4220         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
4221         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
4222         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
4223         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
4224         operand is only HImode.
4225
4226 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
4227
4228         * regclass.c (scan_one_insn): Remove splitting of
4229         two address insns.
4230
4231 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
4232             Nigel Stephens  <nigel@mips.com>
4233
4234         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
4235
4236 2007-04-28  Jan Hubicka  <jh@suse.cz>
4237
4238         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
4239         insn_locators_alloc instead of insn_locators_initialize;
4240         call reset_block_changes.
4241         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4242         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
4243         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
4244         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
4245         * config/score/score.c (th_output_mi_thunk): Likewise.
4246         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
4247         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
4248         tolerate uninitialized locator info.
4249
4250         Re-apply:
4251         * function.c (init_function_start): Don't init line number info.
4252         (expand_function_end): Update.
4253         (reset_block_changes, record_block_change, finalize_block_changes,
4254         check_block_change, free_block_changes): Kill.
4255         * function.h (reset_block_changes, record_block_change,
4256         finalize_block_changes, check_block_change, free_block_changes): Remove
4257         prototypes.
4258         (struct function): Remove ib_boundaries_block.
4259         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
4260         Use curr_insn_locator to initialize locator.
4261         (emit_line_note): Remove.
4262         * cfgexpand.c (expand_gimple_cond_expr): Update.
4263         (construct_exit_block): Likewise.
4264         (tree_expand_cfg): Initialize/finalize locators.
4265         * expr.c (expand_expr_real): Update.
4266         * cfglayout.c (line_locators_locs, line_locators_lines,
4267         file_locators_locs, file_locators_files): Remove.
4268         (set_block_levels): Move to cfgexpand.c.
4269         (insn_locators_initialize): Remove.
4270         (pass_insn_locators_initialize): Remove.
4271         (locations_locators_locs, locations_locators_vals): New static vars.
4272         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
4273         Likewise.
4274         (insn_locators_alloc, insn_locators_finalize,
4275         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4276         New functions.
4277         (locator_location): New.
4278         (locator_line, locator_file): Rewrite.
4279         * rtl.h (emit_line_note): Kill.
4280         (insn_locators_alloc, insn_locators_finalize,
4281         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4282         Declare.
4283         * tree-inline.c (initialize_cfun): Do not initialize
4284         ib_boundaries_block.
4285         * passes.c (pass_insn_locators_initialize): Remove.
4286
4287 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
4288
4289         * tree-cfg.c (move_block_to_fn): Release bb from dominance
4290         info.  Update last_basic_block correctly.
4291
4292 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4293
4294         PR target/31701
4295         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
4296         register itself to hold the offset constant.  Tell flow the use
4297         of r4 and r5 when they are used.
4298
4299 2007-04-27  Richard Guenther  <rguenther@suse.de>
4300
4301         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
4302         if we simplified anything.
4303         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
4304         warnings until we did a simplification and the stmt was not
4305         marked as TREE_NO_WARNING.
4306
4307 2007-04-27  Mike Stump  <mrs@apple.com>
4308
4309         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
4310
4311 2007-04-27  Ian Lance Taylor  <iant@google.com>
4312
4313         PR middle-end/31710
4314         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
4315         TYPE_MAX_VALUE exist, convert them to the new type.
4316
4317 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
4318
4319         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
4320         if it claims to be available.
4321         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
4322         edge is redirected.
4323         (perform_tree_ssa_dce): Always free postdominators.
4324
4325 2007-04-27  Richard Henderson  <rth@redhat.com>
4326
4327         * config/alpha/predicates.md (aligned_memory_operand): Mark
4328         as define_special_predicate.
4329         (unaligned_memory_operand, normal_memory_operand): Likewise.
4330         (reg_or_unaligned_mem_operand): Remove.
4331         (any_memory_operand): Match the documentation and check for
4332         non-renumbered pseudos during reload.
4333         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
4334         alpha_secondary_reload_class, update to new interface, make static.
4335         Handle CQImode like HImode.  Remove FP subreg check.
4336         (alpha_expand_mov): Use replace_equiv_address.
4337         (alpha_expand_mov_nobwx): Use any_memory_operand.
4338         (TARGET_SECONDARY_RELOAD): New.
4339         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
4340         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
4341         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
4342         * config/alpha/alpha.md: ... here.
4343         (RELOAD12, reloadmode): New.
4344         (movcqi): New.
4345         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
4346         Don't handle the aligned case here.
4347         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
4348         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
4349         reload_inhi_help.  Don't expect a scratch register.
4350         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
4351         reload_outhi_help.
4352         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
4353
4354 2007-04-27  Richard Guenther  <rguenther@suse.de>
4355
4356         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
4357
4358 2007-04-27  Richard Guenther  <rguenther@suse.de>
4359
4360         PR tree-optimization/30965
4361         PR tree-optimization/30978
4362         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
4363         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
4364         (find_equivalent_equality_comparison): Likewise.
4365         (simplify_cond): Likewise.
4366         (get_prop_source_stmt): New helper.
4367         (get_prop_dest_stmt): Likewise.
4368         (can_propagate_from): Likewise.
4369         (remove_prop_source_from_use): Likewise.
4370         (combine_cond_expr_cond): Likewise.
4371         (forward_propagate_comparison): New function.
4372         (forward_propagate_into_cond): Rewrite to use fold for
4373         tree combining.
4374         (tree_ssa_forward_propagate_single_use_vars): Call
4375         forward_propagate_comparison to propagate comparisons.
4376
4377 2007-04-27  Richard Guenther  <rguenther@suse.de>
4378
4379         PR tree-optimization/31715
4380         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
4381         sure to do computation on the offset in an appropriate
4382         signed type.
4383
4384 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
4385
4386         * reload.h (elimination_target_reg_p): Declare.
4387         * reload.c (find_reloads): Don't apply the reg_rtx move
4388         optimization if the SET_DEST satisfies elimination_target_reg_p.
4389         * reload1.c (elimination_target_reg_p): New function.
4390         (gen_reload): In the move/add2 fallback, make sure that op0
4391         does not overlap the destination register.
4392
4393 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
4394
4395         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
4396         transform only GIMPLE_MODIFY_STMTs.
4397         * tree-complex.c (expand_complex_operations_1): Ditto.
4398         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
4399         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
4400         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
4401         branches.
4402         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
4403         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
4404         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
4405         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
4406         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
4407         slpeel_add_loop_guard): Ditto.
4408         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
4409         * lambda-code.c (perfect_nestify): Ditto.
4410         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
4411         before the first statement.
4412         * tree-optimize.c (execute_free_datastructures): Fix comments.
4413         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
4414         * tree-flow.h (disband_implicit_edges): Declaration removed.
4415         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
4416         branches.
4417         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
4418         without gotos.
4419         (disband_implicit_edges, has_label_p): Removed.
4420         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
4421         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
4422         branches.
4423         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
4424         side effects.
4425         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
4426         also for COND_EXPRs.
4427         * cfgexpand.c (label_rtx_for_bb): New function.
4428         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
4429         Use label_rtx_for_bb to find the labels.
4430         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
4431         last block.  Detect fallthru edges.
4432
4433 2007-04-26  Ian Lance Taylor  <iant@google.com>
4434
4435         PR target/28675
4436         * reload.c (find_reloads_subreg_address): If the address was valid
4437         in the original mode but not in the new mode, reload the whole
4438         address.
4439
4440 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
4441
4442         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
4443         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
4444         (cleanup_control_expr_graph): Do not invalidate dominance info.
4445         Record altered blocks.
4446         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
4447         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
4448         cleanup_tree_cfg_bb): New functions.
4449         (remove_forwarder_block): Do not maintain the worklist of blocks.
4450         Record altered blocks.
4451         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
4452         not over whole cfg.
4453         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
4454         delete_unreachable_blocks if dominators are not available.
4455         * tree-inline.c (optimize_inline_calls): Free dominance information
4456         earlier.
4457         * tree-flow.h (remove_edge_and_dominated_blocks,
4458         cfgcleanup_altered_bbs): Altered.
4459         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
4460         blocks.
4461         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
4462         functions.
4463         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
4464         do not invalidate dominators.
4465
4466 2007-04-26  Anatoly Sokolov <aesok@post.ru>
4467
4468         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
4469         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
4470         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
4471         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
4472
4473 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
4474
4475         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
4476
4477 2007-04-26  Richard Guenther  <rguenther@suse.de>
4478
4479         PR tree-optimization/31703
4480         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
4481         the right type for the target of the bittest.
4482
4483 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
4484
4485         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
4486         ix86_sol10_return_in_memory.
4487
4488 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
4489
4490         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
4491         variables.
4492
4493 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
4494
4495         PR c++/31598
4496         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
4497
4498         PR tree-optimization/30558
4499         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
4500         clear this_state.prev_try.
4501
4502 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
4503             Mark Mitchell  <mark@codesourcery.com>
4504
4505         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
4506         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
4507         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
4508
4509 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
4510
4511         PR driver/31107
4512         * doc/invoke.texi (%:print-asm-header): Document.
4513         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
4514         and -ftarget-help.
4515         (static_spec_functions): Add print-asm-header.
4516         (main): Print a banner before the --target-help linker options.
4517         (print_asm_header_spec_function): New function.
4518
4519 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
4520
4521         PR target/31403
4522         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
4523         (movsf_ie): Likewise.
4524
4525 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
4526
4527         * doc/extend.texi ([Type Traits]): Adjust per N2255.
4528
4529 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
4530
4531         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
4532         for divide-by-zero.
4533         (__umodsi3, __modsi3): Likewise.
4534
4535 2007-04-25  Dirk Mueller  <dmueller@suse.de>
4536
4537         * c-typeck.c (build_compound_expr): Annotate warning()
4538         call with OPT_Wunused_value.
4539         * tree-ssa.c (warn_uninit): Annotate warning with
4540         OPT_Wunintialized.
4541         * c-common.c (handle_sentinel_attribute): Annotate warning
4542         call with OPT_Wattributes.
4543
4544 2007-04-25  Thiemo Seufer  <ths@mips.com>
4545
4546         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
4547         (mips16): Fix typo.
4548         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
4549         on to the assembler.  Improve handling of -mno-mips16.  Add handling
4550         of -mno-mips3d, -mno-dsp, -mno-dspr2.
4551         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
4552         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
4553         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
4554
4555 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
4556
4557         PR target/31680
4558         * config/i386/winnt.c (i386_pe_file_end): Strip only
4559         USER_LABEL_PREFIX when writing export name.
4560
4561 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
4562
4563         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
4564         sh/elf.h, vx-common.h and vxworks.h.
4565         * config/sh/sh.h: Include config/vxworks-dummy.h.
4566         (SUBTARGET_OVERRIDE_OPTIONS): Define.
4567         (OVERRIDE_OPTIONS): Use it.
4568         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
4569         (vxworks_picreg): New pattern.
4570         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
4571         VXWORKS_OS_CPP_BUILTINS.
4572         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
4573         to their VXWORKS_* equivalents.
4574         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
4575         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
4576         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
4577         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
4578         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
4579         -mrtp/-fPIC multilibs.
4580         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
4581         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
4582         (MULTILIB_OSDIRNAMES): Delete.
4583
4584 2007-04-25  Anatoly Sokolov <aesok@post.ru>
4585
4586         PR target/18989
4587         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
4588
4589 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
4590
4591         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
4592         rounding mode to be specified by the caller.
4593         (real_to_mpfr) Likewise.
4594         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
4595         include new arguments.
4596         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
4597
4598 2007-04-24  Ian Lance Taylor  <iant@google.com>
4599
4600         PR tree-optimization/31605
4601         * tree-vrp.c (set_value_range): Check that min and max are not
4602         both overflow infinities.
4603         (set_value_range_to_value): New static function.
4604         (extract_range_from_binary_expr): Call set_value_range_to_value.
4605         (extract_range_from_cond_expr): Likewise.
4606         (extract_range_from_expr): Likewise.
4607         (extract_range_from_unary_expr): Likewise.  Don't create a range
4608         which overflows on both sides.
4609         (vrp_meet): Check for a useless range.
4610         (vrp_visit_phi_node): If we see a constant which looks like an
4611         overflow infinity, turn off the TREE_OVERFLOW flag.
4612
4613 2007-04-24  Ian Lance Taylor  <iant@google.com>
4614
4615         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
4616
4617 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
4618
4619         PR diagnostic/25923
4620         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
4621         diagnostic message is being built.
4622         * tree-pretty-print.c (dump_generic_node): Only write the
4623         formatted text into BUFFER's stream if we are not building a
4624         diagnostic message.
4625         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
4626         dump_generic_node.
4627         * Makefile.in (toplev.o): Depend on tree-pass.h.
4628
4629 2007-04-24  Ian Lance Taylor  <iant@google.com>
4630
4631         PR tree-optimization/31602
4632         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
4633         conditionals in the copied loop header.
4634         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
4635         warnings if TREE_NO_WARNING is set.
4636         * doc/invoke.texi (Warning Options): Clarify that
4637         -Wstrict-overflow does not warn about loops.
4638
4639 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
4640
4641         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
4642         expand on the comment about _Decimal128 arguments and check the
4643         integer result of the modulus operation; for 64-bit ELF ABI, ensure
4644         that _Decimal128 argument uses even/odd register pair.
4645         (function_arg): Ditto.
4646
4647 2007-04-24  Hui-May Chang <hm.chang@apple.com>
4648
4649         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
4650         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
4651
4652 2007-04-24  Richard Guenther  <rguenther@suse.de>
4653             Olga Golovanevsky  <olga@il.ibm.com>
4654
4655         * fold-const.c (multiple_of_p): Check for bottom
4656         to be zero.
4657
4658 2007-04-24  Richard Henderson  <rth@redhat.com>
4659
4660         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
4661         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
4662         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
4663         looking for non-zero bits shifted out.  Avoid a recursive call
4664         when constructing the scalar.
4665         (__floatundisf): Likewise.
4666
4667 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
4668
4669         * dwarf2out.c (field_byte_offset): Move the existing logic
4670         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
4671         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
4672
4673 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
4674
4675         PR target/31641
4676         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
4677         argument of 0 for memset.
4678         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
4679         unsigned shift instead of the signed variant.
4680
4681 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
4682
4683         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
4684         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
4685         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
4686         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
4687         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
4688         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
4689         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
4690         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
4691         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
4692         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
4693         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
4694         "mul<mode>3", "div<mode>3"): Insn definitions added.
4695         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
4696         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
4697         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
4698         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
4699         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
4700         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
4701         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
4702         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
4703         TARGET_FLOAT_FORMAT): Macro definitions removed.
4704         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
4705         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
4706         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
4707         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
4708         (s390_gen_rtx_const_DI): Function removed.
4709         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
4710
4711 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
4712
4713         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
4714         over an external ffs function.
4715
4716 2007-04-24  Chao-ying Fu  <fu@mips.com>
4717             Richard Sandiford  <richard@nildram.co.uk>
4718
4719         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
4720         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
4721         (smadd_widen_optab, umadd_widen_optab): Define.
4722         * optabs.c (init_optabs): Initialize smadd_widen_optab and
4723         umadd_widen_optab.
4724         * genopinit.c (optabs): Fill in smadd_widen_optab and
4725         umadd_widen_optab.
4726         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
4727         and umadd_widen_optab to implement multiply-add sequences.
4728         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
4729         (<u>maddsidi4): ...this.  Extend condition to include
4730         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
4731         of operand 0 to "ka" and use the three-operand form of madd<u>
4732         for TARGET_DSPR2.
4733         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
4734         to define_expands.
4735         * config/mips/constraints.md (ka): New register constraint.
4736
4737 2007-04-24  Jan Hubicka  <j@suse.cz>
4738
4739         Revert:
4740
4741         2007-04-23  Jan Hubicka  <jh@suse.cz>
4742         * function.c (init_function_start): Don't init line number info.
4743         (expand_function_end): Update.
4744         (reset_block_changes, record_block_change, finalize_block_changes,
4745         check_block_change, free_block_changes): Kill.
4746         * function.h (reset_block_changes, record_block_change,
4747         finalize_block_changes, check_block_change, free_block_changes): Remove
4748         prototypes.
4749         (struct function): Remove ib_boundaries_block.
4750         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
4751         Use curr_insn_locator to initialize locator.
4752         (emit_line_note): Remove.
4753         * cfgexpand.c (expand_gimple_cond_expr): Update.
4754         (construct_exit_block): Likewise.
4755         (tree_expand_cfg): Initialize/finalize locators.
4756         * expr.c (expand_expr_real): Update.
4757         * cfglayout.c (line_locators_locs, line_locators_lines,
4758         file_locators_locs, file_locators_files): Remove.
4759         (set_block_levels): Move to cfgexpand.c.
4760         (insn_locators_initialize): Remove.
4761         (pass_insn_locators_initialize): Remove.
4762         (locations_locators_locs, locations_locators_vals): New static vars.
4763         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
4764         Likewise.
4765         (insn_locators_alloc, insn_locators_finalize,
4766         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4767         New functions.
4768         (locator_location): New.
4769         (locator_line, locator_file): Rewrite.
4770         * rtl.h (emit_line_note): Kill.
4771         (insn_locators_alloc, insn_locators_finalize,
4772         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4773         Declare.
4774         * tree-inline.c (initialize_cfun): Do not initialize
4775         ib_boundaries_block.
4776         * passes.c (pass_insn_locators_initialize): Remove.
4777
4778 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
4779
4780         * doc/invoke.texi: Removed leading '-' from option index entries.
4781
4782 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
4783
4784         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
4785         Use phi_nodes_ptr.
4786         (create_phi_node): Use set_phi_nodes.
4787         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
4788         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
4789         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
4790         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
4791         (bsi_start, bsi_last): Use bb_stmt_list.
4792         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
4793         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
4794         Traverse the statements using tsi iterator.
4795         * basic-block.h (struct basic_block_def): Fields stmt_list
4796         and phi_nodes moved to ...
4797         (struct tree_bb_info): ... new structure.
4798         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
4799         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
4800         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
4801         (tree_verify_flow_info): Verify that il.tree is not set for
4802         entry and exit block.
4803         (tree_split_block): Use set_bb_stmt_list.
4804
4805 2007-04-23  Mike Stump  <mrs@apple.com>
4806
4807         * config/i386/i386.c (ix86_tune_features
4808         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
4809         nocona and core2.
4810
4811 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
4812
4813         * config/i386/i386.md (prefix_extra): New attribute.
4814         (length): Add prefix_extra.
4815
4816         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
4817         (sse2_movntv2di): Likewise.
4818         (sse2_cvtps2dq): Likewise.
4819         (sse2_cvtpd2pi): Likewise.
4820         (sse2_cvttpd2pi): Likewise.
4821         (*sse2_cvtpd2ps): Likewise.
4822         (*add<mode>3): Likewise.
4823         (sse2_ssadd<mode>3): Likewise.
4824         (sse2_usadd<mode>3): Likewise.
4825         (*sub<mode>3): Likewise.
4826         (sse2_sssub<mode>3): Likewise.
4827         (sse2_ussub<mode>3): Likewise.
4828         (*mulv8hi3): Likewise.
4829         (*smulv8hi3_highpart): Likewise.
4830         (*umulv8hi3_highpart): Likewise.
4831         (sse2_umulv2siv2di3): Likewise.
4832         (sse2_pmaddwd): Likewise.
4833         (ashr<mode>3): Likewise.
4834         (lshr<mode>3): Likewise.
4835         (ashl<mode>3): Likewise.
4836         (sse2_ashlti3): Likewise.
4837         (sse2_lshrti3): Likewise.
4838         (*umaxv16qi3): Likewise.
4839         (*smaxv8hi3): Likewise.
4840         (*uminv16qi3): Likewise.
4841         (*sminv8hi3): Likewise.
4842         (sse2_eq<mode>3): Likewise.
4843         (sse2_gt<mode>3): Likewise.
4844         (*and<mode>3): Likewise.
4845         (sse2_nand<mode>3): Likewise.
4846         (*ior<mode>3): Likewise.
4847         (*xor<mode>3): Likewise.
4848         (sse2_packsswb): Likewise.
4849         (sse2_packssdw): Likewise.
4850         (sse2_packuswb): Likewise.
4851         (sse2_punpckhbw): Likewise.
4852         (sse2_punpcklbw): Likewise.
4853         (sse2_punpckhwd): Likewise.
4854         (sse2_punpcklwd): Likewise.
4855         (sse2_punpckhdq): Likewise.
4856         (sse2_punpckldq): Likewise.
4857         (sse2_punpckhqdq): Likewise.
4858         (sse2_punpcklqdq): Likewise.
4859         (*sse2_pinsrw): Likewise.
4860         (*sse2_pextrw): Likewise.
4861         (sse2_pshufd_1): Likewise.
4862         (sse2_uavgv16qi3): Likewise.
4863         (sse2_uavgv8hi3): Likewise.
4864         (sse2_psadbw): Likewise.
4865         (sse2_pmovmskb): Likewise.
4866         (*sse2_maskmovdqu): Likewise.
4867         (*sse2_maskmovdqu_rex64): Likewise.
4868         (sse4a_extrqi): Likewise.
4869         (sse4a_extrq): Likewise.
4870         (sse3_lddqu): Set prefix_rep.
4871         (sse3_addsubv4sf3): Likewise.
4872         (sse3_haddv4sf3): Likewise.
4873         (sse3_hsubv4sf3): Likewise.
4874         (sse_cvtss2si): Likewise.
4875         (sse_cvtss2si_2): Likewise.
4876         (sse_cvtss2siq): Likewise.
4877         (sse_cvtss2siq_2): Likewise.
4878         (sse_cvttss2si): Likewise.
4879         (sse_cvttss2siq): Likewise.
4880         (sse2_cvttps2dq): Likewise.
4881         (sse3_movshdup): Likewise.
4882         (sse3_movsldup): Likewise.
4883         (sse2_cvtsd2si): Likewise.
4884         (sse2_cvtsd2si_2): Likewise.
4885         (sse2_cvtsd2siq): Likewise.
4886         (sse2_cvtsd2siq_2): Likewise.
4887         (sse2_cvttsd2si): Likewise.
4888         (sse2_cvttsd2siq): Likewise.
4889         (*sse2_cvtpd2dq): Likewise.
4890         (*sse2_cvttpd2dq): Likewise.
4891         (sse2_pshuflw_1): Likewise.
4892         (sse2_pshufhw_1): Likewise.
4893         (sse4a_insertqi): Likewise.
4894         (sse4a_insertq): Likewise.
4895         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
4896         (ssse3_phadddv4si3): Likewise.
4897         (ssse3_phaddswv8hi3): Likewise.
4898         (ssse3_phsubwv8hi3): Likewise.
4899         (ssse3_phsubdv4si3): Likewise.
4900         (ssse3_phsubswv8hi3): Likewise.
4901         (ssse3_pmaddubswv8hi3): Likewise.
4902         (ssse3_pmulhrswv8hi3): Likewise.
4903         (ssse3_pshufbv16qi3): Likewise.
4904         (ssse3_psign<mode>3): Likewise.
4905         (ssse3_palignrti): Likewise.
4906         (abs<mode>2): Likewise.
4907         (ssse3_phaddwv4hi3): Set prefix_extra.
4908         (ssse3_phadddv2si3): Likewise.
4909         (ssse3_phaddswv4hi3): Likewise.
4910         (ssse3_phsubwv4hi3): Likewise.
4911         (ssse3_phsubdv2si3): Likewise.
4912         (ssse3_phsubswv4hi3): Likewise.
4913         (ssse3_pmaddubswv4hi3): Likewise.
4914         (ssse3_pmulhrswv4hi3): Likewise.
4915         (ssse3_pshufbv8qi3): Likewise.
4916         (ssse3_psign<mode>3): Likewise.
4917         (ssse3_palignrdi): Likewise.
4918         (abs<mode>2): Likewise.
4919         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
4920         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
4921         (sse2_pmovmskb): Set mode to SI instead of V2DF.
4922
4923 2007-04-23  Nick Clifton  <nickc@redhat.com>
4924
4925         * params.def: Fix formatting of emacs local variables.
4926
4927 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
4928
4929         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
4930         move if inter-unit move isn't allowed.
4931         Don't split moving the first element of V2DI to DI to inter-unit
4932         move if inter-unit move isn't allowed.
4933
4934 2007-04-23  Richard Guenther  <rguenther@suse.de>
4935
4936         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
4937         and CDI_POST_DOMINATORS separately.
4938
4939 2007-04-23  Nick Clifton  <nickc@redhat.com>
4940
4941         * c.opt (Wformat-contains-nul): Add warning attribute.
4942
4943 2007-04-23  Jan Hubicka  <jh@suse.cz>
4944
4945         * function.c (init_function_start): Don't init line number info.
4946         (expand_function_end): Update.
4947         (reset_block_changes, record_block_change, finalize_block_changes,
4948         check_block_change, free_block_changes): Kill.
4949         * function.h (reset_block_changes, record_block_change,
4950         finalize_block_changes, check_block_change, free_block_changes): Remove
4951         prototypes.
4952         (struct function): Remove ib_boundaries_block.
4953         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
4954         Use curr_insn_locator to initialize locator.
4955         (emit_line_note): Remove.
4956         * cfgexpand.c (expand_gimple_cond_expr): Update.
4957         (construct_exit_block): Likewise.
4958         (tree_expand_cfg): Initialize/finalize locators.
4959         * expr.c (expand_expr_real): Update.
4960         * cfglayout.c (line_locators_locs, line_locators_lines,
4961         file_locators_locs, file_locators_files): Remove.
4962         (set_block_levels): Move to cfgexpand.c.
4963         (insn_locators_initialize): Remove.
4964         (pass_insn_locators_initialize): Remove.
4965         (locations_locators_locs, locations_locators_vals): New static vars.
4966         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
4967         Likewise.
4968         (insn_locators_alloc, insn_locators_finalize,
4969         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4970         New functions.
4971         (locator_location): New.
4972         (locator_line, locator_file): Rewrite.
4973         * rtl.h (emit_line_note): Kill.
4974         (insn_locators_alloc, insn_locators_finalize,
4975         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4976         Declare.
4977         * tree-inline.c (initialize_cfun): Do not initialize
4978         ib_boundaries_block.
4979         * passes.c (pass_insn_locators_initialize): Remove.
4980
4981 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4982
4983         PR middle-end/31448
4984         * expr.c (reduce_to_bit_field_precision): Handle
4985         CONST_INT rtx's.
4986
4987 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
4988
4989         PR tree-optimization/24659
4990         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
4991         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
4992         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
4993         * genopinit.c (optabs): Rename vec_pack_mod_optab
4994         to vec_pack_trunc_optab.
4995         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
4996         early for scalar floating point operands for NOP_EXPR.
4997         (vectorizable_type_promotion): Ditto.
4998         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
4999         vec_pack_trunc_optab.
5000         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
5001
5002         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
5003         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
5004         Rename from VEC_PACK_MOD_EXPR.
5005         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
5006         * expr.c (expand_expr_real_1): Ditto.
5007         * tree-inline.c (estimate_num_insns_1): Ditto.
5008         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
5009
5010         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
5011         (vec_unpacks_lo_v4sf): Ditto.
5012         (vec_pack_trunc_v2df): Ditto.
5013         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
5014         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
5015         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
5016
5017         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
5018         vec_pack_mod_v8hi.
5019         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
5020
5021         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
5022         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
5023         packing of floating point operands.
5024         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
5025         represent unpacking of floating point operands.
5026         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
5027         [vec_unpacks_hi]: Ditto.
5028         [vec_unpacks_lo]: Ditto.
5029
5030 2007-04-22  Jan Hubicka  <jh@suse.cz>
5031
5032         * final.c (rest_of_handle_final): Call
5033         targetm.asm_out.constructor/targetm.asm_out.destructor
5034         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
5035         proper priority via decl_*_priority_insert.
5036         * c-common.c (c_expand_body): Likewise.
5037
5038 2007-04-22  Richard Guenther  <rguenther@suse.de>
5039
5040         PR tree-optimization/29789
5041         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
5042         (rewrite_reciprocal): New helper split out from
5043         determine_invariantness_stmt.
5044         (rewrite_bittest): Likewise.
5045         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
5046         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
5047         is not.
5048
5049 2007-04-22  Revital Eres  <eres@il.ibm.com>
5050
5051         * loop-unroll.c (var_to_expand): New field to support also
5052         insns of the form x = something + x.
5053         (analyze_insn_to_expand_var): Use it.
5054         (expand_var_during_unrolling): Likewise.
5055
5056 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
5057
5058         * predict.c: Include pointer-set.h.
5059         (bb_predictions): New variable.
5060         (tree_predicted_by_p, tree_predict_edge,
5061         remove_predictions_associated_with_edge): Use bb_predictions map
5062         instead of bb->predictions.
5063         (clear_bb_predictions, assert_is_empty): New functions.
5064         (combine_predictions_for_bb): Use bb_predictions map.  Call
5065         clear_bb_predictions.
5066         (tree_estimate_probability): Create and free bb_predictions map.
5067         * Makefile.in (predict.o): Add pointer-set.h dependency.
5068         * basic-block.h (struct basic_block_def): Remove predictions
5069         field.
5070         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
5071
5072 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
5073
5074         PR target/31480
5075         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
5076         is null.
5077
5078 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5079
5080         * timevar.c (timevar_print): Change reference of --disable-checking to
5081         --enable-checking=release.  Also warn if assert checking is disabled.
5082
5083 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5084
5085         PR C/30265
5086         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
5087         decl as addressable if the compound literal was marked as
5088         addressable.
5089         Mark the decl as a gimple register if it is a complex or
5090         vector decl and does not live in memory.
5091
5092 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5093
5094         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
5095         (GENERIC_NEXT): New function macro.
5096         (PHI_CHAIN): Use phi_node's new chain variable.
5097         (tree_phi_node): Change tree_common to tree_base
5098         and add the chain field.
5099         * tree-phinodes.c (make_phi_node): Don't set
5100         TREE_TYPE on the new node.
5101         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
5102         instead of checking GIMPLE_TUPLE_P in chain_next.
5103         * tree-vect-transform.c
5104         (get_initial_def_for_induction): Look at
5105         PHI_RESULT_TREE for the type of the phi node.
5106         (update_vuses_to_preheader): Use PHI_CHAIN
5107         instead of TREE_CHAIN on the phi node.
5108         * tree-ssa-structalias.c (compute_points_to_sets):
5109         Likewise.
5110         (ipa_pta_execute): Likewise.
5111
5112 2007-04-21  Richard Guenther  <rguenther@suse.de>
5113
5114         PR middle-end/31136
5115         * fold-const.c (fold_unary): Call fold_convert_const on the
5116         original tree.
5117
5118 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
5119
5120         * gcse.c (store_killed_in_insn): Handle PARALLELs.
5121         (store_killed_in_pat): New.
5122
5123 2007-04-20  Richard Henderson  <rth@redhat.com>
5124
5125         PR target/31628
5126         * config/i386/i386.c (type_has_variadic_args_p): Look for any
5127         TREE_LIST with a void_type_node value, not void_list_node exactly.
5128
5129 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
5130
5131         * doc/standards.texi: Re-arrange into language-specific
5132         subsections. Add a C++ section, documenting which standards we
5133         support.
5134
5135 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
5136
5137         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
5138         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
5139
5140 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
5141
5142         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
5143         ecrti.o and crtbegin.o.
5144         (LIB_DEFAULT_SPEC): Include -lc.
5145         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
5146
5147 2007-04-20  Richard Henderson  <rth@redhat.com>
5148
5149         PR target/28623
5150         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
5151         argument; update all callers.
5152         (get_unaligned_offset): New.
5153         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
5154         get_unaligned_address, just pass on the address directly.
5155         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
5156         the subreg in the helper patterns.
5157         (unaligned_extendqidi_le): Use get_unaligned_offset.
5158         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
5159         (unaligned_extendhidi_be): Likewise.
5160         (unaligned_extendhidi): Tidy.
5161         * config/alpha/alpha-protos.h: Update.
5162
5163 2007-04-20  Richard Henderson  <rth@redhat.com>
5164
5165         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
5166         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
5167         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
5168         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
5169         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
5170         (CPP_SPEC): Don't include %(cpp_subtarget).
5171         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
5172         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
5173         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
5174
5175 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
5176
5177         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
5178         for __builtin_ia32_cmpordss.
5179
5180         PR tree-optimization/31632
5181         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
5182         and arg1 for optimizations of comparison against min/max values.
5183         Fold arg0 to arg1's type for optimizations of comparison against
5184         min+1 and max-1 values.
5185
5186 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
5187
5188         * reload.c (combine_reloads): When trying to use a dying register,
5189         check whether it's uninitialized and don't use if so.
5190
5191 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
5192
5193         * fold-const.c: Remove prototypes for native_encode_expr and
5194         native_interpret_expr.
5195         (native_encode_expr): Make non-static.
5196         (native_interpret_expr): Likewise.
5197         * tree.h: Add prototypes for the above.
5198
5199 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
5200
5201         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
5202         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
5203         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
5204         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
5205         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
5206         Add length attributes.
5207
5208 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
5209
5210         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
5211         not that it is 1.
5212
5213         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
5214         __STDC_WANT_DEC_FP__.
5215
5216 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
5217
5218         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
5219         for long double compatibility.
5220         * configure: Regenerate.
5221
5222 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
5223
5224         PR rtl-optimization/29841
5225         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
5226         trap instructions.
5227         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
5228         that may cause control flow transfer from being moved.
5229
5230 2007-04-18  Jan Hubicka  <jh@suse.cz>
5231
5232         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
5233         types.
5234
5235 2007-04-18  Eric Christopher  <echristo@apple.com>
5236
5237         * config/rs6000/darwin.md (load_macho_picbase): Use link register
5238         only. Update operands.
5239         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
5240         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
5241         link register to pic register.
5242
5243 2007-04-18  Dirk Mueller  <dmueller@suse.de>
5244
5245         PR diagnostic/31227
5246         * tree-vrp.c (search_for_addr_array): New.
5247         (check_array_bounds): Suppress warning about
5248         address taken of array refs if its not de-referenced.
5249
5250 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
5251
5252         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
5253         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
5254
5255         * tree-vectorizer.h (NITERS_KNOWN_P): New.
5256         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
5257         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
5258
5259         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
5260         dump print.
5261         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
5262         print message.
5263         (vect_analyze_scalar_cycles): Fix indentation.
5264         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
5265         (vect_mark_relevant): Include phis in relevance analysis.
5266
5267         * tree-vect-transform.c (vect_transform_loop): Add an assert.
5268
5269 2007-04-18  Anatoly Sokolov <aesok@post.ru>
5270
5271         * config/avr/avr.c (ptrreg_to_str): Replace error() with
5272         output_operand_lossage().
5273
5274 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
5275
5276         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
5277         the unused code for reduction without adjust-in-epilog to simplify the
5278         function.
5279
5280 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
5281
5282         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
5283         (S390_TDC_NEGATIVE_ZERO): New constant.
5284         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
5285         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
5286         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
5287         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
5288         (S390_TDC_POSITIVE_INFINITY): New constant.
5289         (S390_TDC_NEGATIVE_INFINITY): New constant.
5290         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
5291         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
5292         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
5293         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
5294         (S390_TDC_INFINITY): New constant.
5295         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
5296         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
5297         optimization for UNSPEC_CCZ_TO_INT.
5298         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
5299         ("*ccz_to_int"): New insn.
5300         ("isinf<mode>2"): New insn.
5301         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
5302         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
5303         (UNSPEC_CCZ_TO_INT): New constant.
5304
5305 2007-04-18  Richard Guenther  <rguenther@suse.de>
5306
5307         PR tree-optimization/19431
5308         PR tree-optimization/21463
5309         * tree-pass.h (pass_phiprop): Declare.
5310         * passes.c (init_optimization_passes): New phiprop pass.
5311         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
5312         (phivn_valid_p): New helper function.
5313         (phiprop_insert_phi): Likewise.
5314         (propagate_with_phi): Likewise.
5315         (tree_ssa_phiprop): New propagator propagating loads
5316         through phi nodes if profitable.
5317
5318 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
5319
5320         * tree-vect-analyze.c (process_use): New function.
5321         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
5322         Check phis in all bbs.
5323         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
5324         assert.
5325
5326 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
5327
5328         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
5329         we use REG_EQUAL.
5330
5331 2007-04-17  Anatoly Sokolov <aesok@post.ru>
5332
5333         PR target/30483
5334         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
5335         error().
5336
5337 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
5338
5339         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
5340         on "0".
5341         (sse_vmmulv4sf3): Likewise.
5342         (sse2_vmaddv2df3): Likewise.
5343         (sse2_vmmulv2df3): Likewise.
5344
5345 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
5346
5347         PR rtl-optimization/31360
5348         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
5349         (target_reg_cost): New.
5350         (init_set_costs): Initialize target_reg_cost.  Add comments
5351         regarding the rationale of the costs.
5352         (global_cost_for_size): Renamed to...
5353         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
5354         of register pressure.
5355         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
5356         estimate_reg_pressure_cost.  Add number of ivs.
5357         (determine_set_costs): Dump target_reg_cost.
5358         * loop-invariant.c (gain_for_invariant):  Use
5359         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
5360         (best_gain_for_invariant, find_invariants_to_move): Remove
5361         n_inv_uses.
5362         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
5363         (target_reg_cost): Declare.
5364         (global_cost_for_size): Declaration removed.
5365         (estimate_reg_pressure_cost): Declare.
5366
5367 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
5368
5369         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
5370         regnos into even/odd register pairs.
5371         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
5372         TDmode similar to the other floating point modes.
5373         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
5374         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
5375         define_expand's.
5376         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
5377         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
5378         (movdd_hardfloat64): Use TARGET_MFPGPR.
5379
5380 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
5381
5382         * reload1.c (delete_output_reload): Don't count output in n_inherited.
5383
5384         Revert
5385         2005-01-05  Richard Henderson  <rth@redhat.com>
5386         PR rtl-opt/10692
5387         * reload1.c (do_input_reload): Restrict the optimization deleteing
5388         a previous output reload to RELOAD_FOR_INPUT.
5389
5390 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
5391
5392         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
5393         induc_vec_info_type.
5394         (vectorizable_induction): New function declaration.
5395         * tree-vect-transform.c (get_initial_def_for_induction): No need to
5396         check if already vectorized.  Find first place in BB where new stmts
5397         can be inserted.  Takes only one argument.
5398         (vectorizable_induction): New function.
5399         (vect_transform_stmt): Add case for induc_vec_info_type to call
5400         vectorizable_induction.
5401         (vect_transform_loop): Consider phis for vectorization.
5402         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
5403         condition.
5404         (analyze_operations): Call vectorizable_induction when analyzing phis.
5405         Fix comment.
5406         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
5407         (vect_mark_relevant): Include phis in relevance analysis.
5408         (vect_mark_stmts_to_be_vectorize): Likewise.
5409         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
5410
5411 2007-04-16  Lawrence Crowl  <crowl@google.com>
5412
5413         * doc/invoke.texi (Debugging Options): Add documentation for the
5414         -femit-struct-debug options -femit-struct-debug-baseonly,
5415         -femit-struct-debug-reduced, and
5416         -femit-struct-debug-detailed[=...].
5417
5418         * c-opts.c (c_common_handle_option): Add
5419         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
5420         and OPT_femit_struct_debug_detailed_.
5421         * c.opt: Add specifications for
5422         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
5423         and -femit-struct-debug-detailed[=...].
5424         * opts.c (set_struct_debug_option): Parse the
5425         -femit-struct-debug-... options.
5426         * opts.c (matches_main_base, main_input_basename,
5427         main_input_baselength, base_of_path, matches_main_base): Add
5428         variables and functions to compare header base name to compilation
5429         unit base name.
5430         * opts.c (should_emit_struct_debug): Add to determine to emit a
5431         structure based on the option.
5432         (dump_struct_debug) Also disabled function to debug this
5433         function.
5434         * opts.c (handle_options): Save the base name of the
5435         compilation unit.
5436
5437         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
5438         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
5439         This hook indicates if a type is generic.  Set it by default
5440         to "never generic".
5441         * langhooks.h (struct lang_hooks_for_types): Add a new hook
5442         to determine if a struct type is generic or not.
5443         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
5444         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
5445         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
5446         with live C++ hook.
5447
5448         * flags.h (enum debug_info_usage): Add an enumeration to describe
5449         a program's use of a structure type.
5450         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
5451         to indicate the program's usage of the type.  Filter structs based
5452         on the -femit-struct-debug-... specification.
5453         (gen_type_die): Split into two routines, gen_type_die and
5454         gen_type_die_with_usage.  gen_type_die is now a wrapper
5455         that assumes direct usage.
5456         (gen_type_die_with_usage): Replace calls to gen_type_die
5457         with gen_type_die_with_usage adding the program usage of
5458         the referenced type.
5459         (dwarf2out_imported_module_or_decl): Suppress struct debug
5460         information using should_emit_struct_debug when appropriate.
5461
5462 2007-04-16  Ian Lance Taylor  <iant@google.com>
5463
5464         PR tree-optimization/31522
5465         * tree-vrp.c (vr_phi_edge_counts): New static variable.
5466         (vrp_initialize): Allocate vr_phi_edge_counts.
5467         (vrp_visit_phi_node): Don't push to infinity if we saw a new
5468         executable edge.  Drop test for all constants.
5469         (vrp_finalize): Free vrp_phi_edge_counts.
5470
5471         * doc/cpp.texi (Common Predefined Macros): Clarify description of
5472         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
5473
5474         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
5475         predecessors at head rather than tail.
5476
5477 2007-04-16  Matthias Klose  <doko@debian.org>
5478
5479         * config/alpha/linux.h (CPP_SPEC): Define.
5480         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
5481
5482 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
5483
5484         * function.h: Remove sequence_stack extern declaration.
5485
5486 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
5487
5488         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
5489         TARGET_FIDOA.
5490         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
5491         defined.
5492
5493 2007-04-16  Anatoly Sokolov <aesok@post.ru>
5494
5495         * config/avr/avr.c (avr_arch_types): Rearranging  array.
5496         (enum avr_arch): Add.
5497         (avr_mcu_types): Use avr_arch enumeration constants instead of
5498         numbers.
5499         * config/avr/avr.h (LINK_SPEC): Simplify.
5500
5501 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
5502
5503         * config/m68k/m68k.c (m68k_libcall_value,
5504         m68k_function_value): Use macros for register names more.
5505
5506         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
5507         instead.
5508         (M68K_REGNAME): Use A6_REG.
5509         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
5510
5511 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5512
5513         PR middle-end/28071
5514         * sched-int.h (struct deps): Split field 'pending_lists_length' into
5515         'pending_read_list_length' and 'pending_write_list_length'.  Update
5516         comment.
5517         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
5518         to handle two length counters instead of one.  Update all uses.
5519         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
5520         two length counters instead of one.
5521         * sched-rgn.c (propagate_deps): Update to handle two length counters
5522         instead of one.
5523
5524 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
5525
5526         PR target/31582
5527         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
5528         copy of source, pass it to ix86_expand_vector_set and return
5529         it as target.
5530
5531 2007-04-16  David Ung  <davidu@mips.com>
5532             Joseph Myers  <joseph@codesourcery.com>
5533
5534         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
5535         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
5536         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
5537         Add 74K processor information.
5538         * config/mips/mips.md: Include 74k.md.
5539         (cpu): Add 74kc,74kf,74kx.
5540         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
5541         * config/mips/74k.md: New.
5542         * doc/invoke.texi (MIPS Options): Document 74K support.
5543
5544 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
5545
5546         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
5547         vectorizable_* functions.
5548         * tree-vect-transform.c (vectorizable_call): Add check for
5549         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
5550         (vectorizable_store): likewise.
5551         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
5552         Add comments.
5553         (vectorizable_operation, vectorizable_type_demotion): Likewise.
5554         (vectorizable_type_promotion, vectorizable_load): Likewise.
5555         (vectorizable_live_operation, vectorizable_condition): Likewise.
5556         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
5557         STMT_VINFO_LIVE_P.
5558         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
5559
5560 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
5561
5562         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
5563         register numbers more.
5564         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
5565         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
5566         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
5567         FUNCTION_VALUE_REGNO_P): Likewise.
5568         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
5569         STATIC_CHAIN_REGNUM): Likewise.
5570         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
5571         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
5572         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
5573         * config/m68k/m68k.md (FP_REG): New.
5574
5575 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
5576
5577         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
5578         alignment on fido.
5579
5580 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
5581
5582         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
5583         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
5584         comment typos.
5585
5586 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
5587
5588         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
5589         cold loops.
5590
5591 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5592
5593         PR c/31520
5594         * c-decl.c (finish_decl): Grab the type of the decl after the call
5595         to store_init_value.
5596
5597 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
5598
5599         * common.opt (fforward-propagate): Fix "Optimization" annotation.
5600
5601 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
5602
5603         PR c++/25874
5604         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
5605         post dominators and cleanup cfg before returning.
5606
5607 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
5608
5609         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
5610         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
5611
5612 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
5613
5614         * config.gcc: Recognize fido.
5615         * config/m68k/m68k-devices.def (fidoa): New.
5616         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
5617         __mfido__.
5618         (FL_FIDOA, TARGET_FIDOA): New.
5619         * config/m68k/m68k.opt (mfidoa): New.
5620
5621 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5622
5623         PR middle-end/31322
5624         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
5625         when a personality function is used.
5626
5627 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
5628
5629         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
5630
5631 2007-04-13  Mike Stump  <mrs@apple.com>
5632
5633         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
5634         we can...
5635         * config/darwin.opt (fapple-kext): Make C++ only.
5636         * config/darwin.c (darwin_override_options): Remove code to ensure
5637         -fapple-kext is given for C++ only.
5638
5639 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
5640
5641         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
5642         * config/mips/mips.c (override_options): Call
5643         SUBTARGET_OVERRIDE_OPTIONS, if defined.
5644
5645 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
5646
5647         * config/i386/i386.opt (msvr3-shlib): Removed.
5648
5649         * doc/invoke.texi: Remove -msvr3-shlib.
5650
5651 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
5652
5653         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
5654         with "popcnt" instruction.
5655
5656 2007-04-13  Richard Guenther  <rguenther@suse.de>
5657
5658         PR tree-optimization/21258
5659         * tree-vrp.c (compare_case_labels): New helper.
5660         (find_switch_asserts): New function.
5661         (find_assert_locations): Call it for SWITCH_EXPRs.
5662
5663 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
5664
5665         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
5666         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
5667         check is now implied in X87_FLOAT_MODE_P.
5668         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
5669         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
5670         (fix_trunc<mode>_i386_fisttp): Ditto.
5671         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
5672         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
5673         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
5674         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
5675         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
5676         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
5677         (unnamed_splitters): Ditto.
5678         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
5679         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
5680         FIRST_SSE_REG for local functions when SSE math is enabled or
5681         for functions with sseregparm attribute.
5682         (standard_80387_constant_p): Return -1 if mode is not
5683         X87_FLOAT_MODE_P.
5684         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
5685         (ix86_expand_compare): Ditto.
5686         (ix86_expand_carry_flag_compare): Ditto.
5687         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
5688         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
5689         DECIMAL_FLOAT_MODE_P.
5690         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
5691         of SCALAR_FLOAT_MODE_P.
5692         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
5693         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
5694         checks before FLOAT_MODE_P.
5695         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
5696         before FLOAT_MODE_P.
5697         [DIV]: Ditto.
5698         [NEG]: Ditto.
5699         [ABS]: Ditto.
5700         [SQRT]: Ditto.
5701         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
5702
5703 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
5704             Charles Wilson  <libtool@cwilson.fastmail.fm>
5705
5706         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
5707         (libgcc.mvars): Don't depend on them.
5708         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
5709         * exec-tool.in: New.
5710
5711 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
5712
5713         * doc/invoke.text (--help): Document --help=common.
5714
5715 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
5716
5717         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
5718
5719 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
5720
5721         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
5722         * genemit.c (main): Emit #include "integrate.h".
5723         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
5724         (LOADGP_RTP): New mips_loadgp_style.
5725         * config/mips/mips.h: Include config/vxworks-dummy.h.
5726         (TARGET_RTP_PIC): New macro.
5727         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
5728         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
5729         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
5730         for TARGET_RTP_PIC.
5731         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
5732         -mvxworks-pic when using -mrtp and a PIC option.
5733         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
5734         for RTP PIC.
5735         (mips_symbolic_constant_p, mips_symbolic_address_p)
5736         (mips_symbol_insns): Handle SYMBOL_HALF.
5737         (override_options): Warn about -G and -mrtp being used together.
5738         Initialize mips_lo_relocs[SYMBOL_HALF].
5739         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
5740         (mips_emit_loadgp): Handle LOADGP_RTP.
5741         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
5742         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
5743         (tablejump): Handle function-relative case table entries if
5744         TARGET_RTP_PIC.
5745         * config/mips/predicates.md (symbol_ref_operand): New predicate.
5746
5747 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
5748
5749         * config/mips/mips.md (load_call<mode>): Allow any general register.
5750         destination.
5751         (sibcall_value_internal, sibcall_value_multiple_internal)
5752         (call_value_internal, call_value_split, call_value_multiple_internal)
5753         (call_value_multiple_split): Remove constraints from operand 0.
5754
5755 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
5756
5757         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
5758         rather than loadgp_noshared.
5759         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
5760         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
5761         gen_loadgp.
5762         * config/mips/mips.md (loadgp): Rename to...
5763         (loadgp_newabi): ...this.
5764         (loadgp_noshared): Rename to...
5765         (loadgp_absolute): ...this.
5766
5767 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
5768
5769         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
5770         false for locally-binding symbols.
5771         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
5772
5773 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
5774
5775         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
5776         (SYMBOL_GOT_PAGE_OFST): ...this.
5777         (SYMBOL_GOT_GLOBAL): Rename to...
5778         (SYMBOL_GOT_DISP): ...this.
5779         (SYMBOL_GOTOFF_GLOBAL): Rename to...
5780         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
5781         * config/mips/mips.c (mips_global_symbol_p): New function.
5782         (mips_symbol_binds_local_p): Likewise.
5783         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
5784         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
5785         and mips_symbol_binds_local_p.
5786         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
5787         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
5788         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
5789         SYMBOL_GOTOFF_DISP.
5790         (mips_ok_for_lazy_binding_p): New function.
5791         (mips_load_call_address, mips_expand_call): Use it.
5792         (mips_dangerous_for_la25_p): Likewise.
5793         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
5794         (*got_disp<mode>): Use got_disp_operand instead of
5795         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
5796         SYMBOL_GOTOFF_GLOBAL.
5797         (*got_page<mode>): Use got_page_ofst_operand instead of
5798         local_got_operand.
5799         * config/mips/predicates.md (const_call_insn_operand): Use
5800         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
5801         (global_got_operand): Rename to...
5802         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
5803         SYMBOL_GOT_GLOBAL.
5804         (local_got_operand): Rename to...
5805         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
5806         of SYMBOL_GOT_LOCAL.
5807
5808 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
5809
5810         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
5811         TARGET_CALL_CLOBBERED_GP.
5812         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
5813         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
5814         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
5815         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
5816         of TARGET_ABICALLS && !TARGET_NEWABI.
5817         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
5818         * config/mips/mips.c (mips_load_call_address): Check
5819         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
5820         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
5821         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
5822         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
5823         TARGET_ABICALLS && TARGET_NEWABI.
5824         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
5825         TARGET_ABICALLS.
5826         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
5827         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
5828         TARGET_ABICALLS && TARGET_NEWABI.
5829         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
5830         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
5831         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
5832         whether indirect calls must use $25.
5833         (mips_extra_live_on_entry): Check TARGET_GOT instead of
5834         TARGET_ABICALLS.
5835         * config/mips/mips.md (jal_macro): Check flag_pic and
5836         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
5837         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
5838         instead of TARGET_ABICALLS.
5839         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
5840         TARGET_ABICALLS && TARGET_OLDABI.
5841         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
5842         (sibcall): In the comment above the define_insn, mention
5843         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
5844         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
5845         instead of TARGET_ABICALLS.
5846
5847 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
5848
5849         * doc/md.texi (Blackfin family constraints): Document PA and PB.
5850         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
5851         (MACFLAGS_MATCH_P): New macro.
5852         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
5853         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
5854         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
5855         the other MACFLAG constants.
5856         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
5857         (flag_machi): Tighten constraints.  Renumber some of the operands.
5858         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
5859         output template.
5860         (flag_machi_parts_acconly): New pattern.
5861         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
5862         used.
5863         (flag_macinit1hi): Tighten constraints.
5864         (flag_mul_macv2hi_parts_acconly): New pattern.
5865
5866         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
5867         Use a more efficient implementation.
5868         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
5869         inline sequences when not optimizing for size.
5870
5871         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
5872         movhi_high2low): Delete, merge functionality into...
5873         (packv2hi): ... this pattern.
5874
5875         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
5876         * config/bfin/bfin.opt (msim): New option.
5877         (mcpu=): New option.
5878         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
5879         (bfin_cpu_t): Typedef of enum bfin_cpu.
5880         (bfin_cpu_type): New declaration.
5881         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
5882         -msim and -mcpu= options.
5883         (LIB_SPEC): Likewise.
5884         * config/bfin/bfin.c (bfin_cpu_type): Define.
5885         (bfin_handle_option): Handle -mcpu= option.
5886         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
5887         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
5888         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
5889
5890 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
5891
5892         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
5893         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
5894         (powerpc-wrs-vxworksae): Use ${tm_file}.
5895         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
5896         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
5897         * config/i386/vx-common.h: New file.
5898
5899 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
5900
5901         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
5902         of crt0.o%s.
5903
5904 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
5905
5906         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
5907         ldxtr.
5908
5909 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
5910
5911         PR c++/31078
5912         PR c++/31103
5913         * c-common.c (c_build_qualified_type): Set canonical type
5914         appropriately.
5915
5916 2007-04-12  Richard Guenther  <rguenther@suse.de>
5917
5918         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
5919         lower bound and element size if lower bound is not zero
5920         or either of the ARRAY_REF operands is set.
5921
5922 2007-04-12  Richard Guenther  <rguenther@suse.de>
5923
5924         PR tree-optimization/24689
5925         PR tree-optimization/31307
5926         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
5927         indices by value.
5928         * gimplify.c (canonicalize_addr_expr): To be consistent with
5929         gimplify_compound_lval only set operands two and three of
5930         ARRAY_REFs if they are not gimple_min_invariant.  This makes
5931         it never at this place.
5932         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
5933
5934 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5935
5936         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
5937         null before emitting a .nsubspa directive.
5938
5939 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
5940
5941         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
5942         need_to_partition_p if there are no memory statements in the
5943         function.
5944
5945 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
5946
5947         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
5948         (gcd_of_steps_may_divide_p): New function.
5949         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
5950
5951 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
5952
5953         * reload.c (find_reloads_toplev, find_reloads_address,
5954         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
5955         not a pointer equality test, to decide if we need to call
5956         push_reg_equiv_alt_mem.
5957
5958 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
5959
5960         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
5961         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
5962         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
5963
5964 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
5965
5966         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
5967         vector to be positive.
5968
5969 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
5970
5971         PR 30735
5972         PR 31090
5973         * doc/invoke.texi: Document --params max-aliased-vops and
5974         avg-aliased-vops.
5975         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
5976         debug_memory_partitions): Move to tree-flow.h
5977         * params.h (AVG_ALIASED_VOPS): Define.
5978         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
5979         users.
5980         (mp_info_t): Likewise.
5981         (get_mem_sym_stats_for): New.
5982         (set_memory_partition): Move from tree-flow-inline.h.
5983         (mark_non_addressable): Only clear the set of symbols for the
5984         partition if it exists.
5985         (dump_memory_partitions): Move from tree-ssa-operands.c
5986         (debug_memory_partitions): Likewise.
5987         (need_to_partition_p): New.
5988         (dump_mem_ref_stats): New.
5989         (debug_mem_ref_stats): New.
5990         (dump_mem_sym_stats): New.
5991         (debug_mem_sym_stats): New.
5992         (update_mem_sym_stats_from_stmt): New.
5993         (compare_mp_info_entries): New.
5994         (mp_info_cmp): Call it.
5995         (sort_mp_info): Change argument to a list of mem_sym_stats_t
5996         objects.
5997         (get_mpt_for): Move from tree-ssa-operands.c.
5998         (find_partition_for): New.
5999         (create_partition_for): Remove.
6000         (estimate_vop_reduction): New.
6001         (update_reference_counts): New.
6002         (build_mp_info): New.
6003         (compute_memory_partitions): Refactor.
6004         Document new heuristic.
6005         Call build_mp_info, update_reference_counts,
6006         find_partition_for and estimate_vop_reduction.
6007         (compute_may_aliases): Populate virtual operands before
6008         calling debugging dumps.
6009         (delete_mem_sym_stats): New.
6010         (delete_mem_ref_stats): New.
6011         (init_mem_ref_stats): New.
6012         (init_alias_info): Call it.
6013         (maybe_create_global_var): Remove alias_info argument.
6014         Get number of call sites and number of pure/const call sites
6015         from gimple_mem_ref_stats().
6016         (dump_alias_info): Call dump_memory_partitions first.
6017         (dump_points_to_info_for): Show how many times a pointer has
6018         been dereferenced.
6019         * opts.c (decode_options): For -O2 set --param
6020         max-aliased-vops to 500.
6021         For -O3 set --param max-aliased-vops to 1000 and --param
6022         avg-aliased-vops to 3.
6023         * fortran/options.c (gfc_init_options): Remove assignment to
6024         MAX_ALIASED_VOPS.
6025         * tree-flow-inline.h (gimple_mem_ref_stats): New.
6026         * tree-dfa.c (dump_variable): Dump memory reference
6027         statistics.
6028         Dump NO_ALIAS* settings.
6029         (referenced_var_lookup): Tidy.
6030         (mem_sym_stats): New.
6031         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
6032         and ORIG are different SSA names for a memory partition.
6033         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
6034         * tree-flow.h (struct mem_sym_stats_d): Define.
6035         (mem_sym_stats_t): Define.
6036         (struct mem_ref_stats_d): Define.
6037         (struct gimple_df): Add field mem_ref_stats.
6038         (enum noalias_state): Define.
6039         (struct var_ann_d): Add bitfield noalias_state.
6040         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
6041         debug_mem_ref_stats, debug_memory_partitions,
6042         debug_mem_sym_stats): Declare.
6043         * tree-ssa-structalias.c (update_alias_info): Update call
6044         sites, pure/const call sites and asm sites in structure
6045         returned by gimple_mem_ref_stats.
6046         Remove local variable IS_POTENTIAL_DEREF.
6047         Increase NUM_DEREFS if the memory expression is a potential
6048         dereference.
6049         Call update_mem_sym_stats_from_stmt.
6050         If the memory references memory, call
6051         update_mem_sym_stats_from_stmt for all the direct memory
6052         symbol references found.
6053         (intra_create_variable_infos): Set noalias_state field for
6054         pointer arguments according to the value of
6055         flag_argument_noalias.
6056         * tree-ssa-structalias.h (struct alias_info): Remove fields
6057         num_calls_found and num_pure_const_calls_found.
6058         (update_mem_sym_stats_from_stmt): Declare.
6059         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
6060         Set default value to 100.
6061         (PARAM_AVG_ALIASED_VOPS): Define.
6062
6063 2007-04-11  Richard Guenther  <rguenther@suse.de>
6064
6065         PR middle-end/31530
6066         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
6067         a * -b + c as c - a * b if we honor sign dependent rounding.
6068
6069 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
6070
6071         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
6072         bfin_expand_strmov.
6073         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
6074         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
6075         variables.
6076         (initialize_trampoline): Don't use old-style function definition.
6077         (bfin_secondary_reload): Mark IN_P argument as unused.
6078
6079 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
6080
6081         PR tree-optimization/31343
6082         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
6083         (build_polynomial_chrec): Return a scalar when the evolution is zero.
6084         * testsuite/gcc.dg/vect/pr31343.c: New.
6085
6086 2007-04-10  Eric Christopher  <echristo@apple.com>
6087
6088         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
6089         * config/i386/i386.md (*cmpfp0): Use.
6090         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
6091         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
6092         (fix_trunc<mode>_i386_fisttp): Ditto.
6093         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
6094         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
6095         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
6096         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
6097         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
6098         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
6099         (unnamed_splitters): Ditto.
6100         * config/i386/i386.c (output_fix_trunc): Assert that
6101         we're not being passed a TFmode operand.
6102
6103 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
6104
6105         PR tree-optimization/31526
6106         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
6107         n_basic_blocks to find newly added blocks.
6108
6109 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
6110
6111         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
6112         alternative.
6113         (fix_trunc<mode>si_sse): Ditto.
6114         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
6115         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
6116         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
6117         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
6118         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
6119         expander using SSEMODEF mode macro.
6120         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
6121         expander using SSEMODEF mode macro.
6122         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
6123         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
6124         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
6125         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
6126         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
6127         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
6128         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
6129         Macroize insn using X87MODEF mode macro.
6130
6131 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
6132
6133         * config/i386/sse.md (sse2_pinsrw): Removed.
6134         (sse2_pextrw): Renamed to ...
6135         (*sse2_pextrw): This.
6136
6137 2007-04-09  Jan Hubicka  <jh@suse.cz>
6138
6139         PR target/27869
6140         * config/i386/sse.md
6141         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
6142         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
6143         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
6144         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
6145
6146 2007-04-09  Jan Hubicka  <jh@suse.cz>
6147
6148         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
6149         multiple fields of union.
6150
6151 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
6152
6153         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
6154         (create_preheaders): Check that loops are available.
6155         (fix_loop_structure): Clean up, improve comments.
6156         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
6157         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
6158         state flags.
6159         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
6160         * predict.c (tree_estimate_probability): Do not call
6161         calculate_dominance_info.  Call create_preheaders.
6162         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
6163         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
6164         flags.
6165         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
6166         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
6167         * tree-cfg.c (tree_split_edge): Make an assert more precise.
6168         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
6169         arguments.
6170
6171 2007-04-08  Jan Hubicka  <jh@suse.cz>
6172
6173         * tree.h (maybe_fold_offset_to_component_ref): Declare.
6174         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
6175         * fold-const.c (fold_unary): Use it.
6176
6177 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6178
6179         * varasm.c (assemble_variable): Remove call to
6180         lang_hooks.decls.prepare_assemble_variable.
6181         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
6182         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
6183         * langhooks.h (lang_hooks_for_decls): Remove
6184         prepare_assemble_variable.
6185
6186 2007-04-08  Mike Stump  <mrs@apple.com>
6187
6188         * config/i386/i386.c: Use inc/dec on Core2.
6189
6190 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
6191
6192         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
6193         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
6194         lhd_tree_inlining_end_inlining): Remove.
6195         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
6196         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
6197         end_inlining hooks.
6198         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
6199         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
6200         lhd_tree_inlining_end_inlining): Remove prototypes.
6201         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
6202         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
6203         LANG_HOOKS_TREE_INLINING_START_INLINING,
6204         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
6205
6206         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
6207         not set it.
6208
6209 2007-04-08  Anatoly Sokolov <aesok@post.ru>
6210
6211         PR target/29932
6212         * config/avr/predicates.md (io_address_operand): Delete predicate.
6213         (low_io_address_operand): Don't use 'mode' argument.
6214         (higth_io_address_operand): Rename ...
6215         (high_io_address_operand): ... to this. Don't use 'mode' argument.
6216         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
6217         for above change.
6218
6219 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
6220
6221         Revert change removing staticp.
6222
6223 2007-04-07  Anatoly Sokolov <aesok@post.ru>
6224
6225         PR target/30289
6226         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
6227         earlyclobber.
6228
6229 2007-04-07  Bruce Korb  <bkorb@gnu.org>
6230
6231         * c.opt: Add -Wformat-contains-nul.
6232         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
6233           -Wformat setting.
6234         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
6235         the NUL byte warning.
6236
6237 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
6238
6239         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
6240
6241 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
6242
6243         * tree.c (staticp): No longer use staticp langhook.
6244         * langhooks.c (lhd_staticp): Removed.
6245         * langhooks.h (struct lang_hooks): Remove staticp.
6246         * c-common.c (c_staticp): Remove.
6247         * c-common.h (c_staticp): Ditto.
6248         * langhooks-defs.h (lhd_staticp): Ditto.
6249         (LHD_HOOKS_STATICP): Ditto
6250         * tree.h (gcc_assert_lowered): New macro.
6251
6252 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
6253
6254         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
6255         argument "reliable".
6256         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
6257         Add argument "reliable".  Propagate it through calls.
6258         (infer_loop_bounds_from_undefined):  Derive number of iterations
6259         estimates from references in blocks that do not dominate loop latch.
6260         (gcov_type_to_double_int): New function.
6261         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
6262         and expected_loop_iterations_unbounded.
6263         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
6264         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
6265         * tree-data-ref.c (estimated_loop_iterations): Export.
6266         (get_references_in_stmt): Fix -- do not return addresses of local
6267         objects.
6268         * cfgloop.h (expected_loop_iterations_unbounded,
6269         estimated_loop_iterations): Declare.
6270
6271 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
6272
6273         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
6274
6275 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
6276
6277         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
6278         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
6279         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
6280         Use output_387_reg_move().
6281         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
6282         expander using X87MODEF12 mode macro.
6283         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
6284         choosing register preferences.  Use output_387_reg_move().
6285         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
6286         instead of "x".  Use output_387_reg_move().
6287         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
6288         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
6289         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
6290         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
6291         Use output_387_reg_move().
6292         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
6293         mode macro.
6294         (*truncxf?f_i387 splitter): Ditto.
6295
6296 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
6297
6298         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
6299         LANG_HOOKS_SAFE_FROM_P.
6300         * expr.c (safe_from_p): Remove langhook call.
6301         * langhooks.h (lang_hooks): Remove safe_from_p.
6302         (lhd_safe_from_p): Remove prototype.
6303         * langhooks.c (lhd_safe_from_p): Remove.
6304
6305 2007-04-06  Jan Hubicka  <jh@suse.cz>
6306
6307         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
6308         functions.
6309
6310 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
6311
6312         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
6313         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
6314         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
6315         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
6316         alternative.
6317         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
6318         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
6319
6320 2007-04-05  Richard Henderson  <rth@redhat.com>
6321
6322         * config/alpha/alpha.c (print_operand) [+]: Remove.
6323         (alpha_end_function): Print nop if call at end of function.
6324         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
6325         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
6326         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
6327         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
6328         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
6329         the call pattern. Update peepholes to match.
6330
6331 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
6332
6333         * doc/extend.texi (Other Builtins): Add decimal float variants
6334         of signbit.
6335         * builtins.def: Ditto.
6336         * builtins.c (expand_builtin): Ditto.
6337
6338 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
6339             H.J. Lu  <hongjiu.lu@intel.com>
6340
6341         PR target/31478
6342         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
6343         of V8HImode when calling ix86_binary_operator_ok.
6344         (sse2_pmaddwd): Call ix86_binary_operator_ok.
6345         (sdot_prodv8hi): Operands 1 and 2 must be register.
6346
6347 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
6348
6349         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
6350         initialize align to silence bogus warning.
6351
6352 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
6353
6354         PR middle-end/22156
6355         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
6356         all_no_warning.
6357         (struct sra_walk_fns): Remove use_all parameter from use.
6358         (sra_hash_tree): Handle BIT_FIELD_REFs.
6359         (sra_elt_hash): Don't hash bitfld blocks.
6360         (sra_elt_eq): Skip them in parent compares as well.  Handle
6361         BIT_FIELD_REFs.
6362         (sra_walk_expr): Don't maintain or pass down use_all_p.
6363         (scan_use): Remove use_all parameter.
6364         (scalarize_use): Likewise.  Re-expand assignment to
6365         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
6366         output, and re-scalarize after output.  Don't mark anything
6367         for no warning.
6368         (scalarize_ldst): Adjust.
6369         (scalarize_walk_gimple_modify_statement): Likewise.
6370         (build_element_name_1): Handle BIT_FIELD_REFs.
6371         (instantiate_element): Don't warn for any element whose parent
6372         is used as a whole.
6373         (instantiate_missing_elements_1): Return the sra_elt.
6374         (canon_type_for_field): New.
6375         (try_instantiate_multiple_fields): New.
6376         (instantiate_missing_elemnts): Use them.
6377         (mark_no_warning): Removed.
6378         (generate_one_element_ref): Handle BIT_FIELD_REFs.
6379         (REPLDUP, sra_build_elt_assignment): New.
6380         (generate_copy_inout): Use them.
6381         (generate_element_copy): Likewise.  Handle bitfld differences.
6382         (generate_element_zero): Don't recurse for blocks.  Use
6383         sra_build_elt_assignment.
6384         (generate_one_element_int): Take elt instead of var.  Use
6385         sra_build_elt_assignment.
6386         (generate_element_init_1): Adjust.
6387         (scalarize_use, scalarize_copy): Use REPLDUP.
6388         (scalarize_ldst): Move assert before dereference.
6389         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
6390
6391 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
6392
6393         * regmove.c: Fix unused variable warnings due to previous commit.
6394
6395 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
6396
6397         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
6398         (regmove_bb_head): Remove.
6399         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
6400         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
6401         problems with fixup_match_1.
6402         Don't initialize/free regmove_bb_head.
6403
6404         (reg_is_remote_constant_p): If an insn is in the same basic block
6405         but not before INSN, consider it remote, too.
6406
6407 2007-04-05  Anatoly Sokolov <aesok@post.ru>
6408
6409         PR target/25448
6410         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
6411         DECL_ASSEMBLER_NAME, not the DECL_NAME.
6412
6413 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
6414
6415         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
6416         (CONDITIONAL_REGISTER_USAGE): Likewise.
6417
6418 2007-04-04  Richard Henderson  <rth@redhat.com>
6419
6420         * config/alpha/lib1funcs.asm: Remove unused file.
6421
6422 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
6423
6424         PR other/31356
6425         * opts.c (print_specific_help): Fix --help=<language>
6426         header line.
6427         (common_handle_option): Support --help=common.
6428
6429 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
6430
6431         PR other/31353
6432         * gcc.c (main): Do not run the linker if
6433         print_subprocess_help indicates that it shouldn't be
6434         run.
6435
6436 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
6437
6438         PR doc/31355
6439         * doc/invoke.texi (--help=): Document <languages> value, fix
6440         formatting in tables of values.
6441
6442 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
6443
6444         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
6445         dllimport attribute of virtual methods.
6446
6447 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
6448
6449         * config/score/crti.asm: Change _bss_start to __bss_start.
6450         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
6451         (OUTGOING_REG_PARM_STACK_SPACE) update.
6452         * config/score/score.opt: add options to make backend support
6453         score5, score5u, score7 and score7d.
6454         * config/score/score.md: Likewise.
6455         * config/score/misc.md: Likewise.
6456         * config/score/mac.md: Likewise.
6457         * doc/invoke.texi: Likewise.
6458         * doc/md.texi: update constraints define.
6459
6460 2007-04-03  Richard Henderson  <rth@redhat.com>
6461
6462         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
6463         an appropriate type, use the mode instead.
6464
6465 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
6466
6467         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
6468         Set the default --with-arch setting to mips2.
6469         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
6470         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
6471         (MULTILIB_OSDIRNAMES): Delete.
6472         (MULTILIB_DIRNAMES): Define.
6473         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
6474         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
6475         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
6476         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
6477         VXWORKS_OS_CPP_BUILTINS.
6478         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
6479         (MIPS_DEBUGGING_INFO): Undefine.
6480         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
6481
6482 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
6483
6484         PR middle-end/30704
6485         * fold-const.c (native_encode_real): Encode real.c provided longs
6486         as a series of 32-bit native integers.
6487         (native_interpret_real): Interpret buffer as a series of 32-bit
6488         native integers.
6489
6490 2007-04-03  Richard Guenther  <rguenther@suse.de>
6491
6492         * genpreds.c (write_insn_constraint_len): Write function
6493         optimized for CONSTRAINT_LEN implementation.
6494         (write_tm_preds_h): Output insn_constraint_len inline and
6495         use it for CONSTRAINT_LEN.
6496         (write_insn_preds_c): Don't output insn_constraint_len.
6497         * doc/md.texi (define_register_constraint): Document multi-letter
6498         constraints shall have the same length if they start with the same
6499         letter.
6500
6501 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
6502
6503         PR target/31175
6504         * config/i386/i386.md (isinf<mode>2): Expand only when
6505         TARGET_C99_FUNCTIONS is set.
6506
6507 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
6508
6509         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
6510         (x86_64-*-linux*): Ditto.
6511         * config/i386/i386.opt (mpc): New option.
6512         * config/i386/i386.c (overrride_options): Handle
6513         ix87_precision_string.
6514         * config/i386/crtprec.c: New file.
6515         * config/i386/t-crtpc: Ditto.
6516         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
6517         and -mpc80 options.
6518         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
6519         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
6520         crtprec32.o, crtprec64.o and crtprec80.o.
6521
6522         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
6523         and -mpc80 options.
6524         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
6525
6526 2007-04-02  Eric Christopher  <echristo@apple.com>
6527
6528         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
6529         limitations on darwin.
6530
6531 2007-04-02  Anatoly Sokolov <aesok@post.ru>
6532
6533         PR target/31137
6534         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
6535
6536 2007-04-02  Dave Korn  <dave.korn@artimi.com>
6537
6538         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
6539
6540 2007-04-02  Dave Korn  <dave.korn@artimi.com>
6541
6542         * libgcc2.h (exception_descriptor): Don't forward-declare.
6543         (__get_eh_table_language, __get_eh_table_version): Delete
6544         prototypes of long-dead functions.
6545
6546 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
6547
6548         * ebitmap.h: New file
6549         * ebitmap.c: New file
6550         * Makefile.in (ebitmap.o): New target.
6551
6552 2007-04-01  Jan Hubicka  <jh@suse.cz>
6553
6554         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
6555         before very first instruction.
6556
6557 2007-04-01  Jan Hubicka  <jh@suse.cz>
6558
6559         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
6560         waring on 64bit hosts.
6561         * bitmap.h: Fix typo in bitmap_head_def.
6562
6563 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
6564
6565         PR rtl-optimization/31391
6566         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
6567         into a DELETED_LABEL note, and the label is in an empty basic
6568         block, update BB_END as well as BB_HEAD.
6569
6570 2007-04-01  Richard Henderson  <rth@redhat.com>
6571
6572         PR tree-optimization/31169
6573         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
6574         to varying if the range is outside [0,  prec-1].
6575
6576 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
6577
6578         PR target/31388
6579         * config/mips/mips.md (load_const_gp): New insn.
6580         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
6581         the MIPS16 GP pseudo register if no_new_pseudos.
6582         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
6583
6584 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6585
6586         PR target/31364
6587         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
6588         secureplt.
6589         (call_value): Likewise.
6590
6591 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
6592             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6593
6594         PR 14737
6595         * doc/invoke.texi: (optimization options): Reword description
6596         of -ffast-math. Document its primary purpose.
6597
6598 2007-03-31  Richard Guenther  <rguenther@suse.de>
6599
6600         * omp-low.c (splay-tree.h): Include.
6601         (lookup_decl): Replace splay-tree usage by pointer-map.
6602         (maybe_lookup_decl): Likewise.
6603         (new_omp_context): Likewise.
6604         (delete_omp_context): Likewise.
6605         * gimplify.c (splay-tree.h): Include.
6606         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
6607         pointer-map.
6608         (remap_ssa_name): Likewise.
6609         (remap_decl): Likewise.
6610         (remap_type_1): Likewise.
6611         (remap_type): Likewise.
6612         (copy_body_r): Likewise.
6613         (expand_call_inline): Likewise.
6614         (clone_body): Likewise.
6615         (copy_tree_r): Likewise.
6616         (remap_save_expr): Likewise.
6617         (unsave_r): Likewise.
6618         (unsave_expr_now): Likewise.
6619         (tree_function_versioning): Likewise.
6620         (build_duplicate_type): Likewise.
6621         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
6622         (struct copy_body_data): Replace splay-tree by pointer-map.
6623         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
6624         not $(SPLAY_TREE_H).
6625         (gimplify.o): Depend on $(SPLAY_TREE_H).
6626         (omp-low.p): Likewise.
6627
6628 2007-03-31  Anatoly Sokolov <aesok@post.ru>
6629
6630         * config/avr/predicates.md (even_register_operand,
6631         odd_register_operand): New predicates.
6632         * config/avr/avr.md (movw peephole2): New.
6633         (movw_r peephole2): New.
6634
6635 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
6636
6637         * tree.h (get_signed_or_unsigned_type): New.
6638         * fold-const.c (operand_equal_for_comparison_p): Use
6639         get_signed_or_unsigned_type instead of
6640         lang_hooks.types.signed_or_unsigned_type.
6641         * expr.c (store_expr): Ditto.
6642         * langhooks.c (get_signed_or_unsigned_type): New.
6643         (lhd_signed_or_unsigned_type): New.
6644         * langhooks.h (lhd_signed_or_unsigned_type): New.
6645         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
6646
6647 2007-03-30  Richard Henderson  <rth@redhat.com>
6648
6649         * tree-ssa-loop-ivopts.c: Include target.h.
6650         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
6651         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
6652         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
6653         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
6654
6655 2007-03-30  Richard Henderson  <rth@redhat.com>
6656             Kai Tietz  <kai.tietz@onevision.com>
6657
6658         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
6659         default for 64-bit.
6660         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
6661         (TARGET_64BIT_MS_ABI): New.
6662         (DBX_REGISTER_NUMBER): Handle 64-bit.
6663         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
6664         (LONG_TYPE_SIZE): Force to 32.
6665         (REG_PARM_STACK_SPACE): New.
6666         (OUTGOING_REG_PARM_STACK_SPACE): New.
6667         (REGPARM_MAX, SSE_REGPARM_MAX): New.
6668         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
6669         (STACK_BOUNDARY): Use 128 for 64-bit.
6670         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
6671         Add 64-bit implementation.
6672         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
6673         argument unused.
6674         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
6675         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
6676         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
6677         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
6678         (ix86_handle_cconv_attribute): Don't warn when ignoring if
6679         TARGET_64BIT_MS_ABI.
6680         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
6681         (ix86_pass_by_reference): Likewise.
6682         (ix86_function_value_regno_p): Likewise.
6683         (ix86_build_builtin_va_list): Likewise.
6684         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
6685         (function_arg_advance_ms_64): New.
6686         (function_arg_advance): Call it.
6687         (function_arg_ms_64): New.
6688         (function_arg): Call it.
6689         (function_value_ms_64): New.
6690         (ix86_function_value_1): Call it.
6691         (return_in_memory_ms_64): New.
6692         (ix86_return_in_memory): Call it.
6693         (setup_incoming_varargs_ms_64): New.
6694         (ix86_setup_incoming_varargs): Call it.
6695         (ix86_expand_prologue): Handle 64-bit stack probing.
6696         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
6697         (output_pic_addr_const): Likewise.
6698         (x86_this_parameter): Likewise.
6699         (x86_output_mi_thunk): Likewise.
6700         (x86_function_profiler): Likewise.
6701         (TARGET_STRICT_ARGUMENT_NAMING): New.
6702         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
6703         (TARGET_64BIT_MS_ABI): New.
6704         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
6705         * config/i386/i386.md (allocate_stack_worker): Remove.
6706         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
6707         describe the clobber of eax without a match_scratch.
6708         (allocate_stack_worker_postreload): Remove.
6709         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
6710         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
6711         (allocate_stack_worker_rex64_postreload): Remove.
6712         (allocate_stack): Handle 64-bit.
6713         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
6714         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
6715         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
6716         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
6717         (STANDARD_STARTFILE_PREFIX_1): Likewise.
6718         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
6719         * config.build (x86_64-*-mingw*): New host.
6720         * config.host (x86_64-*-mingw*): New host.
6721         * config.gcc (x86_64-*-mingw*): New target.
6722         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
6723
6724 2007-03-30  Richard Henderson  <rth@redhat.com>
6725             Kai Tietz  <kai.tietz@onevision.com>
6726
6727         * c-pragma.c (struct def_pragma_macro_value): New.
6728         (struct def_pragma_macro): New.
6729         (pushed_macro_table): New.
6730         (dpm_hash, dpm_eq): New.
6731         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
6732         (init_pragma): Install them.
6733         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
6734
6735 2007-03-30  Anatoly Sokolov <aesok@post.ru>
6736
6737         * config/avr/avr.c (avr_override_options): Clear
6738         'flag_delete_null_pointer_checks'.
6739
6740 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
6741
6742         PR c++/26099
6743         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
6744         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
6745         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
6746         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
6747         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
6748         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
6749         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
6750         C++ extensions.
6751         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
6752
6753 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
6754
6755         * regmove.c: Move all of pass_stack_adjustments from here...
6756         * combine-stack-adj.c: ...to this new file.
6757         * Makefile.in: Add rules for combine-stack-adj.o.
6758
6759 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
6760
6761         PR tree-optimization/31383
6762         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
6763         to have the same length.
6764
6765 2007-03-30  Jan Hubicka  <jh@suse.cz>
6766
6767         PR middle-end/30700
6768         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
6769         availablility; add more sanity checking; ask varpool only about
6770         VAR_DECL.
6771
6772 2007-03-29  Richard Henderson  <rth@redhat.com>
6773
6774         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
6775         to decide, but __SIZEOF_LONG_LONG__.
6776
6777 2007-03-29  Richard Henderson  <rth@redhat.com>
6778
6779         * emutls.c (struct __emutls_array): New.
6780         (emutls_destroy): Use it instead of casting element 0 from void*.
6781         (__emutls_get_address): Likewise.
6782
6783 2007-03-29  Richard Henderson  <rth@redhat.com>
6784
6785         * varasm.c (initializer_constant_valid_p): Don't deny
6786         DECL_DLLIMPORT_P on functions.
6787
6788         * config/i386/cygming.h: Remove function declarations.
6789         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
6790         (ASM_OUTPUT_LABELREF): Remove.
6791         (COMMON_ASM_OP): Remove.
6792         (ASM_OUTPUT_COMMON): Remove.
6793         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
6794         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
6795         (ASM_DECLARE_FUNCTION_NAME): Likewise.
6796         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
6797         Rename from TARGET_ENCODE_SECTION_INFO.
6798         * config/i386/netware.h: Likewise.
6799         * config/i386/i386-protos.h: Update.
6800         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
6801         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
6802         (legitimate_constant_p): Reject dllimports.
6803         (dllimport_map, get_dllimport_decl): New.
6804         (legitimize_dllimport_symbol): New.
6805         (legitimize_address, ix86_expand_move): Use it.
6806         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
6807         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
6808         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
6809         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
6810         * config/i386/predicates.md (constant_call_address_operand): Only
6811         accept symbols; reject dllimport_p symbols.
6812         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
6813         i386_pe_maybe_record_exported_symbol.
6814         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
6815         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
6816         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
6817         trust the setting of DECL_DLLIMPORT_P.
6818         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
6819         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
6820         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
6821         tidy the argument scanning loop.
6822         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
6823         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
6824         (i386_pe_strip_name_encoding): Remove.
6825         (i386_pe_binds_local_p): New.
6826         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
6827         (i386_pe_output_labelref): Remove.
6828         (i386_pe_asm_output_aligned_decl_common): New.
6829         (i386_pe_maybe_record_exported_symbol): Rename from
6830         i386_pe_record_exported_symbol; check for dllexported symbols.
6831
6832 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
6833
6834         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
6835         add comment explaining why vsnprintf cannot be used.
6836
6837 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
6838
6839         PR tree-optimization/30666
6840         * tree.c (build_complex_type): When creating type names for DWARF2
6841         debug info, create TYPE_DECLs for TYPE_NAME instead of
6842         IDENTIFIER_NODEs.
6843         (build_common_tree_nodes_2): Use build_complex_type when building
6844         predefined complex types, to preserve canonical types.
6845
6846 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
6847
6848         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
6849         (noce_get_alt_condition): Look at it to determine whether to
6850         reverse the condition or not.
6851         (noce_get_condition): Substitute the truth for lies.
6852         (noce_find_if_block): Set the then_else_reversed field.
6853
6854 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
6855
6856         * config/fr30/fr30.md (movdi): Do not accept immediates as the
6857         destination of this insn.
6858         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
6859         than calling gen_rtx_SET directly.  Use r0 to hold the value of
6860         'address + 4' rather than a stack based temporary which can be
6861         mis-optimized away.
6862
6863 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
6864
6865         * config/s390/s390.c (s390_secondary_input_reload_class,
6866         s390_secondary_output_reload_class): Functions removed.
6867         (s390_secondary_reload): New function.
6868         (TARGET_SECONDARY_RELOAD): Target macro defined.
6869         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
6870         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
6871         * config/s390/s390.md ("reload_outti", "reload_outdi",
6872         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
6873         "reload_out<mode>"): Expanders removed.
6874         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
6875         "reload<mode>_nonoffmem_out"): Expanders added.
6876
6877 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
6878
6879         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
6880         SRC->DEST replacement failed anyway.
6881
6882 2007-03-28  Mike Stump  <mrs@apple.com>
6883
6884         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
6885         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
6886         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
6887
6888 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6889
6890         * config.gcc: Accept barcelona as a variant of amdfam10.
6891         * config/i386/i386.c (override_options): Likewise.
6892         * doc/invoke.texi: Likewise.
6893
6894 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
6895
6896         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
6897         offsets for BIT_FIELD_REF and COMPONENT_REF.
6898
6899 2007-03-28  Richard Guenther  <rguenther@suse.de>
6900
6901         * tree.c (is_global_var): Move ...
6902         * tree-flow-inline.h (is_global_var): ... here.
6903         * tree.h (is_global_var): Remove declaration.
6904
6905 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
6906
6907         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
6908         option.
6909         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
6910         * config/i386/i386.c (ix86_tune_features): Initialize new
6911         tuning option.
6912         * config/i386/predicates.md (promotable_binary_operator): Use
6913         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
6914
6915 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
6916
6917         PR target/31380
6918         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
6919
6920 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
6921
6922         * config/fr30/fr30.md (movsi_internal): Change destination
6923         constraint from m to V and add m to the end.
6924
6925 2007-03-28  Christian Bruel  <christian.bruel@st.com>
6926
6927         * config/sh/sh.md (movsi_i): Fix type attribute.
6928
6929 2007-03-28  Christian Bruel  <christian.bruel@st.com>
6930
6931         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
6932         (movsf_ie): Likewise.
6933
6934 2007-03-28  Christian Bruel  <christian.bruel@st.com>
6935
6936         * config.gcc: Add sh4-300 to multilib.
6937         * config/sh/t-mlib-sh4-300: New file.
6938
6939 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
6940
6941         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
6942         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
6943         fix_trunc<mode>di2.
6944         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
6945         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
6946         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
6947         "fixuns_trunctddi2"): Whitespace fix.
6948
6949 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
6950
6951         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
6952         the definition of struct sh_args.
6953         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
6954         CALL_COOKIE_INT_REG_GET): Likewise.
6955
6956 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
6957
6958         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
6959         transformations are applied successfully.
6960
6961 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
6962
6963         * tree.c (tree_contains_struct): Permit 512 tree codes.
6964         * tree.h (tree_contains_struct): Ditto.
6965         (MAX_TREE_CODES): Ditto.
6966         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
6967         SPARE member to store remaining padding bits.
6968
6969 2007-03-27  Anatoly Sokolov <aesok@post.ru>
6970
6971         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
6972         architecture.
6973
6974 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
6975
6976         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
6977         * configure: Regenerate.
6978
6979         * configure: Regenerate using the correct version of autoconf.
6980
6981 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
6982
6983         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
6984         pointer regs.
6985         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
6986         regs to "__SP_L__" and "__SP_H__".
6987
6988 2007-03-27  Richard Guenther  <rguenther@suse.de>
6989
6990         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
6991         computations with it with a HOST_WIDE_INT variable.
6992
6993 2007-03-26  Mike Stump  <mrs@apple.com>
6994
6995         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
6996         objective-c-header, objective-c++-header and objc++-cpp-output
6997         support.
6998         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
6999
7000 2007-03-26  Richard Henderson  <rth@redhat.com>
7001
7002         PR target/31361
7003         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
7004         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
7005         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
7006         IX86_BUILTIN_PSRLQ128): New.
7007         (ix86_init_mmx_sse_builtins): Add them.
7008         (ix86_expand_builtin): Expand them.
7009         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
7010         operand 2 be TImode.
7011         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
7012         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
7013         _mm_srli_epi64): Mark __B const.
7014         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
7015         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
7016         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
7017         new two-vector shift builtins.
7018
7019 2007-03-26  Ian Lance Taylor  <iant@google.com>
7020
7021         PR tree-optimization/31345
7022         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
7023         [+INF, +INF(OVF)] into VARYING.
7024
7025 2007-03-26  Zack Weinberg  <zackw@panix.com>
7026
7027         * gengtype-parse.c: New file.
7028         * gengtype-yacc.y: Delete.
7029         * gengtype-lex.l: Don't include gengtype-yacc.h.
7030         Define YY_DECL and yyterminate appropriately for recursive
7031         descent parser.  yylval is now a string out-parameter to yylex.
7032         (HWS, EOID): New shorthand.
7033         (IWORD): Add a couple more types.
7034         (yylex): Add a setup stanza.  Remove the complex rules for
7035         detecting GTY'ed types and typedefs; replace with simple
7036         keyword detectors.  Adjust everything for the changed
7037         definition of yylval.  Ignore all pp-directives, not just #define.
7038         (yyerror): Delete.
7039         (parse_file): Rename yybegin; do not call yyparse.
7040         (yyend): New.
7041         * gengtype.c (xasprintf): Export again.
7042         (this_file): New.  Use everywhere __FILE__ was being used.
7043         (get_lang_bitmap): Special case types defined in gengtype.c.
7044         (do_typedef, new_structure): Suppress definition of certain types.
7045         (new_structure): Improve diagnostics of duplicate definitions.
7046         Make sure location_s is associated with input.h.
7047         (nreverse_pairs, define_location_structures): New functions.
7048         (main): Improve tagging of kludge types.  Remove old kludges
7049         for input.h types; use define_location_structures.
7050         * gengtype.h: Update prototypes.  Define token codes here.
7051         * Makefile.in: Remove all references to gengtype-yacc.
7052         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
7053         and gengtype.
7054         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
7055         add GTY((skip)) to the field that's only conditionally there.
7056         * doc/install.texi: Document that Bison is no longer required
7057         unless building treelang.
7058
7059         * gengtype.c: Don't include gtyp-gen.h.
7060         (srcdir): Declare here.
7061         (base_files, lang_dir_names): Allocate dynamically.
7062         (gt_files, num_gt_files, num_lang_dirs): New globals.
7063         (measure_input_list, read_input_line, read_input_list)
7064         (set_lang_bitmap): New functions.
7065         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
7066         simplify, relying on read_input_list to set up the bitmaps.
7067         (main): Arguments are no longer unused.  Check for correct number
7068         of command line arguments, set srcdir and srcdir_len, then call
7069         read_input_list, before doing anything else.  No need to worry
7070         about duplicates in main loop.
7071         * configure.ac: Simplify the calculation of all_gtfiles.
7072         Put language tags in there.  Don't set or substitute
7073         all_gtfiles_files_langs or all_gtfiles_files_frags.
7074         * Makefile.in: Revamp the way gengtype is invoked, now that it
7075         takes a file on its command line with a much simpler format.
7076         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
7077         (GTFILES): Remove duplicates and C source files.
7078         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
7079         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
7080         * configure: Regenerate.
7081
7082         * gengtype.h: Remove all type definitions to gengtype.c; leave
7083         only definitions of options_p, type_p, and pair_p as opaque
7084         pointers.  Update prototypes.
7085         * gengtype.c: Many type definitions moved here from gengtype.h.
7086         Consolidate type definitions at the top of the file.
7087         (xvasprintf): Delete.
7088         (xasprintf): Make static.
7089         (create_nested_pointer_option): Add 'next' parameter.
7090         (create_field_all, create_field_at): New functions.
7091         (create_field): Now a thin wrapper around create_field_all.
7092         (create_optional_field): Rename create_optional_field_ and add
7093         line argument.  Original name is now a macro which supplies
7094         __LINE__.
7095         (oprintf): Use vsnprintf directly.
7096         (close_output_files): Use fatal rather than perror/exit.
7097         (note_def_vec, note_def_vec_alloc): Use create_field_at.
7098         (main): Set progname.  Don't use exit.
7099         * gengtype-yacc.y (struct_fields): Use create_field_at.
7100         (option, optionseqopt): Delete.
7101         (optionseq): Consolidate productions from option here so we
7102         can use the first argument to create_option.
7103
7104         * gengtype-lex.l: Distinguish unions from structures in the
7105         token type.  Don't call find_structure; return the tag as a string.
7106         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
7107         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
7108         Reorganize typedef_struct production accordingly.
7109         Use create_nested_ptr_option.
7110         * gengtype.c (create_nested_ptr_option): New function.
7111         * gengtype.h: Declare it.
7112
7113         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
7114         (string_type): Don't declare.
7115         (do_scalar_typedef): Declare.
7116         (create_scalar_type): Update prototype.
7117         * gengtype.c (string_type): Make static.
7118         (scalar_nonchar, scalar_char): New.
7119         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
7120         (resolve_typedef): Use scalar_nonchar for error recovery.
7121         (create_scalar_type): Remove name_len field.  Return scalar_char
7122         or scalar_nonchar as appropriate.
7123         (adjust_field_type): Look at scalar_is_char boolean to decide whether
7124         to use string_type.
7125         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
7126         whenever possible.
7127         (main): Initialize scalar_char and scalar_nonchar before calling
7128         gen_rtx_next.
7129         * gengtype-lex.l: Adjust for removal of second argument to
7130         create_scalar_type.  Use yylval.s instead of yylval.t when
7131         returning SCALAR.
7132         * gengtype-yacc.y: Type of SCALAR is string.  Call
7133         create_scalar_type from type:SCALAR rule.  Adjust for removal of
7134         second argument to create_scalar_type.
7135
7136         * vec.h: Remove all #if IN_GENGTYPE blocks.
7137         Add comment saying that changes may require adjustments to gengtype.
7138         * gengtype.c: Don't include coretypes.h or tm.h.
7139         Add comment to inclusion of errors.h.
7140         (note_def_vec, note_def_vec_alloc): New functions.
7141         * gengtype.h: Declare new functions.
7142         * gengtype-lex.l: Don't include coretypes.h.
7143         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
7144         Delete.
7145         (update_lineno): Remove unnecessary prototype.
7146         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
7147         (VEC rule): Just return VEC_TOKEN.
7148         * gengtype-yacc.y (VEC_TOKEN): New token type.
7149         (type): Add a production for VEC(a,b).
7150         * Makefile.in: Update dependencies.
7151
7152         * gengtype-lex.l: Remove rules for parsing pointer-to-function
7153         typedefs that use the old PARAMS macro.
7154
7155         * gengtype-lex.l: Remove all rules and states relating to yacc
7156         input files.
7157         * gengtype-yacc.y: Similarly.
7158         * gengtype.c (note_yacc_type): Delete function.
7159         * gengtype.h: Update prototypes.
7160
7161 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
7162
7163         * tree-pretty-print.c (dump_generic_node): Report precision of
7164         unnamed integer types.
7165
7166 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
7167
7168         * ifcvt.c (noce_try_store_flag_constants): Don't check
7169         no_new_pseudos here.
7170         (noce_try_store_flag_constants): Don't check no_new_pseudos.
7171         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
7172         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
7173         noce_try_sign_mask): Likewise.
7174         (if_convert): Check no_new_pseudos here.
7175
7176         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
7177         Remove prototypes.
7178         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
7179         (noce_get_condition): Handle new then_else_reversed argument.
7180         (noce_init_if_info): Remove, fold into noce_find_if_block.
7181         (noce_process_if_block): Take a struct noce_if_info as the
7182         argument.  Don't set up one based on ce_if_info.  Update pointer
7183         references accordingly.
7184         (cond_move_process_if_block): Likewise.
7185         (process_if_block): Removed.
7186         (find_if_block): Removed.  Move functionality two new functions,
7187         noce_find_if_block and cond_exec_find_if_block.
7188         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
7189         blocks and the symmetric IF-ELSE-JOIN case.
7190         (cond_exec_find_if_block): Also new function mostly based on old
7191         find_if_block and process_if_block.
7192         (find_if_header): Replace find_if_block call with separately
7193         guarded calls to noce_find_if_block and cond_exec_find_if_block.
7194         (find_cond_trap): Update noce_get_condition call.
7195         (dead_or_predicable): Likewise.
7196
7197 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
7198
7199         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
7200         Remove.
7201         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
7202         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
7203         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
7204         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
7205         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
7206         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
7207         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
7208         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
7209         __builtin_ia32_psrad128 builtins.
7210
7211 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
7212
7213         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
7214         * config/i386/constraints.md
7215         (define_constraint "I"): Use IN_RANGE macro.
7216         (define_constraint "J"): Ditto.
7217         (define_constraint "K"): Ditto.
7218         (define_constraint "M"): Ditto.
7219         (define_constraint "N"): Ditto.
7220         (define_constraint "O"): Ditto.
7221         * config/i386/predicates.md
7222         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
7223         (define_predicate "const_0_to_3_operand"): Ditto.
7224         (define_predicate "const_0_to_7_operand"): Ditto.
7225         (define_predicate "const_0_to_15_operand"): Ditto.
7226         (define_predicate "const_0_to_63_operand"): Ditto.
7227         (define_predicate "const_0_to_255_operand"): Ditto.
7228         (define_predicate "const_1_to_31_operand"): Ditto.
7229         (define_predicate "const_2_to_3_operand"): Ditto.
7230         (define_predicate "const_4_to_7_operand"): Ditto.
7231
7232 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
7233
7234         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
7235         in SImode for save_world.
7236         * config/rs6000/altivec.md (save_world, restore_world): Convert to
7237         LR hard reg.
7238
7239 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
7240
7241         PR tree-optimization/30784
7242         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
7243         BIT_FIELD_REF.
7244
7245 2007-03-25  Revital Eres  <eres@il.ibm.com>
7246
7247         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
7248           Fold movement_possibility function into it.
7249
7250 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
7251
7252         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
7253         (load_macho_picbase_{si,di}): Convert to LR hard reg.
7254         (call_indirect_nonlocal_darwin64): Same.
7255         (call_nonlocal_darwin64): Same.
7256         (call_value_indirect_nonlocal_darwin64): Same.
7257         (call_value_nonlocal_darwin64): Same.
7258         (sibcall_nonlocal_darwin64): Same.
7259         (sibcall_value_nonlocal_darwin64): Same.
7260         (sibcall_symbolic_64): Same.
7261         (sibcall_value_symbolic_64): Same.
7262         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
7263         LR pseudo.
7264         (rs6000_emit_load_toc_table): Same.
7265         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
7266         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
7267         (mull_call): Same.
7268         (divss_call): Same.
7269         (divus_call): Same.
7270         (quoss_call): Same.
7271         (quous_call): Same.
7272         (load_toc_v4_pic_si): Same
7273         (load_toc_v4_PIC_1): Same.
7274         (load_toc_v4_PIC_1b): Same.
7275         (call_indirect_aix{32,64}): Same.
7276         (call_value_indirect_aix{32,64}): Same.
7277         (call): Same.
7278         (call_value): Same.
7279         (call_local{32,64}): Same.
7280         (call_value_local{32,64}): Same.
7281         (call_indirect_nonlocal_aix{32,64}): Same.
7282         (call_nonlocal_aix{32,64}): Same.
7283         (call_value_indirect_nonlocal_aix{32,64}): Same.
7284         (call_value_nonlocal_aix{32,64}): Same.
7285         (call_indirect_nonlocal_sysv<mode>): Same.
7286         (call_nonlocal_sysv<mode>): Same.
7287         (call_value_indirect_nonlocal_sysv<mode>): Same.
7288         (call_value_nonlocal_sysv<mode>): Same.
7289         (sibcall): Same.
7290         (sibcall_local{32,64}): Same.
7291         (sibcall_value_local{32,64}): Same.
7292         (sibcall_nonlocal_aix{32,64}): Same.
7293         (sibcall_value_nonlocal_aix{32,64}): Same.
7294         (sibcall_nonlocal_sysv<mode>): Same.
7295         (sibcall_value): Same.
7296         (sibcall_value_nonlocal_sysv<mode>): Same.
7297
7298 2007-03-24  Paul Brook  <paul@codesourcery.com>
7299
7300         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
7301         * config/arm/linux-eabi.h: Remove legacy syscall hack.
7302
7303 2007-03-24  Richard Henderson  <rth@redhat.com>
7304
7305         * config/ia64/constraints.md: New file.
7306         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
7307         satisfies_constraint_?.
7308         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
7309         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
7310         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
7311         ia64_output_mi_thunk): Likewise.
7312         (ia64_const_ok_for_letter_p): Remove.
7313         (ia64_const_double_ok_for_letter_p): Remove.
7314         (ia64_extra_constraint): Remove.
7315         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
7316         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
7317         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
7318         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
7319         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
7320         EXTRA_MEMORY_CONSTRAINT): Remove.
7321         * config/ia64/ia64.md: Include constriants.md.  Replace
7322         CONST_OK_FOR_? with satisfies_constraint_?.
7323
7324 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
7325             H.J. Lu  <hongjiu.lu@intel.com>
7326
7327         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
7328         DPD or BID name.
7329         (name macros): Use DPD_BID_NAME to convert names properly.
7330
7331         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
7332         decimal floating point format.
7333         (init_floating_libfuncs): Change decimal functions so that they
7334         have a "bid_" prefix if the decimal system uses the BID format,
7335         and "dpd_" prefix if the decimal system uses the DPD format.
7336         (init_interclass_conv_libfuncs): Ditto.
7337         (init_intraclass_conv_libfuncs): Ditto.
7338
7339         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
7340         using the BID format.
7341
7342         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
7343         whether we are using the BID decimal format.
7344         * configure: Regenerate.
7345
7346         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
7347         the compiler has decimal floating point enabled.  Define
7348         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
7349         instead of DPD.
7350
7351         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
7352         using the BID format.
7353
7354         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
7355         whether we are using the BID decimal format.
7356         * configure: Regenerate.
7357
7358         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
7359         the compiler has decimal floating point enabled.  Define
7360         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
7361         instead of DPD.
7362
7363         * doc/install.texi (--enable-decimal-float): Document BID and DPD
7364         options, and that it is enabled for i386/x86_64 systems.
7365
7366         * Makefile.in (enable_decimal_float): New.
7367         (DECNUMFMT): New.
7368         (DECNUMINC): Add  -I$(DECNUMFMT).
7369         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
7370         to $(DECNUMFMT) from $(DECNUM).
7371
7372         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
7373         Substitute enable_decimal_float.
7374         * configure: Regenerated.
7375
7376         PR other/30529
7377         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
7378         unsigned long.
7379
7380         * configure.ac: Enable decimal float for x86_64-*-linux*.
7381         * configure: Regenerated.
7382
7383         PR other/30530
7384         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
7385         decimal128ClearSign to flip and clear the sign bit in decimal128.
7386         (decimal_real_maxval): Set decimal128SetSign to set the sign
7387         bit in decimal128.
7388
7389 2007-03-23  Ian Lance Taylor  <iant@google.com>
7390
7391         * fold-const.c (fold_binary): Correct warning for X - c >= X.
7392
7393 2007-03-23  Ian Lance Taylor  <iant@google.com>
7394
7395         * tree-dump.c (dump_files): Correct comment.
7396
7397 2007-03-23  Ian Lance Taylor  <iant@google.com>
7398
7399         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
7400
7401 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
7402
7403         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
7404         in cfglayout mode.  Don't go into and out of cfglayout mode.
7405         Link the blocks in the order of the constructed traces.
7406         (rest_of_handle_tracer): Adjust call to tracer.
7407         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
7408         Don't go into cfglayout mode.
7409         (rtl_loop_done): Don't go out of cfglayout mode.
7410         * cfglayout.c (relink_block_chain): New function, split out from...
7411         (fixup_reorder_chain): ...here.  Remove redundant checking.
7412         (cfg_layout_finalize): Don't clear the header, footer, and aux
7413         fields here, move the code to do so to relink_block_chain.  Likewise
7414         for free_original_copy_tables.
7415         * rtl.h (tracer): Update prototype.
7416         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
7417         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
7418         mode.  Use relink_block_chain to serialize the CFG according to the
7419         new basic block order.  Move targetm.cannot_modify_jumps_p check from
7420         here...
7421         (gate_handle_reorder_blocks): ...to here.
7422         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
7423         from here...
7424         (gate_duplicate_computed_gotos): ...to here.
7425         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
7426         something always changes when going into and out of cfglayout mode.
7427         Perform an expensive cfg cleanup while going into cfglayout mode.
7428         Always update liveness information on HAVE_conditional_execution
7429         targets.  Reserialize the basic blocks and go out of cfglayout mode.
7430         * reg-stack.c: Include cfglayout.h.
7431         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
7432         the call to reorder_basic_blocks.
7433         * basic-block.h (reorder_basic_blocks): Update prototype.
7434         (relink_block_chain): New prototype.
7435         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
7436
7437 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
7438
7439         * config/mips/mips.md (type, hazard, *movdi_32bit,
7440         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
7441         *movhi_internal, *movqi_internal, *movsf_hardfloat,
7442         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
7443         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
7444         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
7445         applicable.
7446         (movcc): Change first xfer to multi.
7447         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
7448         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
7449         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
7450         config/mips/generic.md: Change reservations using "xfer" to use
7451         "mfc,mtc".
7452         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
7453         using match_operand.
7454         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
7455         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
7456         examining mode.
7457         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
7458
7459 2007-03-22  Richard Henderson  <rth@redhat.com>
7460
7461         * config/i386/i386.c: Remove unnecessary function declarations.
7462         Move targetm definition, and all related macros, to the end of
7463         the file.  Resort some functions to put definitions before uses.
7464         (ix86_attribute_table): Make static.  Move to end of file.
7465         (ix86_gimplify_va_arg): Make static.
7466
7467 2007-03-22  Richard Henderson  <rth@redhat.com>
7468
7469         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
7470         don't increase local_regparm with force_align_arg_pointer check.
7471         (ix86_function_sseregparm): Assert 32-bit.
7472         (type_has_variadic_args_p): New.
7473         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
7474         type_has_variadic_args_p.
7475         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
7476         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
7477         use memset instead.  Do maybe_vaarg check first; skip attribute
7478         tests if true; skip attribute tests for 64-bit.
7479         (construct_container): Remove TARGET_DEBUG_ARG.
7480         (function_arg_advance_32, function_arg_advance_64): Split out ...
7481         (function_arg_advance): ... from here.
7482         (function_arg_32, function_arg_64): Split out ...
7483         (function_arg): ... from here.
7484         (ix86_pass_by_reference): Tidy.
7485         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
7486         (function_value_32): New, from parts of ix86_function_value
7487         and ix86_value_regno.
7488         (function_value_64): New, from parts of ix86_function_value
7489         and ix86_libcall_value.
7490         (ix86_function_value_1): New.
7491         (ix86_function_value, ix86_libcall_value): Use it.
7492         (return_in_memory_32, return_in_memory_64): Split out ...
7493         (ix86_return_in_memory): ... from here.
7494         (ix86_struct_value_rtx): Skip for 64-bit.
7495         (ix86_libcall_value, ix86_value_regno): Remove.
7496         (setup_incoming_varargs_64): Split out ...
7497         (ix86_setup_incoming_varargs): ... from here.
7498         (ix86_va_start): Remove TARGET_DEBUG_ARG.
7499         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
7500         * config/i386/i386-protos.h (ix86_function_value): Remove.
7501         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
7502
7503 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7504
7505         PR other/23572
7506         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
7507         infinities not supported, otherwise emit warning if -Woverflow. On
7508         underflow, emit warning if -Woverflow.
7509         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
7510         and 0 otherwise.
7511         * real.h (real_from_string): Update declaration
7512
7513 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
7514             Richard Henderson  <rth@redhat.com>
7515
7516         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
7517         * calls.c (compute_argument_block_size, expand_call,
7518         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
7519         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
7520         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
7521         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
7522         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
7523         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
7524         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
7525         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
7526         Set to 1.
7527
7528 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
7529
7530         * c-incpath.c (add_sysroot_to_chain): New.
7531         (merge_include_chains): Add sysroot argument.  Call
7532         add_sysroot_to_chain if sysrooted.
7533         (register_include_chains): Update call to merge_include_chains.
7534         * doc/cppopts.texi: Document use of '=' in include directory
7535         arguments.
7536
7537 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
7538
7539         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
7540         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
7541         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
7542         insn pattern using X87MODEF12 mode macro.
7543
7544 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
7545
7546         * regmove.c (regmove_optimize): Use reg_mentioned_p
7547         instead of reg_overlap_mentioned_p for DST.
7548
7549 2007-03-21  Mike Stump  <mrs@apple.com>
7550
7551         * c.opt: Fixup for Objective-C/C++.
7552
7553 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
7554
7555         * explow.c (convert_memory_address): Fold memory reference when
7556         POINTERS_EXTEND_UNSIGNED < 0
7557
7558 2007-03-21  Richard Henderson  <rth@redhat.com>
7559
7560         PR target/31245
7561         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
7562         * config/i386/mmintrin.h (__m64): Likewise.
7563         * config/i386/xmmintrin.h (__m128): Likewise.
7564
7565 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
7566
7567         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
7568         (VXWORKS_OS_CPP_BUILTINS): Define.
7569         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
7570         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
7571
7572 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
7573
7574         * rtl.h (constant_pool_reference_p): Delete.
7575         (find_constant_src): Declare.
7576         * rtlanal.c (find_constant_src): New function.
7577         * simplify-rtx.c (constant_pool_reference_p): Delete.
7578         * config/i386/i386.md: Use find_constant_src instead of
7579         constant_pool_reference_p/avoid_constant_pool_reference pairs.
7580
7581 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
7582
7583         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
7584         * c-cppbuiltin.c (c_cpp_builtins): Define them.
7585
7586 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
7587
7588         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
7589         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
7590         (arm_elf_asm_constructor): Use it.
7591         (arm_elf_asm_destructor): New function.
7592
7593 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
7594
7595         * jump.c (mark_jump_label): Treat SEQUENCE specially.
7596
7597 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
7598
7599         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
7600
7601 2007-03-19  Andrew Haley  <aph@redhat.com>
7602
7603         PR tree-optimization/31264
7604         * tree-vrp.c (register_edge_assert_for_1): Don't look though
7605         VIEW_CONVERT_EXPRs.
7606
7607 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
7608
7609         PR rtl-optimization/30907
7610         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
7611         (fwprop_init): Always call loop_optimizer_initialize.
7612         (fwprop_done): Always call loop_optimizer_finalize.
7613         (fwprop): We always have loop info now.
7614         (gate_fwprop_addr): Remove.
7615         (pass_fwprop_addr): Use gate_fwprop as gate.
7616
7617         PR rtl-optimization/30841
7618         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
7619         df_chain_alloc): Call df_reorganize_refs unconditionally.
7620         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
7621         refs_organized to refs_organized_size.
7622         (df_ref_create_structure): Use refs_organized_size instead of
7623         bitmap_size if refs had been organized, and keep refs_organized_size
7624         up-to-date.
7625         * df.h (struct df_ref_info): Change refs_organized to
7626         refs_organized_size.
7627         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
7628         bitmap_size.
7629
7630 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
7631
7632         * except.c (output_function_exception_table): Do not reference the
7633         EH personality routine for functions that do not require an
7634         exception table.
7635
7636 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
7637
7638         PR c/30762
7639         * c-typeck.c (convert_for_assignment): Call comptypes for
7640         RECORD_TYPE or UNION_TYPE.
7641
7642         PR inline-asm/30505
7643         * reload1.c (reload): Do invalid ASM checking after
7644         cleanup_subreg_operands.
7645
7646 2007-03-19  Jeff Law  <law@redhat.com>
7647
7648         * tree-cfg.c (find_taken_edge): Tighten conditions for
7649         optimizing computed gotos.
7650
7651 2007-03-19  Michael Matz  <matz@suse.de>
7652
7653         * builtins.c (expand_builtin_sync_operation,
7654         expand_builtin_compare_and_swap,
7655         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
7656         correctly.
7657
7658         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
7659         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
7660         for operand 3.
7661
7662 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
7663
7664         * doc/tm.texi: Add brackets around the return type of
7665         TARGET_SECONDARY_RELOAD.
7666
7667 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7668         Richard Guenther  <rguenther@suse.de>
7669
7670         PR tree-optimization/31254
7671         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
7672         Use handled_component_p () where appropriate.  Continue
7673         propagating into the rhs if we propagated into an INDIRECT_REF
7674         on the lhs.
7675
7676 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
7677
7678         * config/s390/s390.md (op_type attribute): RRR instruction type added.
7679         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
7680         (xde, xdee): Mode attributes adjusted to support DFP modes.
7681         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
7682         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
7683         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
7684         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
7685         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
7686         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
7687         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
7688         numbers.
7689         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
7690         "movsf"): Insn definitions removed.
7691         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
7692         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
7693         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
7694         definitions added.
7695         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
7696         "reload_in<mode>", "reload_out<mode>"): Expander added.
7697         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
7698         Expander removed.
7699
7700 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
7701
7702         * config/s390/s390.md: Only non-functional changes.  Renamed
7703         FPR mode macro to BFP all over the file.
7704
7705 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
7706
7707         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
7708         (op_type attribute): RRF instruction type added.
7709         (fT0): New mode attribute.
7710         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
7711         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
7712         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
7713         no secondary memory is needed when moving DFmode values between GPRs
7714         and FPRs.
7715
7716 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
7717
7718         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
7719         inverted and documentation adjusted.
7720         ("mhard-dfp", "msoft-dfp"): New options.
7721         * config/s390/s390.c (s390_handle_arch_option): New architecture
7722         switch: z9-ec.
7723         (override_options): Sanity checks for the new options added.
7724         * config.gcc: New architecture switch: z9-ec.
7725         * config/s390/s390.h (processor_flags): PF_DFP added.
7726         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
7727         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
7728         when the bit is NOT set so remove it from the defaults.
7729
7730 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
7731
7732         * genemit.c (main): Print include statement for dfp.h.
7733         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
7734         is not available.
7735
7736 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
7737
7738         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
7739
7740 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
7741
7742         PR target/31022
7743         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
7744         instead of PATTERN.
7745
7746 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7747
7748         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
7749         attr_length_call, output_call, output_indirect_call): Cleanup
7750         formatting of targetm calls.
7751
7752 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
7753
7754         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
7755
7756 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7757
7758         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
7759         reservation, bypass and anti-bypass descriptions for these instructions.
7760         Update move patterns.
7761         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
7762         TYPE_FPSTORE.
7763
7764 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
7765
7766         * tree-vect-transform.c (get_initial_def_for_induction): Replace
7767         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
7768         (get_initial_def_for_reduction): Likewise.
7769
7770 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
7771
7772         Fix PR tree-optimization/29922
7773         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
7774         (get_representative): Removed.
7775         (value_dies_in_block_x): Update for rvuse removal.
7776         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
7777         (compute_antic_aux): Handle when PHI nodes appear in
7778         non-single-successors.
7779         (dump_bitmap_of_names): Removed.
7780         (compute_antic_safe): Renamed and removed rvuse calculation.
7781         Calculate only antic safe.
7782         (insert_into_preds_of_block): Remove assert.
7783         (execute_pre): Update for renamed functions.
7784         (defer_or_phi_translate_block): New function.
7785
7786 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
7787
7788         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
7789         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
7790         typos.
7791         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
7792         Follow spelling conventions.
7793
7794         * tree-data-ref.h: Remove the prototype for analyze_array.
7795
7796 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
7797
7798         PR tree-optimization/31041
7799         * tree-vect-transform.c (get_initial_def_for_induction): Call
7800         force_gimple_operand.
7801
7802 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
7803
7804         * ipa-type-escape.c (look_for_casts) : Revert code to use
7805         handled_component_p due to ada test a-numaux.adb.
7806
7807 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
7808
7809         * final.c (final_scan_insn): Alter the condition of a
7810         conditional trap if we have nonstandard CC.
7811
7812 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
7813
7814         * configure.ac: Remove excess quoting from asm line 0 test.
7815         * configure: Rebuilt.
7816
7817 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7818
7819         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
7820         * c-common.c (convert_and_check): Move warning logic to...
7821         (warnings_for_convert_and_check): ...here. Define.
7822         * c-common.h (warnings_for_convert_and_check): Declare.
7823
7824 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7825
7826         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
7827         (output_call): Likewise.
7828
7829 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
7830
7831         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
7832
7833 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
7834
7835         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
7836
7837 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
7838
7839         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
7840         opteron, athlon-64 and athlon-fx processor_alias_table entries.
7841
7842 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
7843
7844         PR tree-optimization/31183
7845         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
7846         Use double_int instead of unsigned int for representing access_strides.
7847         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
7848
7849 2007-03-16  Richard Guenther  <rguenther@suse.de>
7850
7851         PR tree-optimization/31146
7852         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
7853         to allow recursion of forward_propagate_addr_expr.
7854         (forward_propagate_addr_into_variable_array_index): Likewise.
7855         (forward_propagate_addr_expr): Likewise.
7856         (tree_ssa_forward_propagate_single_use_vars): Likewise.
7857         (forward_propagate_addr_expr_1): Recurse on simple copies
7858         instead of propagating into them.  Do so for useless conversions
7859         as well.
7860         (forward_propagate_addr_expr): Clean up unused statements after
7861         recursion.
7862
7863 2007-03-16  Richard Guenther  <rguenther@suse.de>
7864
7865         * builtins.c (expand_builtin_cexpi): Use the right argument
7866         for the expansion via cexp.
7867
7868 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
7869
7870         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
7871         * configure: Rebuilt.
7872
7873 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
7874
7875         PR debug/29906
7876         * dwarf2out.c (force_type_die): Adjust comment.
7877         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
7878
7879 2007-03-15  DJ Delorie  <dj@redhat.com>
7880
7881         * config/frv/predicates.md (minmax_operator): Don't check operands
7882         here.
7883
7884 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
7885
7886         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
7887         Update constant estimates of number of iterations.
7888         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
7889         argument renamed to "realistic".
7890         (compute_estimated_nb_iterations): Removed.
7891         (record_niter_bound): New function.
7892         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
7893         call record_nonwrapping_iv with upper = false.
7894         (infer_loop_bounds_from_signedness): Pass upper argument to
7895         record_nonwrapping_iv.
7896         (estimate_numbers_of_iterations_loop): Do not call
7897         compute_estimated_nb_iterations.  Record estimate based on profile
7898         information.  Initialize the constant estimates of number of
7899         iterations.
7900         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
7901         estimates.
7902         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
7903         number of iterations is too small.
7904         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
7905         (EST_NOT_AVAILABLE): Removed.
7906         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
7907         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
7908         fields.
7909
7910 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
7911
7912         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
7913         Handle NE_EXPR guards.
7914
7915 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7916
7917         PR c++/24924
7918         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
7919         Set also -pedantic-errors by default for the  preprocessor unless
7920         -fpermissive is given.
7921
7922 2007-03-15  Richard Guenther  <rguenther@suse.de>
7923
7924         PR middle-end/29719
7925         PR middle-end/31161
7926         * builtins.c (expand_builtin_cexpi): As a fallback if we
7927         don't have builtins for sincos or cexp create a function
7928         declaration for cexp and expand to a call to that.
7929         (expand_builtin_int_roundingfn): Always fall
7930         back to floor/ceil and its variants even if they may be
7931         not available.
7932
7933 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
7934
7935         PR middle-end/31159
7936         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
7937         jump tables, move the call to delete_dead_jumptables from here...
7938         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
7939         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
7940         don't allow merging of blocks that try_redirect_by_replacing_jump
7941         also does not handle when not optimizing.
7942
7943 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
7944             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
7945
7946         * config/i386/i386.md (x86_sahf_1): Correctly handle
7947         HAVE_AS_IX86_SAHF.
7948
7949 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
7950
7951         PR target/31167
7952         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
7953         x86_64_general_operand as operand[2] predicate.  Remove "iF"
7954         from operand constraints and use "e" constraint instead.
7955         (*subti3_1, *subti3_1 splitter): Ditto.
7956         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
7957         operand[1] predicate.
7958
7959 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
7960
7961         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
7962         arrays, multiply the access strides by the size of the sub-array.
7963         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
7964
7965 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
7966
7967         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
7968         the configured assembler supports the sahf mnemonic.
7969         * configure: Regenerate.
7970         * config.in: Regenerate.
7971
7972         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
7973         emit "sahf" or ".byte\t0x9e" as asm template.
7974
7975 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
7976
7977         PR 31018
7978         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
7979         option to replace hard coded TARGET_xxx in md file.
7980         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
7981         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
7982         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
7983         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
7984         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
7985         (X86_TUNE_NOT_VECTORMODE): Ditto.
7986         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
7987         (TUNE_AVOID_VECTOR_DECODE): Ditto.
7988         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
7989         (TUNE_SLOW_IMUL_IMM8): Ditto.
7990         (TUNE_MOVE_M1_VIA_OR): Ditto.
7991         (TUNE_NOT_UNPAIRABLE): Ditto.
7992         (TUNE_NOT_VECTORMODE): Ditto.
7993
7994         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
7995         options.
7996
7997         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
7998         tuning options instead of hard coded TARGET_xxx.
7999         (fix ssemode peephole2's): Ditto.
8000         (imul peephole2's): Ditto.
8001         (movsi_or): Ditto.
8002         (movdi_or_rex64): Ditto.
8003         (move peephole2): Ditto.
8004         (not peephole2's): Ditto.
8005
8006 2007-03-14  Dirk Mueller  <dmueller@suse.de>
8007
8008         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
8009         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
8010         * c-parser.c (c_parser_if_body): Always add an empty statement in case
8011         of empty body.
8012         * c-parser.c (c_parser_do_statement): Warn about empty body in
8013         do/while statement.
8014         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
8015         * doc/invoke.texi (-Wempty-body): Update documentation.
8016
8017 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8018
8019         PR c/21438
8020         * c-common.h (warn_for_div_by_zero): Declare.
8021         * c-common.c (warn_for_div_by_zero): Define.
8022         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
8023         warning.
8024
8025 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
8026
8027         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
8028         to PREFIX and STANDARD_PREFIX.
8029
8030 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
8031             Phil Edwards  <phil@codesourcery.com>
8032
8033         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
8034         (__gthread_once_t): Remove busy field for RTPs.
8035         (__GTHREAD_ONCE_INIT): Update accordingly.
8036
8037 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
8038
8039         * doc/invoke.texi: Document VxWorks options.
8040
8041 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
8042
8043         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
8044
8045 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
8046
8047         PR tree-optimization/30590
8048         * tree-nrv.c (tree_nrv): Check for the partial update of the
8049         return value.
8050
8051 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
8052
8053         * flags.h (flag_random_seed): Remove declaration, in favor of...
8054         * toplev.h (get_random_seed, set_random_seed): ... these.
8055         * tree.c (get_file_function_name): Use the former.
8056         * opts.c (common_handle_option): Use the latter.
8057         * toplev.c
8058
8059 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
8060
8061         PR middle-end/31127
8062         * cse.c (cse_find_path): Do not bail out if a basic block that
8063         we already visited now becomes part of a path that starts at a
8064         different basic block.  Just disallow this, to make sure we
8065         visit each basic block at most once.
8066
8067 2007-03-13  Jan Hubicka  <jh@suse.cz>
8068
8069         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
8070         when profile esitmate is present, calls with very low frequency are
8071         cold.
8072
8073 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
8074
8075         PR tree-optimization/30730
8076         PR tree-optimization/26900
8077         * tree-ssa-loop-niter.c: Include gmp.h.
8078         (bounds): New type.
8079         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
8080         split_to_var_and_offset, determine_value_range,
8081         bound_difference_of_offsetted_base, refine_bounds_using_guard,
8082         bound_difference, bounds_add, bounds_negate,
8083         number_of_iterations_ne_max, dump_affine_iv): New functions.
8084         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
8085         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
8086         difference of initial and final value of control iv to validate
8087         results.
8088         (number_of_iterations_cond): Add loop parameter.  Determine bounds
8089         on the difference of the extremes of the control iv.  Add dumps.
8090         (expand_simple_operations): Handle phi nodes.
8091         (simplify_using_initial_conditions): Do not record used conditions.
8092         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
8093         Do not set additional_info.
8094         (implies_nonnegative_p, implies_ge_p): Removed.
8095         (derive_constant_upper_bound): Do not use parameter `additional'.
8096         (record_estimate): Parameter `additional' removed.  Parameter
8097         `i_bound' added.  Do not call derive_constant_upper_bound.
8098         (record_nonwrapping_iv): Use derive_constant_upper_bound to
8099         bound the number of iterations estimate.
8100         (estimate_numbers_of_iterations_loop): Pass the estimate from
8101         the number of iterations analysis to record_estimate.
8102         * tree.h (multiple_of_p): Declare.
8103         * tree-scalar-evolution.c (expression_expensive_p): Removed.
8104         (scev_const_prop): Do not check expression_expensive_p.
8105         * fold-const.c (multiple_of_p): Exported.
8106         * double-int.c (double_int_mask): Exported.
8107         * double-int.h (double_int_mask): Declare.
8108         * tree-flow.h (struct tree_niter_desc): Removed additional_info
8109         field.  Added max field.
8110
8111 2007-03-13  David Taylor  <taylor@candd.org>
8112
8113         PR driver/12448:
8114         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
8115         default -MQ.
8116
8117 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8118
8119         PR target/31123
8120         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
8121         two unamed patterns.
8122
8123 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
8124
8125         * config/i386/i386.opt (mcx16, msahf): New options.
8126         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
8127         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
8128
8129         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
8130         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
8131         Output -mcx16 and -msahf options when corresponding bit is set.
8132
8133         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
8134         and -msahf options.
8135
8136 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
8137
8138         * configure.ac: Test for assembler tolerance to # 0 "".
8139         * configure, config.in: Rebuilt.
8140         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
8141
8142 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
8143
8144         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
8145
8146         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
8147         (handle_syscall): Handle direct system calls.
8148         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
8149
8150 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
8151
8152         * doc/invoke.texi: Fix cpp.info cross-reference.
8153         * doc/passes.texi: Fix gcc.info cross-reference.
8154
8155 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
8156
8157         PR tree-optimization/30835
8158         * lambda-code.c (can_convert_to_perfect_nest): Check whether
8159         bb_for_stmt is not NULL before accessing it.
8160
8161 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
8162
8163         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
8164         some multilibs.
8165
8166 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
8167
8168         PR 30635
8169         * doc/install.texi: Document --enable-stage1-languages
8170
8171 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
8172
8173         * tree-pass.h (pass_into_cfg_layout_mode,
8174         pass_outof_cfg_layout_mode): Declare.
8175         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
8176         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
8177         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
8178         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
8179
8180 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
8181
8182         * c-decl.c (warn_variable_length_array): New function.
8183         Refactored from grokdeclarator to handle warn_vla
8184         and handle unnamed array case.
8185         (grokdeclarator): Refactored VLA warning case.
8186         * c.opt (Wvla): New flag.
8187         * doc/invoke.texi (Wvla): New warning.
8188
8189 2007-03-12  Richard Henderson  <rth@redhat.com>
8190
8191         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
8192         (TARGET_SECTION_TYPE_FLAGS): New.
8193
8194 2007-03-12  Richard Henderson  <rth@redhat.com>
8195
8196         * config/darwin.c (machopic_reloc_rw_mask): New.
8197         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
8198         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
8199
8200 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
8201
8202         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
8203         * cppdefault.h (cpp_PREFIX): Document.
8204         (cpp_PREFIX_len): Likewise.
8205         (cpp_EXEC_PREFIX): New variable.
8206         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
8207         * c-incpath.c (add_standard_paths): Correct logic for relocating
8208         paths within prefix.
8209
8210 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
8211
8212         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
8213         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
8214         mode macro.
8215         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
8216         fix_truncdfdi_sse using SSEMODEF mode macro.
8217         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
8218         fix_truncdfsi_sse using SSEMODEF mode macro.
8219         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
8220         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
8221
8222 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
8223
8224         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
8225         elfos.h to tm_file.
8226
8227 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
8228
8229         * tree.h : Add multiple_of_p declaration.
8230         * fold-const.c (multiple_of_p): Make multiple_of_p public.
8231         * ipa-type-escape.c (results_of_malloc): Redundant.
8232         (visited_stmts): New. Visited stmt for walk_use_def_chains.
8233         (cast_type): Extended with new members.
8234         (check_cast): Returns cast_type.
8235         (cast): New structure for data of walk_use_def_chains.
8236         (is_malloc_result, is_cast_from_non_pointer_1,
8237         is_cast_from_non_pointer,
8238         is_array_access_through_pointer_and_index): New functions.
8239         (look_for_casts): Returns cast types.
8240         (check_call): Returns void.
8241         (okay_pointer_operation): Use support of pointer plus index,
8242         pointer plus constant and allow all multiplications.
8243
8244 2007-03-11  Richard Guenther  <rguenther@suse.de>
8245
8246         PR tree-optimization/31115
8247         * tree-vrp.c (extract_range_from_binary_expr): Make sure
8248         the shift count is positive and non-anti-range for RSHIFT_EXPR.
8249         A shift count of zero is not special as with *_DIV_EXPR.
8250         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
8251         direction.
8252
8253 2007-03-11  Ian Lance Taylor  <iant@google.com>
8254
8255         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
8256         the *_DIV_EXPR codes correctly with overflow infinities.
8257
8258 2007-03-11  Ira Rosen  <irar@il.ibm.com>
8259
8260         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
8261         indicate success/failure of the analysis. Add negation to subtrahend
8262         in case of subtraction. Fail if both operands contain constants.
8263         (create_data_ref): Fail if analyze_offset fails.
8264
8265 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
8266
8267         * config/i386/i386.md (frndintxf2): Rename to ...
8268         (rintxf2): ... this. Remove expander having same name.
8269         (rintsf2, rintdf2): Implement using SSEMODEF macro.
8270         (roundsf2, rounddf2): Ditto.
8271         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
8272         (lround<mode>di2, lround<mode>si2): Ditto.
8273
8274 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
8275
8276         * lower-subreg.c: Include except.h.
8277         (decompose_multiword_subregs): Verify that the only control flow
8278         insns we can split are loads to multi-words pseudos.
8279         Handle breaking such blocks after splitting, instead of calling
8280         find_many_sub_basic_blocks.
8281
8282         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
8283         on the new basic block.  Add a lengthy comment explaining why we
8284         thought this was necessary.
8285         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
8286
8287 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
8288
8289         PR c++/30924
8290         * tree.c (walk_type_fields): Recurse into the element type of
8291         ARRAY_TYPEs if there is a pointer set.
8292
8293 2007-03-10  Dirk Mueller  <dmueller@suse.de>
8294
8295         * c-common.c (warn_logical_operator): Fix condition.
8296
8297 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
8298
8299         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
8300         quotation mark.
8301         * config/darwin.c (machopic_select_section): Remove superfluous
8302         argument in call to categorize_decl_for_section.  Remove unused
8303         variable shlib.
8304
8305 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
8306
8307         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
8308         defined.
8309         * configure: Regenerate.
8310
8311 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
8312
8313         PR target/31101
8314         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
8315         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
8316         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
8317         Add LABEL_NUSES to emitted label.
8318         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
8319         branch probability value to emitted jump insn.
8320         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
8321         Do not check life information and do not re-arrange input operands
8322         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
8323
8324 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
8325
8326         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
8327         the change of decode_asm_operands.
8328
8329 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
8330
8331         * mode-switching.c (create_pre_exit): Skip blockage insn.
8332
8333 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
8334
8335         * tree-pass.h (TODO_update_smt_usage): Remove.
8336         Update all users.
8337         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
8338         argument SOME.
8339         Update all users.
8340
8341 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8342
8343         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
8344         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
8345         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
8346         SOM target.
8347
8348 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
8349
8350         * gcc.c: Document %{, in big comment at top.
8351         (input_suffix_matches): Remove special handling for .s and
8352         .S.
8353         (input_spec_matches): New.
8354         (handle_braces): Handle %{,.
8355         (validate_switches): ',' indicates a value which is not a switch.
8356         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
8357         to detect assembler input.
8358         * config/i386/sol2.h (CPP_SPEC): Likewise.
8359         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
8360         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
8361         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
8362         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
8363         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
8364         -m64 causes deployment target to default to 10.5.
8365         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
8366
8367 2007-03-09  Richard Henderson  <rth@redhat.com>
8368
8369         PR target/26090
8370         * target.h (targetm.asm.out.reloc_rw_mask): New.
8371         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
8372         (TARGET_ASM_OUT): Use it.
8373         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
8374         * varasm.c (categorize_decl_for_section): Remove shlib argument;
8375         use the new reloc_rw_mask target hook instead.
8376         (default_section_type_flags_1): Merge into...
8377         (default_section_type_flags): ... here.
8378         (decl_readonly_section_1): Merge into...
8379         (decl_readonly_section): ... here.
8380         (default_elf_select_section_1): Merge into...
8381         (default_elf_select_section): ... here.
8382         (default_unique_section_1): Merge into...
8383         (default_unique_section): ... here.
8384         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
8385         (default_select_rtx_section): Use it.
8386         (default_elf_select_rtx_section): Likewise.
8387         * output.h: Update to match.
8388         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
8389         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
8390         (TARGET_ASM_RELOC_RW_MASK): New.
8391         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
8392         to categorize_decl_for_section.
8393         (x86_64_elf_unique_section): Likewise.
8394         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
8395         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
8396         (TARGET_ASM_RELOC_RW_MASK): New.
8397         * config/ia64/ia64.c (ia64_rwreloc_select_section,
8398         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
8399         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
8400         (TARGET_RWRELOC): Remove.
8401         (ia64_section_type_flags): Adjust call to default_section_type_flags.
8402         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
8403         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
8404         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
8405         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
8406         (rs6000_xcoff_select_section): Use decl_readonly_section.
8407         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
8408         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
8409         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
8410         (TARGET_SECTION_TYPE_FLAGS): Remove.
8411         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
8412
8413 2007-03-09  Roger Sayle  <roger@eyesopen.com>
8414
8415         * fold-const.c (fold_comparison): Remove compile-time evaluation of
8416         complex constant equality/inequality comparisons for here.
8417         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
8418         known at compile-time or can be simplified to a scalar comparison.
8419         (fold_relational_const): Move compile-time evaluation of complex
8420         constant equality/inequality comparisons to here.
8421
8422 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
8423
8424         PR rtl-optimization/30643
8425         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
8426         dest_addr_elt.
8427         (fold_rtx): Recurse, like before 2006-11-03.
8428
8429 2007-03-09  DJ Delorie  <dj@redhat.com>
8430
8431         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
8432         m32c-pragma.o.
8433
8434 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
8435
8436         PR tree-optimization/30375
8437         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
8438         LHS of statements is not the same.
8439         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
8440
8441 2007-03-09  Chao-ying Fu  <fu@mips.com>
8442
8443         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
8444         REV 2.
8445         * doc/invoke.texi (-mdspr2): Document new option.
8446         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
8447         New unspec for DSP REV 2.
8448         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
8449         these instructions are extended in DSP REV 2.
8450         (mips-dspr2.md): Include.
8451         * config/mips/mips.opt (mdspr2): New option.
8452         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
8453         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
8454         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
8455         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
8456         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
8457         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
8458         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
8459         and 2 builtins.
8460         (bdesc_map): Add one field of unsupported_target_flags.
8461         (bdesc_arrays):  Update entries to have extra fields.  Add
8462         dsp_32only_bdesc.
8463         (mips_init_builtins): Initialize new function types.
8464         Check unsupported_target_fileds to filter out builtins.
8465         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
8466         TARGET_DSPR2.
8467         (ASM_SPEC): Pass mdspr2 to the assembler.
8468         * config/mips/mips-dspr2.md: New file.
8469
8470 2007-03-09  Sa Liu  <saliu@de.ibm.com>
8471
8472         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
8473
8474 2007-03-09  Ian Lance Taylor  <iant@google.com>
8475
8476         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
8477         argument) like -Wstrict-overflow=2.
8478         * doc/invoke.texi (Warning Options): Update documentation.
8479
8480 2007-03-09  Dirk Mueller  <dmueller@suse.de>
8481
8482         PR c++/17946
8483         * doc/invoke.texi (-Wlogical-op): Document.
8484         * common.opt (-Wlogical-op): New.
8485         * c-common.h (warn_logical_operator): Declare.
8486         * c-common.c (warn_logical_operator): Define.
8487         * c-typeck.c (parser_build_binary_op): Call
8488         warn_logical_operator.
8489
8490 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
8491
8492         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
8493         * final.c (final_scan_insn): Test for non-"" file name.
8494
8495 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
8496
8497         * doc/loop.texi: Document the Omega linear constraints solver.
8498         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
8499         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
8500         omega-hash-table-size, omega-max-keys, and
8501         omega-eliminate-redundant-constraints.
8502         * tree-pass.h (pass_check_data_deps): Declared.
8503         * omega.c: New.
8504         * omega.h: New.
8505         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
8506         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
8507         pass_check_data_deps): New.
8508         * tree-data-ref.c (init_data_ref): Remove declaration.
8509         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
8510         (analyze_array): Renamed init_array_ref, move up initializations.
8511         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
8512         Removed arguments that are set to NULL.
8513         (analyze_indirect_ref): Correct indentation, correct call to
8514         init_pointer_ref.
8515         (object_analysis): Call init_array_ref instead of analyze_array.
8516         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
8517         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
8518         of DR_ACCESS_FNS_ADDR.
8519         (init_omega_eq_with_af, omega_extract_distance_vectors,
8520         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
8521         ddr_consistent_p): New.
8522         (compute_affine_dependence): Check consistency of ddrs when
8523         flag_check_data_deps is passed.
8524         (analyze_all_data_dependences): Uncomment.
8525         (tree_check_data_deps): New.
8526         * tree-data-ref.h: Include omega.h.
8527         (DR_ACCESS_FNS_ADDR): Removed.
8528         (data_dependence_relation): Add inner_loop.
8529         (DDR_INNER_LOOP): New.
8530         * common.opt (fcheck-data-deps): New.
8531         * tree-flow.h (tree_check_data_deps): Declare.
8532         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
8533         (OBJS-common): Depend on omega.o.
8534         (omega.o): Define.
8535         * passes.c (pass_check_data_deps): Scheduled.
8536         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
8537         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
8538         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
8539         PARAM_VECT_MAX_VERSION_CHECKS,
8540         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
8541
8542 2007-03-09  Richard Guenther  <rguenther@suse.de>
8543
8544         PR tree-optimization/30904
8545         PR middle-end/31058
8546         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
8547         the same way as *_DIV_EXPR.
8548
8549 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
8550
8551         * recog.c (decode_asm_operands): No mixed declarations and code.
8552
8553 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
8554
8555         * rtl.def (ASM_INPUT): Add location.
8556         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
8557         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
8558         (decode_asm_operands): Add loc operand.
8559         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
8560         * stmt.c (expand_asm): Rename to...
8561         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
8562         gen_rtx_ASM_INPUT_loc.
8563         (expand_asm_expr): Adjust.
8564         * recog.c (decode_asm_operands): Add loc operand.
8565         (check_asm_operands, extract_insn): Adjust.
8566         * reload1.c (maybe_fix_stack_asms): Likewise.
8567         * final.c (asm_insn_count): Likewise.
8568         (final_scan_insn): Output # line before and after asm.
8569
8570 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
8571
8572         * tree-ssa-structalias.c (variable_info): Remove
8573         finished_solution.
8574         (new_var_info): Ditto.
8575         (shared_bitmap_info_t): New structure.
8576         (shared_bitmap_table): New variable.
8577         (shared_bitmap_hash): New function.
8578         (shared_bitmap_eq): Ditto
8579         (shared_bitmap_lookup): Ditto.
8580         (shared_bitmap_add): Ditto.
8581         (merge_smts_into): Change to take bitmap directly.
8582         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
8583         (init_alias_vars): Init shared bitmap hashtable.
8584         (delete_points_to_sets): Delete shared bitmap hashtable.
8585         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
8586         is_aliased removal as a change that was still necessary was
8587         deleted.
8588
8589 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
8590
8591         * config/i386/i386.h (override_options): Conditionally disable
8592         x86_sahf for 64bit targets only.
8593
8594 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8595
8596         PR C/31072
8597         * c-decl.c (merge_decls): Don't call make_var_volatile.
8598         * varasm.c (make_var_volatile): Remove.
8599         * output.h (make_var_volatile): Remove.
8600
8601 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
8602
8603         PR tree-optimization/31085
8604         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
8605
8606 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8607
8608         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
8609         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
8610         ATTR_CONST_NOTHROW_LIST.
8611
8612         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
8613         FIX_TRUNC_EXPR.
8614
8615 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
8616
8617         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
8618
8619 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
8620
8621         PR 31013
8622         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
8623         is declared.
8624         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
8625         passed, use shared libgcc.
8626
8627 2007-03-08  Roger Sayle  <roger@eyesopen.com>
8628
8629         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
8630         instead of calling build2 with a GIMPLE_MODIFY_STMT.
8631         (honor_protect_cleanup_actions, lower_try_finally_switch):
8632         Likewise.
8633         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
8634         ifc_temp_var): Likewise.
8635         * tree-inline.c (setup_one_parameter): Likewise.
8636         * tree-mudflap.c (mf_decl_cache_locals,
8637         mf_build_check_statement_for): Likewise.
8638         * tree-nested.c (init_tmp_var, save_tmp_var,
8639         finalize_nesting_tree_1): Likewise.
8640         * tree-outof-ssa.c (insert_copy_on_edge,
8641         insert_backedge_copies): Likewise.
8642         * tree-profile.c (tree_gen_edge_profiler,
8643         tree_gen_ic_profiler): Likewise.
8644         * tree-scalar-evolution.c (scev_const_prop): Likewise.
8645         * tree-sra.c (sra_build_assignment): Likewise.
8646         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
8647         * tree-ssa-math-opts.c (insert_reciprocals,
8648         execute_cse_sincos_1): Likewise.
8649         * tree-tailcall.c (adjust_accumulator_values,
8650         adjust_return_value): Likewise.
8651         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
8652         * tree-vect-transform.c (vect_create_data_ref_ptr,
8653         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
8654         vect_create_epilog_for_reduction, vectorizable_reduction,
8655         vectorizable_call, vectorizable_conversion,
8656         vectorizable_assignment, vectorizable_operation,
8657         vectorizable_type_demotion, vect_gen_widened_results_half,
8658         vect_permute_store_chain, vectorizable_store,
8659         vect_setup_realignment, vect_permute_load_chain,
8660         vectorizable_load, vectorizable_condition,
8661         vect_create_cond_for_align_checks): Likewise.
8662         * tree-vrp.c (build_assert_expr_for): Likewise.
8663
8664 2007-03-08  Ian Lance Taylor  <iant@google.com>
8665
8666         * tree-vrp.c: Include "intl.h".
8667         (usable_range_p): New static function.
8668         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
8669         overflowed values, juts set *strict_overflow_p.
8670         (compare_values): Only return -2 if one of the operands is not a
8671         constant.
8672         (compare_ranges): Call usable_range_p.
8673         (compare_range_with_value): Likewise.
8674         (vrp_evaluate_conditional_warnv): Rename from
8675         vrp_evaluate_conditional.  Make static.  Change all callers.
8676         (vrp_evaluate_conditional): New function.
8677         (simplify_div_or_mod_using_ranges): Issue warning about reliance
8678         on signed overflow.
8679         (simplify_abs_using_ranges): Likewise.
8680         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
8681         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
8682         within_stmt parameter.
8683         * tree-ssa-propagate.c (fold_predicate_in): Update call to
8684         vrp_evaluate_conditional.
8685         * tree-ssa-threadedge.c
8686         (record_temporary_equivalences_from_stmts_at_dest): Change
8687         simplify parameter to take a second tree parameter.
8688         (simplify_control_stmt_condition): Likewise.
8689         (thread_across_edge): Likewise.
8690         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
8691         (thread_across_edge): Likewise.
8692         * Makefile.in (tree-vrp.o): Depend upon intl.h.
8693
8694 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
8695
8696         * config/i386/i386.h (TARGET_SAHF): New define.
8697         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
8698         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
8699         (x86_sahf): New global variable.
8700         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
8701         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
8702         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
8703         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
8704         for 64-bit.
8705         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
8706         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
8707         when expanding fcomi/sahf based tests.
8708         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
8709         expanding sahf based alternative. Emit sahf based sequence when
8710         optimizing for code size.
8711         * config/i386/i386.md (x86_sahf_1): Do not disable for
8712         TARGET_64BIT, enable for TARGET_SAHF.
8713
8714 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
8715
8716         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
8717         spurious whitespace from error message.
8718
8719 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
8720
8721         PR c++/30852
8722         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
8723
8724 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
8725
8726         * c-decl.c (grokdeclarator): Disable warnings for anonymous
8727         bitfields.
8728         * tree-sra.c (instantiate_element): Propagate disabled warnings
8729         from the element itself to the created variable.
8730
8731 2007-03-07  Richard Henderson  <rth@redhat.com>
8732
8733         PR target/30848
8734         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
8735         silently fix up the stack in the case of a missing register.
8736
8737 2007-03-07  Paul Brook  <paul@codesourcery.com>
8738
8739         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
8740
8741 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
8742
8743         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
8744         New.
8745         (phase1_vrs): Use them.
8746         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
8747         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
8748         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
8749         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
8750         __gnu_Unwind_Restore_WMMXC if required.
8751         (_Unwind_VRS_Pop): Implement iWMMXt support.
8752         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
8753         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
8754         gnu_Unwind_Save_WMMXC): Define.
8755
8756 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
8757
8758         * config/vxworks.h (vxworks_override_options): Declare.
8759         (VXWORKS_OVERRIDE_OPTIONS): Use it.
8760         * config/vxworks.c: Include target.h and toplev.h.
8761         (vxworks_override_options): New function.
8762         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
8763
8764 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
8765
8766         * config/s390/s390.c (override_options): Don't emit an error when
8767         -mstack-size is used without providing -mstack-guard.
8768         (s390_emit_prologue): Choose stack_guard value automatically if not
8769         provided via command line.
8770         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
8771
8772 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
8773
8774         * config/i386/i386.c (output_set_got): Add a GOT initialization
8775         sequence for VxWorks PIC.
8776         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
8777         around labels as well as symbols.  Use gotoff_operand instead
8778         of local_symbolic_operand.
8779         (legitimize_pic_address): Use gotoff_operand instead of
8780         local_symbolic_operand.  Use @GOT accesses for labels as
8781         well as symbols.
8782         (ix86_output_addr_diff_elt): Use PC-relative rather than
8783         GP-relative offsets for VxWorks PIC.
8784         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
8785         no_new_pseudos.  Check whether the returned register is op0.
8786         * config/i386/i386.md (tablejump): Use PC-relative rather than
8787         GP-relative offsets for VxWorks PIC.
8788         * config/i386/predicates.md (gotoff_operand): New predicate.
8789
8790 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8791
8792         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
8793         before defining.
8794         * config/vxworks-dummy.h: New file.
8795         * config/i386/i386.h: Include it.
8796
8797 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
8798
8799         * dwarf2out.c (is_inlined_entry_point): New
8800         (add_high_low_attributes): Emit DW_AT_entry_pc along with
8801         DW_AT_ranges if the first subblock is the entry point.
8802
8803 2007-03-06  David Daney  <ddaney@avtrex.com>
8804
8805         * doc/install.texi (mips-*-*): Change recommended binutils
8806         version.
8807
8808 2007-03-06  Anatoly Sokolov <aesok@post.ru>
8809
8810         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
8811         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
8812         devices.
8813         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
8814         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
8815
8816 2007-03-06  Jan Hubicka  <jh@suse.cz>
8817
8818         * errors.h (warning, error, fatal, internal_error): Mark as cold.
8819         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
8820         are hot.
8821         (probably_cold_bb_p): Cold functions are cold.
8822         (probably_never_executed_bb_p): Cold functions are cold.
8823         (tree_bb_level_predictions): Predict calls to cold functions as not
8824         taken.
8825         (compute_function_frequency): Check hot/cold attributes.
8826         * function.h (function_frequency): Update comments.
8827         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
8828         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
8829         (c_common_att): Add cold and hot.
8830
8831         * doc/extend.texi (hot,cold attributes): Document.
8832
8833 2007-03-06  Andrew Haley  <aph@redhat.com>
8834
8835         * function.c (expand_function_end): Move blockage to just after we
8836         emit the label for the naked return from the function.
8837
8838 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8839
8840         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
8841         before redefining.
8842
8843 2007-03-06  Jan Hubicka  <jh@suse.cz>
8844
8845         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
8846         loaded for constant large models.  Non-large 64bit PIC can do.
8847         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
8848         * cmodel.h: Add LARGE PIC.
8849         * i386.md (UNSPEC_PLTOFF): New.
8850         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
8851         needed.
8852         (*call_1_rex64): Disable for large models.
8853         (*call_1_rex64_large): New.
8854         (*call_value_1_rex64): Disable for large models.
8855         (*call_value_1_rex64_large): New.
8856         (set_rip_rex4): New.
8857         (set_got_offset_rex64): New.
8858         * predicates.md (constant_call_address_operand): For large model
8859         constant calls are not possible.
8860         * i386-protos.h (construct_plt_address): Declare.
8861         * i386.c (override_options): Accept large models.
8862         (ix86_expand_prologue): Expand large PIC GOT pointer load.
8863         (legitimate_constant_p): Add new UNSPECs.
8864         (legitimate_pic_operand_p): Likewise.
8865         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
8866         (legitimize_pic_address): Do easy RIP relative way for TLS only for
8867         non-large model.
8868         (output_pic_addr_const): Add PLTOFF.
8869         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
8870         (ix86_expand_move): Legitimize pic address when in PIC mode.
8871         (construct_plt_address): New function.
8872         (ix86_expand_call): Offload the address to register and use GOT pointer
8873         for large model.
8874         * invoke.texi (mcmodel=large): Update documentation.
8875
8876 2007-03-06  Richard Henderson  <rth@redhat.com>
8877
8878         * config/i386/i386.c (x86_use_leave, x86_push_memory,
8879         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
8880         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
8881         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
8882         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
8883         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
8884         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
8885         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
8886         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
8887         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
8888         x86_partial_reg_dependency, x86_memory_mismatch_stall,
8889         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
8890         x86_sse_partial_reg_dependency, x86_sse_split_regs,
8891         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
8892         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
8893         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
8894         x86_schedule, x86_use_bt, x86_pad_returns,
8895         x86_use_xchgb): Merge into ...
8896         (ix86_tune_features): ... here.  New array.
8897         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
8898         x86_bswap): Merge into ...
8899         (ix86_arch_features): ... here.  New array.
8900         (x86_3dnow_a): Remove.
8901         (x86_accumulate_outgoing_args): Make static.
8902         (x86_arch_always_fancy_math_387): Make static.
8903         (ix86_tune_mask, ix86_arch_mask): Move ...
8904         (override_options): ... to local variables here.  Apply the
8905         appropriate mask to each element of ix86_arch_features and
8906         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
8907         as were done in the old macros.
8908         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
8909         * config/i386/i386.h (x86_use_leave, x86_push_memory,
8910         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
8911         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
8912         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
8913         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
8914         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
8915         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
8916         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
8917         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
8918         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
8919         x86_partial_reg_dependency, x86_memory_mismatch_stall,
8920         x86_accumulate_outgoing_args, x86_prologue_using_move,
8921         x86_epilogue_using_move, x86_decompose_lea,
8922         x86_arch_always_fancy_math_387, x86_shift1,
8923         x86_sse_partial_reg_dependency, x86_sse_split_regs,
8924         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
8925         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
8926         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
8927         x86_use_incdec, x86_pad_returns, x86_bswap,
8928         x86_partial_flag_reg_stall): Remove.
8929         (enum ix86_tune_indices): New.
8930         (ix86_tune_features): New.
8931         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
8932         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
8933         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
8934         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
8935         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
8936         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
8937         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
8938         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
8939         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
8940         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
8941         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
8942         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
8943         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
8944         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
8945         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
8946         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
8947         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
8948         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
8949         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
8950         TARGET_EXT_80387_CONSTANTS): Use it.
8951         (enum ix86_arch_indices): New.
8952         (ix86_arch_features): New.
8953         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
8954         TARGET_BSWAP): Use it.
8955         (ix86_tune_mask, ix86_arch_mask): Remove.
8956
8957 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
8958
8959         PR bootstrap/31020
8960         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
8961         Define using $${sysroot_headers_suffix}.
8962         * configure: Regenerate.
8963         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
8964         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
8965         defined.
8966         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
8967         * gcc.c (print_sysroot_headers_suffix): New.
8968         (option_map): Include --print-sysroot-headers-suffix.
8969         (display_help): Mention -print-sysroot-headers-suffix.
8970         (process_command): Handle -print-sysroot-headers-suffix.
8971         (do_spec_1): Append multilib directory to include-fixed path if
8972         sysroot suffixes in use.
8973         (main): Handle -print-sysroot-headers-suffix.
8974         * Makefile.in (start.encap): Don't depend on xlimits.h
8975         (xlimits.h): Remove.
8976         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
8977         limits.h for each multilib in fixinc_list.
8978         (fixinc_list, s-fixinc_list): New.
8979         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
8980         generate them for each multilib in fixinc_list.
8981         (stmp-fixproto): Use include-fixed.  Run fixproto for each
8982         multilib in fixinc_list.
8983         (mostlyclean): Don't remove xlimits.h.
8984         (clean): Remove include-fixed.
8985         (real-install-headers-tar, real-install-headers-cpio,
8986         real-install-headers-cp): Don't copy include, only include-fixed.
8987         (install-mkheaders): Depend on fixinc_list.  Don't depend on
8988         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
8989         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
8990         SYSTEM_HEADER_DIR setting in mkheaders.conf.
8991
8992 2007-03-06  Jan Hubicka  <jh@suse.cz>
8993
8994         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
8995         NANs easilly.
8996
8997 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8998
8999         * configure.ac: Allow tm_file to contain build-directory files.
9000         * configure: Regenerate.
9001         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
9002         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
9003         * config/m68k/print-sysroot-suffix.sh: New file.
9004
9005 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9006
9007         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
9008         of pic_offset_table_rtx if reload_completed.
9009         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
9010         PIC_OFFSET_TABLE_REGNUM.
9011         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
9012         return true.
9013         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
9014         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
9015
9016 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9017
9018         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
9019         functions that call eh_return.
9020
9021 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9022
9023         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
9024         functions that need a constant pool.
9025
9026 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9027
9028         PR target/28181
9029         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
9030         (m68k_preferred_reload_class): Likewise.
9031         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
9032         (SECONDARY_RELOAD_CLASS): Define.
9033         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
9034         (LIMIT_RELOAD_CLASS): Delete.
9035         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
9036         registers from storing bytes.
9037         (m68k_secondary_reload_class): New function.
9038         (m68k_preferred_reload_class): Likewise.
9039
9040 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9041
9042         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
9043         leaf functions.
9044         (m68k_expand_prologue): Likewise.
9045
9046 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9047
9048         * config/m68k/m68k-protos.h (output_sibcall): Declare.
9049         (mips_expand_epilogue): Add a bool parameter.
9050         (m68k_legitimize_sibcall_address): Declare.
9051         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
9052         (m68k_expand_epilogue): Add a parameter to select between sibling
9053         and normal epilogues.  Only generate a return for the latter.
9054         (m68k_ok_for_sibcall_p): New function.
9055         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
9056         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
9057         (sibcall_value, *sibcall_value): Likewise.
9058         (*call, *call_value): Require !SIBLING_CALL_P.
9059         (epilogue): Update call to m68k_expand_epilogue.
9060         (sibcall_epilogue): New pattern.
9061         * config/m68k/predicates.md (const_call_operand): Say that this
9062         predicate applies to sibling calls too.
9063         (sibcall_operand): New predicate.
9064
9065 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9066
9067         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
9068         alternatives as movsi_cf.
9069         (movsf_cf_hard): Add commentary.
9070
9071 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
9072             Richard Sandiford  <richard@codesourcery.com>
9073
9074         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
9075         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
9076         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
9077         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
9078         as being live on exit from an interrupt function.
9079         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
9080         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
9081         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
9082         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
9083         (m68k_interrupt_function_p): Globalize.
9084         (m68k_compute_frame_layout): Remove reverse mask code.
9085         (m68k_emit_movem, m68k_set_frame_related): New functions.
9086         (m68k_output_function_prologue): Delete in favor of...
9087         (m68k_expand_prologue): ...this new function.
9088         (m68k_output_function_epilogue): Delete in favor of...
9089         (m68k_expand_epilogue): ...this new function.
9090         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
9091         functions.
9092         (print_operand): Handle %?.
9093         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
9094         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
9095         (prologue, epilogue): New patterns.
9096         (return): Turn into a define_expand.
9097         (*return): New pattern, derived from old "return" pattern.  Use rte
9098         rather than rts for interrupt functions.  Only use rtd if the pop
9099         count is nonzero.
9100         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
9101         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
9102         (link, *link, unlink, *unlink, load_got): Likewise.
9103
9104 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9105
9106         PR target/23482
9107         PR target/17114
9108         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
9109         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
9110         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
9111         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
9112         and m68k_matches_u_p.
9113         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
9114         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
9115         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
9116         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
9117         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
9118         (REG_STRICT_P): New macro.
9119         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
9120         PCREL_GENERAL_OPERAND_OK.
9121         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
9122         m68k_legitimate_base_reg_p.
9123         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
9124         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
9125         (PIC_CASE_VECTOR_ADDRESS): Update comment.
9126         * config/m68k/m68k.c (m68k_address): New structure.
9127         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
9128         (m68k_decompose_index, m68k_legitimate_constant_address_p)
9129         (m68k_jump_table_ref_p, m68k_decompose_address)
9130         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
9131         (m68k_matches_u_p): New functions.
9132         (print_operand_address): Rewrite to use m68k_decompose_index.
9133
9134 2007-03-05  David Taylor  <dtaylor@emc.com>
9135
9136         * gcc.c: Correct copyright date in --version output.
9137
9138 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9139
9140         * pa.md: In unamed move patterns, disparge copies between general
9141         and floating point registers using '?' modifier.  Don't include 'f'
9142         constraint for register preferences in DImode, SImode, HImode and
9143         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
9144         Remove constraints for copies between general and floating registers
9145         in soft-float DFmode pattern.
9146         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
9147         floating register.
9148         (movsf): Likewise.
9149
9150 2007-03-05  Mike Stump  <mrs@apple.com>
9151
9152         * c-common.c (targetcm): Add.
9153         * c-opts.c (c_common_handle_option): Handle language specific
9154         target options.
9155         * opts.c (handle_option): Verify language for target options, if
9156         any are given.
9157         * opth-gen.awk: Add CL_LANG_ALL.
9158         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
9159         (TARGETCM_INITIALIZER): Add.
9160         * target.h (struct gcc_targetcm): Add.
9161         (targetcm): Add.
9162         * targhooks.c (default_handle_c_option): Add.
9163         * targhooks.h (default_handle_c_option): Add.
9164         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
9165
9166         * config/darwin.opt (iframework): Add.
9167         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
9168         * config/darwin-c.c (handle_c_option): Add.
9169         (TARGET_HANDLE_C_OPTION): Add.
9170         (targetcm): Add.
9171         * doc/invoke.texi (Darwin Options): Add -iframework.
9172
9173 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9174
9175         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
9176         conversion.
9177
9178 2007-03-05  Ian Lance Taylor  <iant@google.com>
9179
9180         * c.opt (fgnu89-inline): New option.
9181         * c-opts.c (c_common_post_options): Set default value for
9182         flag_gnu89_inline.
9183         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
9184         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
9185         inline functions.
9186         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
9187         (grokdeclarator, start_function): Likewise.
9188         * c-cppbuiltin.c (c_cpp_builtins): Define either
9189         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
9190         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
9191         (C Dialect Options): Document -fgnu89-inline.
9192         * doc/extend.texi (Function Attributes): Explain what the
9193         gnu_inline attribute does.
9194         * doc/cpp.texi (Common Predefined Macros): Document
9195         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
9196
9197 2007-03-05  Ian Lance Taylor  <iant@google.com>
9198
9199         PR tree-optimization/31034
9200         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
9201         half-range if the other side is an overflow infinity.
9202
9203 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
9204
9205         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
9206         (bfin*-linux-uclibc*): New configuration.
9207         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
9208         defining.
9209         * config/bfin/linux.h: New file.
9210         * config/bfin/libgcc-bfin.ver: New file.
9211         * config/bfin/t-bfin-uclinux: New file.
9212         * config/bfin/t-bfin-linux: New file.
9213         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
9214         (TARGET_OS_CPP_BUILTINS): New macro.
9215
9216 2007-03-05  Richard Guenther  <rguenther@suse.de>
9217
9218         * fold-const.c (fold_binary): Remove duplicate folding
9219         of comparison of non-null ADDR_EXPR against null.
9220
9221 2007-03-05  Richard Guenther  <rguenther@suse.de>
9222             Dorit Nuzman  <dorit@il.ibm.com>
9223
9224         PR tree-optimization/26420
9225         * tree-vectorizer.c (vectorize_loops): Bail out early if there
9226         are no loops in the function.  Only print the number of
9227         vectorized loops if it is greater than zero or we are supposed
9228         to print information about unvectorized loops.
9229
9230 2007-03-05  Revital Eres  <eres@il.ibm.com>
9231
9232         * gcc.dg/var-expand1.c: New test.
9233         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
9234         when an accumulator is expanded.
9235
9236 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9237
9238         PR other/30465
9239         * c-common.c (convert_and_check): Don't give warnings for
9240         conversion if 'expr' already overflowed.
9241
9242 2007-03-04  Roger Sayle  <roger@eyesopen.com>
9243
9244         PR middle-end/30744
9245         * fold-const.c (fold_comparison): Enforce type consistency when
9246         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
9247
9248 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
9249
9250         * tree-ssa-address.c (create_mem_ref): Do not put an expression
9251         containing a cast to the base of TARGET_MEM_REF.
9252
9253 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
9254
9255         * tree.c (tree_contains_struct_check_failed): Remove spurious
9256         whitespace from error message.
9257
9258 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
9259
9260         PR target/30406
9261         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
9262         instead of precision.
9263
9264 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
9265             Nathan Sidwell  <nathan@codesourcery.com>
9266
9267         * emit-rtl.c (find_auto_inc): New.
9268         (try_split): recreate REG_INC notes,
9269         Use regular for loops rather than whiles.
9270
9271 2007-03-03  Andreas Schwab  <schwab@suse.de>
9272
9273         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
9274         * configure: Regenerate.
9275
9276 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9277
9278         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
9279         flag_rounding_math, not flag_unsafe_math_optimizations.
9280
9281         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
9282         fold_build2.
9283         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
9284         alpha_fold_vector_minmax): Likewise.
9285         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
9286         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
9287
9288 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
9289
9290         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
9291         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
9292         if the lhs has side-effects.
9293         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
9294
9295 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
9296
9297         * config/i386/i386.h (TUNEMASK): Remove define.
9298         (ARCHMASK): Remove define.
9299         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
9300          Use ix86_arch_mask variable instead of ARCHMASK.
9301         * config/i386/i386.c (override_options): Ditto.
9302         (standard_80387_constant_p): Ditto.
9303
9304 2007-03-02  Ian Lance Taylor  <iant@google.com>
9305
9306         Used signed infinities in VRP.
9307         * tree-vrp.c (uses_overflow_infinity): New static function.
9308         (supports_overflow_infinity): New static function.
9309         (make_overflow_infinity): New static function.
9310         (negative_overflow_infinity): New static function.
9311         (positive_overflow_infinity): New static function.
9312         (is_negative_overflow_infinity): New static function.
9313         (is_positive_overflow_infinity): New static function.
9314         (is_overflow_infinity): New static function.
9315         (overflow_infinity_range_p): New static function.
9316         (compare_values_warnv): New function split out of compare_values.
9317         (compare_value): Call it.
9318         (set_value_range_to_nonnegative): Add overflow_infinity
9319         parameter.  Change caller.
9320         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
9321         Change callers.
9322         (vrp_expr_computes_nonzero): Likewise.
9323         (compare_ranges, compare_range_with_value): Likewise.
9324         (compare_name_with_value, compare_names): Likewise.
9325         (vrp_evaluate_conditional): Likewise.
9326         (set_value_range): Handle infinity
9327         (vrp_operand_equal_p, operand_less_p): Likewise.
9328         (extract_range_from_assert): Likewise.
9329         (vrp_int_const_binop): Likewise.
9330         (extract_range_from_binary_expr): Likewise.
9331         (extract_range_from_unary_expr): Likewise.
9332         (extract_range_from_comparison): Likewise.
9333         (extract_range_from_expr): Likewise.
9334         (dump_value_range): Likewise.
9335         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
9336         (test_for_singularity): Likewise.
9337         (vrp_int_const_binop): Remove inline qualifier.
9338         (adjust_range_with_scev): Add comment.
9339         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
9340
9341 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
9342
9343         * tree-ssa-structalias.c (could_have_pointers): Tidy.
9344         (get_constraint_for): Likewise.
9345         (do_structure_copy): Likewise.
9346         (find_func_aliases): Fix references to MODIFY_EXPR.
9347         (intra_create_variable_infos): Tidy.
9348         * tree-ssa-operands.c (add_virtual_operand): Add argument
9349         IS_CALL_SITE.
9350         When adding members of alias sets, if IS_CALL_SITE is true and
9351         the symbol is not call-clobbered, skip it.
9352         Adjust all callers.
9353
9354 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
9355
9356         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
9357         entry by means of emit_insn_at_entry.
9358
9359 2007-03-02  Richard Henderson  <rth@redhat.com>
9360
9361         * expr.h (promoted_input_arg): Remove decl.
9362         * function.c (promoted_input_arg): Merge into ...
9363         * combine.c (setup_incoming_promotions): ... only caller.
9364         Rearrange to avoid double loop.
9365
9366 2007-03-02  Ben Elliston  <bje@au.ibm.com>
9367             Peter Bergner  <bergner@vnet.ibm.com>
9368             Janis Johnson  <janis187@us.ibm.com>
9369
9370         * config/rs6000/dfp.md: New file.
9371         * config/rs6000/rs6000.md: Include dfp.md.
9372         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
9373         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
9374         and TDmode decimal float modes in FP registers.
9375         (num_insns_constant): Likewise.
9376         (rs6000_legitimate_offset_address_p): Likewise.
9377         (rs6000_legitimize_address): Likewise.
9378         (rs6000_legitimize_reload_address): Likewise.
9379         (rs6000_legitimate_address): Likewise.
9380         (rs6000_emit_move): Likewise.
9381         (function_arg_boundary): Likewise.
9382         (function_arg_advance): Likewise.
9383         (rs6000_darwin64_record_arg_recurse): Likewise.
9384         (function_arg): Likewise.
9385         (rs6000_gimplify_va_arg): Likewise.
9386         (rs6000_split_multireg_move): Likewise.
9387         (rs6000_output_function_epilogue): Likewise.
9388         (rs6000_output_function_epilogue): Likewise.
9389         (rs6000_register_move_cost): Likewise.
9390         (rs6000_function_value): Likewise.
9391         (rs6000_libcall_value): Likewise.
9392
9393 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
9394
9395         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
9396
9397 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
9398
9399         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
9400         Use $MULTIDIR to choose between the kernel and RTP headers,
9401         and use $WIND_BASE and $WIND_USR to locate them.
9402
9403 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
9404
9405         * config/i386/i386.c (override_options): Put initialization of
9406         ix86_tune_mask and ix86_arch_mask to the correct place.
9407
9408 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
9409             Michael Meissner  <michael.meissner@amd.com>
9410
9411         PR target/31019
9412         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
9413         (ARCHMASK): Define.
9414         (TARGET_CMOVE): Use ARCHMASK.
9415         (TARGET_CMPXCHG): Ditto.
9416         (TARGET_CMPXCHG8B): Ditto.
9417         (TARGET_XADD): Ditto.
9418         (TARGET_BSWAP): Ditto.
9419         * config/i386/i386.c (ix86_tune_mask): New global variable.
9420         (ix86_arch_mask): Ditto.
9421         (override_options): Initialize ix86_tune_mask and
9422         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
9423         target_flags.
9424
9425 2007-03-02  Ben Elliston  <bje@au.ibm.com>
9426
9427         PR 30992
9428         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
9429
9430 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
9431
9432         * target.h (init_dwarf_reg_sizes_extra): New target hook.
9433         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
9434         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
9435         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
9436         hook.
9437         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
9438         rs6000_init_dwarf_reg_sizes_extra): New.
9439         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
9440         SPE register high parts.
9441
9442 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
9443
9444         * Makefile.in: Add install-pdf target as
9445         copied from automake v1.10 rules.
9446         * configure.ac: Add install-pdf to target list.
9447         * configure: Regenerate.
9448
9449 2007-03-01  Paul Brook  <paul@codesourcery.com>
9450
9451         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
9452         modes to LDRD for DImode.
9453         (output_move_double): Fixup out of range ldrd/strd.
9454         (vfp_secondary_reload_class): Rename...
9455         (coproc_secondary_reload_class): ... to this.  Add wb argument.
9456         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
9457         coproc_secondary_reload_class for CLASS_IWMMXT.
9458         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
9459         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
9460
9461 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
9462
9463         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
9464         factor by the estimated number of iterations.
9465         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
9466         prefetch latency.
9467
9468         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
9469         decode_caches_intel, detect_caches_intel): New functions.
9470         (host_detect_local_cpu): Use detect_caches_amd and
9471         detect_caches_intel.
9472
9473 2007-03-01  Richard Henderson  <rth@redhat.com>
9474
9475         * expr.c (emit_move_complex_push): Export.
9476         (emit_move_complex_parts): Split out from ...
9477         (emit_move_complex): ... here.
9478         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
9479         * config/i386/i386.md (movcdi): New.
9480
9481 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
9482
9483         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
9484         size of mode1 to check for tieable modes in MMX case.
9485
9486 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
9487
9488         * Makefile.in (rtlanal.o): Depend on tree.h.
9489         * rtl.h (offset_within_section_p, split_const): Declare.
9490         * rtlanal.c: Include tree.h.
9491         (offset_within_block_p): New function, taken from
9492         mips_offset_within_object_p.
9493         (split_const): New function, taken from mips_split_const.
9494         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
9495         Declare.
9496         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
9497         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
9498         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
9499         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
9500         (m68k_illegitimate_symbolic_constant_p): New function.
9501         * config/m68k/m68k.md (movsi): Remove misleading predicates.
9502         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
9503         symbolic constant that might be outside the symbol's section,
9504         move the symbol first and then add the offset.
9505         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
9506         Override.
9507         * config/mips/mips.c (mips_split_const): Delete.
9508         (mips_offset_within_object_p): Delete.
9509         (mips_symbolic_constant_p): Use offset_within_section_p and
9510         split_const instead of mips_offset_within_object_p and
9511         mips_split_const.
9512         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
9513         (mips_legitimize_const_move, print_operand_reloc)
9514         (mips_dangerous_for_la25_p): Use split_const instead of
9515         mips_split_const.
9516
9517 2007-02-28  Eric Christopher  <echristo@apple.com>
9518
9519         * Makefile.in (install-include-dir): Don't rm -rf include.
9520
9521 2007-02-28  Richard Guenther  <rguenther@suse.de>
9522
9523         PR middle-end/30364
9524         * fold-const.c (fold_binary): Do not associate expressions
9525         with more than one variable for integer types that do not wrap.
9526
9527 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
9528
9529         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
9530         Delete, and replace with...
9531         (fold_builtin_call_array): This.  Update callers to use it.
9532         * fold-const.c (fold_build_call_list): Delete, and replace with...
9533         (fold_build_call_array): This.
9534         (fold_build_call_list_initializer): Delete, and replace with...
9535         (fold_build_call_array_initializer): This.
9536         * tree.h: Update declarations to reflect above changes.
9537
9538         * c-typeck.c (build_function_call): Store converted arguments
9539         in a stack-allocated array instead of building a list.
9540         (convert_arguments): Store arguments in the array passed in as an
9541         argument, and return the actual number of arguments.
9542         * c-format.c: (check_function_format): Pass arguments in an
9543         array instead of a list.
9544         * c-common.c (check_function_nonnull): Likewise.
9545         (check_function_sentinel): Likewise.
9546         (check_function_arguments): Likewise.
9547         * c-common.h: Update declarations to reflect above changes.
9548
9549 2007-02-28  Jan Hubicka  <jh@suse.cz>
9550
9551         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
9552         PRED_NEGATIVE_RETURN): Update outcomes.
9553
9554 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
9555
9556         * calls.c (emit_library_call_value_1): Handle partial registers
9557         correctly when building up CALL_INSN_FUNCTION_USAGE.
9558
9559 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9560
9561         * pa/predicates.md (move_src_operand): Allow zero for mode.
9562         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
9563         move pattern.
9564
9565 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
9566
9567         PR target/30970
9568         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
9569         *movv2df_internal): Enable pattern only for valid operand
9570         combinations.
9571         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
9572         tie only 128bit modes. For MMX registers, tie only 64bit modes.
9573
9574 2007-02-27  Mike Stump  <mrs@apple.com>
9575
9576         * config/darwin-crt3.c: Avoid compilation when compiling for a
9577         kext multilib.
9578
9579 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
9580
9581         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
9582         FIXED_INCLUDE_DIR.
9583         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
9584         for fixed headers and limits.h.
9585         (install-include-dir, install-headers-tar, install-headers-cpio,
9586         install-headers-cp, real-install-headers-tar,
9587         real-install-headers-cpio, real-install-headers-cp): Handle
9588         include-fixed as well as include.
9589         (install-mkheaders): Don't install files that go only in include
9590         not include-fixed.
9591         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
9592         from GCC_INCLUDE_DIR.
9593         * gcc.c (process_command): Remove special -BstageN/ handling.
9594         (do_spec_1): Add include-fixed directories.
9595
9596 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
9597
9598         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
9599         _smulsi3_highpart.
9600         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
9601         New functions.
9602         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
9603         patterns.
9604
9605 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
9606
9607         * c-common.c (get_priority): Add check for
9608         SUPPORTS_INIT_PRIORITY.
9609
9610 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
9611
9612         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
9613
9614         * config/bfin/bfin.c: Include "cfglayout.h".
9615         (MAX_LSETUP_DISTANCE): New macro.
9616         (struct loop_info): New members incoming, incoming_src and
9617         incoming_dest.  Delete member predecessor.
9618         (length_for_loop): New function.
9619         (bfin_optimize_loop): Handle more different loop structures.
9620         (bfin_discover_loop): Rework detection of predecessor blocks by
9621         examining incoming edges.
9622         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
9623         bfin_reorg_loops.
9624         (bfin_reorder_loops): New function.
9625         (bfin_reorg_loops): Use these three new functions.
9626
9627         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
9628         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
9629         (CONSTRAINT_LEN): Add entry for 'q'.
9630         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
9631         Add 'q' constraints.
9632         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
9633         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
9634
9635         * config/bfin/bfin.md (add_with_carry): New pattern.
9636         (s_or_u, su_optab, su_modifier): New code macros/attrs.
9637         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
9638         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
9639         support unsigned multiplies too.  Removed incorrect commutativity from
9640         operand 1 constraint where appropriate.
9641         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
9642         patterns.
9643         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
9644         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
9645         New patterns.
9646         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
9647         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
9648         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
9649         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
9650         usmulhisi_hh_huh): New patterns.
9651
9652         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
9653         lshifthi3): Fix output template to use half reg for operand 2.
9654
9655         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
9656         instead of R2.
9657
9658         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
9659
9660 2007-02-27  Andreas Schwab  <schwab@suse.de>
9661
9662         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
9663
9664 2007-02-27  Jan Hubicka  <jh@suse.cz>
9665
9666         * predict.c (last_basic_block_p): Remove.
9667         (tree_estimate_probability): Update return heuristic for commonized
9668         return blocks.
9669
9670 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
9671
9672         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
9673
9674 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
9675
9676         * doc/include/gcc-common.texi (versionsubtitle): New macro.
9677         * doc/cpp.texi: Standardize title page.
9678         * doc/cppinternals.texi: Likewise.
9679         * doc/gcc.texi: Standardize title page, remove version number
9680         from copyright page.
9681         * doc/gccint.texi: Likewise.
9682         * doc/install.texi: Standardize title page, add table of
9683         contents.
9684
9685 2007-02-26  Jan Hubicka  <jh@suse.cz>
9686
9687         * predict.def: Set outcomes according to more recent results.
9688         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
9689         Remove dead predictors.
9690         * predict.c (return_prediction): Fix pasto.
9691
9692 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
9693
9694         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
9695         change; avoid a memory leak when returning early.
9696
9697 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
9698
9699         * c-decl.c (static_ctors): Move to c-common.c.
9700         (static_dtors): Likewise.
9701         (finish_function): Use c_record_cdtor_fn.
9702         (build_cdtor): Move to c-common.c.
9703         (c_write_global_declarations): Use c_build_cdtor_fns.
9704         * c-common.h (static_ctors): Declare.
9705         (static_dtors): Likewise.
9706         (c_record_cdtor_fn): Likewise.
9707         (c_build_cdtor_fns): Likewise.
9708         * c-common.c (static_ctors): New variable.
9709         (static_dtors): Likewise.
9710         (c_record_cdtor_fn): New function.
9711         (build_cdtor): Move from c-decl.c
9712         (c_build_cdtor_fns): New function.
9713
9714         * output.h (assemble_addr_to_section): Declare.
9715         (get_cdtor_priority_section): Likewise.
9716         * varasm.c (assemble_addr_to_section): New function.
9717         (get_cdtor_priority_section): Likewise.
9718         (default_named_section_asm_out_destructor): Use them.
9719         (destor_dtor_section_asm_out_destructor): Likewise.
9720         (default_named_section_asm_out_constructor): Likewise.
9721         (default_ctor_section_asm_out_constructor): Likewise.
9722         * config.gcc (*-*-vxworks*): Include vxworks.o.
9723         * config/t-vxworks (vxworks.o): New target.
9724         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
9725         (TARGET_ASM_CONSTRUCTOR): Define.
9726         (TARGET_ASM_DESTRUCTOR): Likewise.
9727         (vxworks_asm_out_constructor): Declare.
9728         (vxworks_asm_out_destructor): Likewise.
9729
9730         * c-common.c (get_priority): Check that we have not just an
9731         INTEGER_CST, but an integer constant with integeral type.
9732
9733 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
9734
9735         PR tree-optimization/30938
9736         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
9737         use &dt[nargs-1] instead of &dt[nargs] in the call to
9738         vect_is_simple_use().
9739
9740 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
9741
9742         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
9743         from register elimination as PRE_MODIFY / POST_MODIFY increments.
9744         Do not attempt to handle MEM inside auto-inc expressions.
9745         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
9746         of a register modified by an auto-inc expression.  However, do handle
9747         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
9748         (elimination_effects): Prohibit elimination of a register modified
9749         by an auto-inc expression.  Disable register elimination rules whose
9750         target register is modified by an auto-inc expression with variable
9751         increment.
9752
9753 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
9754
9755         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
9756         off-by-one error.
9757         (array_at_struct_end_p): New function.
9758         (idx_infer_loop_bounds): Use it.
9759         (estimate_numbers_of_iterations_loop): Export.
9760         * predict.c (predict_loops): Use estimated_loop_iterations_int.
9761         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
9762         (tree_estimate_probability): Call record_loop_exits.
9763         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
9764         (estimated_loop_iterations, estimated_loop_iterations_int,
9765         estimated_loop_iterations_tree): New functions.
9766         (analyze_siv_subscript_cst_affine,
9767         compute_overlap_steps_for_affine_1_2,
9768         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
9769         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
9770         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
9771         (PRED_LOOP_ITERATIONS_GUESSED): New.
9772         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
9773         * cfgloop.h (estimate_numbers_of_iterations_loop,
9774         estimated_loop_iterations_int): Declare.
9775
9776 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
9777
9778         * doc/extend.texi: Document optional priority argument to
9779         constructors and destructors.
9780         * tree.c (init_priority_for_decl): Adjust GTY markers.
9781         (init_ttree): Use priority-info hash functions for
9782         init_priority_for_decl.
9783         (tree_map_eq): Rename to ...
9784         (tree_map_base_eq): ... this.
9785         (tree_map_marked_p): Rename to ...
9786         (tree_map_base_marked_p): ... this.
9787         (tree_map_base_hash): New function.
9788         (decl_init_priority_lookup): Rework.
9789         (decl_fini_priority_lookup): New function.
9790         (decl_priority_info): New function.
9791         (decl_init_priority_insert): Use it.
9792         (decl_fini_priority_insert): Likewise.
9793         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
9794         hierarchy.
9795         (decl_restrict_base_insert): Likewise.
9796         (decl_debug_expr_insert): Likewise.
9797         (decl_value_expr_lookup): Likewise.
9798         (decl_value_expr_insert): Likewise.
9799         * tree.h (priority_type): New type.
9800         (decl_init_priority_lookup): Use priority_type.
9801         (decl_fini_priority_lookup): New function.
9802         (decl_init_priority_insert): Use priority_type.
9803         (decl_fini_priority_insert): New function.
9804         (DECL_HAS_INIT_PRIORITY): Tweak comments.
9805         (DECL_INIT_PRIORITY): Likewise.
9806         (SET_DECL_INIT_PRIORITY): Add comment.
9807         (DECL_FINI_PRIORITY): New macro.
9808         (SET_DECL_FINI_PRIORITY): Likewise.
9809         (DEFAULT_INIT_PRIORITY): Document.
9810         (MAX_INIT_PRIORITY): Likewise.
9811         (MAX_RESERVED_INIT_PRIORITY): Likewise.
9812         (tree_map_base): New type.
9813         (tree_map_base_eq): New function.
9814         (tree_map_base_hash): Likewise.
9815         (tree_map_base_marked_p): Likewise.
9816         (tree_map): Inherit from tree_map_base.
9817         (tree_map_eq): Make it a macro.
9818         (tree_map_marked_p): Likewise.
9819         (tree_int_map): Inherit from tree_map_base.
9820         (tree_int_map_eq): Make it a macro.
9821         (tree_int_map_hash): Likewise.
9822         (tree_int_map_marked_p): Likewise.
9823         (tree_priority_map): New type.
9824         (tree_priority_map_eq): New macro.
9825         (tree_priority_map_hash): Likewise.
9826         (tree_priority_map_marked_p): Likewise.
9827         * varasm.c (emults_decl): Adjust for refactoring of tree_map
9828         hierarchy.
9829         (emutls_common_1): Likewise.
9830         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
9831         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
9832         of tree_map hierarchy.
9833         * tree-cfg.c (move_stmt_r): Likewise.
9834         (new_label_mapper): Likewise.
9835         * c-tree.h (c_expand_body): Move to ...
9836         * c-common.h (c_expand_body): ... here.
9837         * c-decl.c (c_expand_body): Move to ...
9838         * c-common.c (c_expand_body): ... here.
9839         (c_common_attribute_table): Allow 1 argument for the constructor
9840         and destructor attributes.
9841         (get_priority): New function.
9842         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
9843         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
9844
9845 2007-02-24  Jan Hubicka  <jh@suse.cz>
9846
9847         PR middle-end/30509
9848         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
9849
9850 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
9851             Jan Hubicka  <jh@suse.cz>
9852
9853         PR target/30778
9854         * i386.c (counter_mode): New function.
9855         (expand_set_or_movmem_via_loop): Use it.
9856         (expand_movmem_epilogue): Likewise; fix pasto.
9857         (ix86_expand_movmem): Do emit guard even for constant counts.
9858         (ix86_expand_setmem): Likewise.
9859
9860 2007-02-25  Nick Clifton  <nickc@redhat.com>
9861
9862         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
9863         (JUMP_TABLES_IN_TEXT_SECTION): Define.
9864
9865 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
9866
9867         PR target/30770
9868         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
9869         count argument with 0x10, not with 0x16.
9870         (expand_setmem_epilogue): Ditto.
9871
9872 2007-02-24  Mike Stump  <mrs@apple.com>
9873
9874         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
9875         symbols.
9876
9877 2007-02-24  Richard Guenther  <rguenther@suse.de>
9878
9879         PR middle-end/30951
9880         * fold-const.c (fold_binary): Fold x +- CST op x for
9881         EQ_EXPR and NE_EXPR.
9882
9883 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9884
9885         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
9886
9887 2007-02-24  Jan Hubicka  <jh@suse.cz>
9888
9889         * cgraphunit.c (decide_is_function_needed): Honor
9890         -fkeep-inline-functions.
9891
9892 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9893
9894         * builtins.c (fold_builtin_modf): New.
9895         (fold_builtin_2): Use it.
9896
9897 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
9898
9899         * loop-iv.c (implies_p): Detect additional cases where A implies B.
9900         (determine_max_iter): Take additional LOOP arg; all callers changed.
9901         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
9902         one using simplifications.
9903         (simplify_using_initial_values): Return if the expression becomes
9904         invalid due to altered regs.
9905
9906 2007-02-23  DJ Delorie  <dj@redhat.com>
9907
9908         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
9909
9910 2007-02-23  Mike Stump  <mrs@apple.com>
9911
9912         * tlink.c (scan_linker_output): Parse linker messages from
9913         darwin9's linker better.
9914
9915 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
9916
9917         PR debug/29614
9918         * varpool.c (varpool_assemble_pending_decls):  Set
9919         varpool_last_needed_node to null.
9920
9921 2007-02-23  DJ Delorie  <dj@redhat.com>
9922
9923         * config/i386/i386.c (ix86_data_alignment): Don't specify an
9924         alignment bigger than the object file can handle.
9925
9926 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
9927
9928         PR target/30825
9929         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
9930         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
9931         (*movsf_1): Penalize MMX moves.
9932
9933 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
9934
9935         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
9936         2^32-1 or more times unless flag_unsafe_loop_optimizations.
9937
9938         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
9939
9940 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9941
9942         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
9943         (fold_builtin_1): Use them.
9944         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
9945         BUILT_IN_SIGNIFICAND.
9946
9947 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
9948
9949         * config/i386/i386.c (bdesc_1arg): Initialize
9950         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
9951         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
9952         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
9953         and IX86_BUILTIN_MOVSLDUP.
9954
9955 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
9956
9957         PR rtl-optimization/30841
9958         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
9959
9960 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9961
9962         * builtins.c (fold_builtin_frexp): New.
9963         (fold_builtin_2): Use it.
9964
9965 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
9966
9967         * doc/invoke.texi (Spec Files): Document getenv spec function.
9968
9969         * gcc.c (getenv_spec_function): New function.
9970         (static_spec_functions): Add it.
9971         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
9972         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
9973         header files.
9974
9975 2007-02-22  Michael Matz  <matz@suse.de
9976
9977         PR c++/29433
9978         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
9979         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
9980
9981 2007-02-22  Ian Lance Taylor  <iant@google.com>
9982
9983         PR debug/30898
9984         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
9985         (mem_loc_descriptor): Call it.
9986
9987 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
9988             Ira Rosen  <irar@il.ibm.com>
9989
9990         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
9991
9992 2007-02-22  Ira Rosen  <irar@il.ibm.com>
9993
9994         PR tree-optimization/30843
9995         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
9996         stores only after all the group is vectorized.
9997
9998 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
9999
10000         PR tree-optimization/30858
10001         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
10002         in the reduction cycle have a single use in the loop.
10003         * tree-vectorizer.h (relevant): Add documentation.
10004
10005 2007-02-20  Mike Stump  <mrs@apple.com>
10006
10007         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
10008         * configure: Regenerate.
10009
10010 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10011
10012         Change the defaults of some parameters and options.
10013         * config/spu/spu-protos.h (spu_optimization_options): Declare.
10014         * config/spu/spu.c (spu_optimization_options): Add.
10015         (spu_override_options): Change params in spu_optimization_options.
10016         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
10017
10018         Register 127 is only 16 byte aligned when used as a frame pointer.
10019         * config/spu/spu-protos.h (spu_init_expanders): Declare.
10020         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
10021         HARD_FRAME_POINTER_REGNUM.
10022         (spu_legitimate_address):  Use regno_aligned_for_reload.
10023         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
10024         aligned when frame_pointer_needed is true.
10025         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
10026         to 8 bits.
10027         * config/spu/spu.h (INIT_EXPANDERS): Define.
10028
10029         Make sure shift and rotate instructions have valid immediate operands.
10030         * config/spu/predicates.md (spu_shift_operand): Remove.
10031         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
10032         * config/spu/constraints.md (W, O): Extend range.
10033         * config/spu/spu.md (umask, nmask): Define.
10034         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
10035         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
10036         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
10037         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
10038         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
10039         (lshr<mode>3_reg):  Fix rtl description.
10040
10041         Make sure mulhisi immediate operands are valid.
10042         * config/spu/predicates.md (imm_K_operand): Add.
10043         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
10044
10045         Generate constants using fsmbi and andi.
10046         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
10047         (print_operand, spu_split_immediate, classify_immediate,
10048         fsmbi_const_p): Handle IC_FSMBI2.
10049
10050         Correctly handle a CONST_VECTOR containing symbols.
10051         * config/spu/spu.c (print_operand): Handle HIGH correctly.
10052         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
10053         (immediate_load_p): Allow symbols that use 2 instructions to create.
10054         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
10055         with symbols when flag_pic is set.
10056         (const_vector_immediate_p): New.
10057         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
10058         accept a CONST_VECTOR with symbols.
10059         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
10060         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
10061         correctly.
10062         * config/spu/spu.md (high, low): Delete.
10063         (low_<mode>): Define.
10064
10065         Remove INTRmode and INTR_REGNUM, which didn't work.
10066         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
10067         of INTR_REGNUM.
10068         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
10069         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
10070         peephole2 pattern): Don't use INTR or 131.
10071         (movintrcc): Delete.
10072         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
10073         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
10074         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
10075         (UNSPEC_SET_INTR): Add.
10076         * config/spu/spu-modes.def (INTR): Remove.
10077
10078         More accurate warnings about run-time relocations.
10079         * config/spu/spu.c (reloc_diagnostic): Test in_section.
10080
10081         Correctly warn about immediate arguments to specific intrinsics.
10082         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
10083         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
10084         the instruction predicate.
10085
10086         Fix tree check errors with latest update.
10087         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
10088         CALL_EXPR_ARG.
10089         (spu_expand_builtin): Use CALL_EXPR_FN.
10090
10091         Add missing specific intrinsics.
10092         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
10093         si_bislede.
10094         * config/spu/spu_internals.h: Ditto.
10095
10096         Fix incorrect operand modifiers.
10097         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
10098         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
10099
10100         Optimize one case of zero_extend of a vec_select.
10101         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
10102
10103         Accept any immediate for hbr.
10104         * config/spu/spu.md (hbr):  Change s constraints to i.
10105
10106 2007-02-21  Paul Brook  <paul@codesourcery.com>
10107
10108         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
10109         condexec_count when skipping USE and CLOBBER.
10110
10111 2007-02-21  Nick Clifton  <nickc@redhat.com>
10112
10113         * common.opt (Warray-bounds): Add Warning attribute.
10114         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
10115         Likewise.
10116         (fsized-zeroes): Add Optimization attribute.
10117         (fsplit-wide-types, ftree-scev-cprop): Likewise.
10118         * c.opt (Wc++0x-compat): Add Warning attribute.
10119
10120 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
10121
10122         PR middle-end/30761
10123         * reload1.c (eliminate_regs_in_insn): In the single_set special
10124         case, attempt to re-recognize the insn before falling back to
10125         having reload fix it up.
10126
10127 2007-02-20  Eric Christopher  <echristo@gmail.com>
10128
10129         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
10130         Rewrite accordingly.
10131         (frv_read_iacc_argument): Ditto.
10132         (frv_expand_set_builtin): Take a call instead of arglist, update for
10133         above changes.
10134         (frv_expand_unop_builtin): Ditto.
10135         (frv_expand_binop_builtin): Ditto.
10136         (frv_expand_cut_builtin): Ditto.
10137         (frv_expand_binopimm_builtin): Ditto.
10138         (frv_expand_voidbinop_builtin): Ditto.
10139         (frv_expand_int_void2arg): Ditto.
10140         (frv_expand_prefetches): Ditto.
10141         (frv_expand_voidtriop_builtin): Ditto.
10142         (frv_expand_voidaccop_builtin): Ditto.
10143         (frv_expand_load_builtin): Ditto.
10144         (frv_expand_store_builtin): Ditto.
10145         (frv_expand_mdpackh_builtin): Ditto.
10146         (frv_expand_mclracc_builtin): Ditto.
10147         (frv_expand_mrdacc_builtin): Ditto.
10148         (frv_expand_mwtacc_builtin): Ditto.
10149         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
10150         calls for above.
10151
10152 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
10153
10154         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
10155         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
10156         cmpb instruction.
10157         (HAVE_GAS_DFP): Check for assembler support of decimal floating
10158         point instructions.
10159         * configure: Regenerate.
10160         * config.in: Regenerate.
10161         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
10162         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
10163         masks to power6 and power6x and to POWERPC_MASKS.
10164         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
10165         _ARCH_PWR6.
10166         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
10167         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
10168         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
10169         Access PROTOTYPE as variable, not mask.
10170
10171 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
10172
10173         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
10174         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
10175         * combine.c (adjust_for_new_dest): Use it.
10176         * postreload.c (reload_combine): Likewise.
10177
10178 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
10179
10180         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
10181         notes on an insn with multiple sets, even if single_set returns
10182         non-NULL for that insn.
10183
10184 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10185
10186         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
10187         scalbn and scalbln.
10188
10189 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
10190
10191         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
10192         if user didn't pass it.
10193         * config/i386/darwin.h (CC1_SPEC): Likewise.
10194         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
10195         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
10196         -mmacosx-version-min.
10197
10198 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10199             Uros Bizjak  <ubizjak@gmail.com>
10200
10201         * optabs.h (enum optab_index): Add new OTI_scalb.
10202         (scalb_optab): Define corresponding macro.
10203         * optabs.c (init_optabs): Initialize scalb_optab.
10204         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
10205         patterns.
10206         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
10207         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
10208         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
10209         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
10210         flag_unsafe_math_optimizations is set.
10211
10212         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
10213         to implement scalbf, scalb and scalbl built-ins as inline x87
10214         intrinsics.
10215
10216 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10217             DJ Delorie <dj@redhat.com>
10218
10219         PR other/30824
10220         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
10221         (diagnostic_report_diagnostic): ... here, and turn them into real
10222         errors. If warnings are inhibited, no need to do anything.
10223
10224 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
10225
10226         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
10227         better code generation.
10228
10229 2007-02-20  Ben Elliston  <bje@au.ibm.com>
10230
10231         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
10232
10233 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
10234
10235         * config/alpha/alpha.c, config/alpha/alpha.md,
10236         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
10237         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
10238         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
10239         config/arm/lib1funcs.asm: Follow spelling conventions.
10240
10241         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
10242         config/fr30/fr30.md, config/i386/i386.h,
10243         config/iq2000/iq2000.h, config/iq2000/predicates.md,
10244         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
10245         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
10246         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
10247         config/rs6000/altivec.md, config/rs6000/rs6000.c,
10248         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
10249         config/sparc/sparc.c, config/sparc/sparc.h,
10250         config/sparc/sparc.md, config/spu/constraints.md,
10251         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
10252         conventions.
10253
10254 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
10255
10256         PR target/29943
10257         * varasm.c (use_blocks_for_decl_p): Return false for decls with
10258         alias attribute.
10259
10260 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
10261
10262         * doc/invoke.texi (-ftree-lrs): Remove.
10263
10264 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
10265
10266         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
10267         NULL.
10268
10269 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
10270
10271         * config/ia64/ia64.c (ia64_expand_builtin): Use the
10272         new CALL_EXPR_FN macro for retrieving the function
10273         declaration of the input expression.
10274
10275 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10276
10277         * c.opt (Waddress): New.
10278         * common.opt (Walways-true): Delete.
10279         (Wstring-literal-comparison): Delete.
10280         * doc/invoke.texi (Warning Options): Delete -Walways-true and
10281         -Wstring-literal-comparison. Add -Waddress.
10282         (Waddress): New.
10283         (Walways-true): Delete.
10284         (Wstring-literal-comparison): Delete.
10285         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
10286         consistently instead of -Walways-true in example.
10287         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
10288         * c-typeck.c (parser_build_binary_op): Replace
10289         -Wstring-literal-comparison and -Walways-true with -Waddress.
10290         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
10291         with -Waddress.
10292
10293 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
10294
10295         * tree-cfg.c (dump_function_to_file): Be prepared for functions
10296         without DECL_STRUCT_FUNCTION initialized.
10297
10298 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
10299
10300         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
10301         due to calls to functions taking pointers as parameters.
10302
10303 2007-02-19  Richard Henderson  <rth@redhat.com>
10304
10305         PR debug/29558
10306         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
10307         in memory.
10308
10309 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10310
10311         * config/s390/s390.c (s390_call_saved_register_used,
10312         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
10313         accessed to the new scheme.
10314
10315 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
10316
10317         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
10318         (cris_print_index, cris_print_operand, cris_print_operand_address)
10319         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
10320         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
10321         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
10322         GET_CODE () == xxx.
10323         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
10324         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
10325         GO_IF_LEGITIMATE_ADDRESS): Ditto.
10326         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
10327         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
10328         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
10329         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
10330         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
10331         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
10332         (uminsi3, call, call_value): Ditto.
10333         (define_split: indir_to_reg_split, unnamed): Ditto.
10334
10335 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
10336
10337         PR tree-optimization/30975
10338         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
10339         wrong assert.
10340
10341 2007-02-18  Eric Christopher  <echristo@gmail.com>
10342
10343         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
10344         Remove use of arglist.
10345         (mips_expand_builtin): Remove use of arglist, pass in expr.
10346         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
10347         (mips_expand_builtin_movtf): Ditto.
10348         (mips_expand_builtin_compare): Ditto.
10349
10350 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
10351
10352         * tree-sra.c (sra_build_assignment): Replace assertion
10353         checking with a comment explaining why it can't be done.
10354
10355 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
10356
10357         PR middle-end/30833
10358         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
10359         during CALL_EXPR representation conversion.
10360         * tree-ssa-propagate.c (set_rhs): Likewise.
10361
10362 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
10363
10364         * tree-sra.c (sra_build_assignment): Disable assertion checking
10365         for now.
10366
10367 2007-02-18  Roger Sayle  <roger@eyesopen.com>
10368
10369         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
10370         instead of calling build2 with a GIMPLE_MODIFY_STMT.
10371         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
10372         Likewise.
10373         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
10374         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
10375         gimplify_init_ctor_eval_range, gimple_push_cleanup,
10376         gimplify_omp_for, gimplify_omp_atomic_pipeline,
10377         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
10378         force_gimple_operand): Likewise.
10379         * ipa-cp.c (constant_val_insert): Likewise.
10380         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
10381         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
10382         perfect_nestify): Likewise.
10383         * langhooks.c (lhd_omp_assignment): Likewise.
10384         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
10385         lower_copyprivate_clauses, lower_send_clauses,
10386         lower_send_shared_vars, expand_parallel_call,
10387         expand_omp_for_generic, expand_omp_for_static_nochunk,
10388         expand_omp_for_static_chunk, expand_omp_sections,
10389         lower_omp_single_copy, lower_omp_for_lastprivate,
10390         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
10391         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
10392         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
10393         Likewise.
10394
10395 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
10396
10397         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
10398         config/sh/sh.md: Follow spelling conventions.
10399
10400         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
10401         config/frv/predicates.md: Follow spelling conventions.
10402
10403         * config/m68k/linux-unwind.h: Fix a comment typo.
10404         * target.h: Follow spelling conventions.
10405
10406 2007-02-18  Roger Sayle  <roger@eyesopen.com>
10407
10408         PR rtl-optimization/28173
10409         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
10410         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
10411         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
10412         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
10413         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
10414
10415 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10416
10417         * builtins.c (fold_builtin_load_exponent): New.
10418         (fold_builtin_2): Use it.
10419
10420 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
10421
10422         PR rtl-optimization/30773
10423         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
10424         if we fail to attach a REG_EQUIV note.
10425
10426 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
10427             Roger Sayle  <roger@eyesopen.com>
10428
10429         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
10430
10431 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
10432
10433         * calls.c (initialize_argument_information): Pass original EXP
10434         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
10435         code to split complex arguments here, as part of initializing the
10436         ARGS array.
10437         (expand_call): Remove code that builds a list of arguments and
10438         inserts implicit arguments into it.  Instead, just count how many
10439         implicit arguments there will be so we can determine the size of
10440         the ARGS array, and let initialize_argument_information do the work.
10441         (split_complex_values): Delete unused function.
10442
10443 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
10444
10445         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
10446
10447 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
10448
10449         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
10450         for arg pointer based indexed addressing.
10451
10452 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
10453
10454         * config/ia64/ia64.h, config/ia64/ia64.md,
10455         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
10456         spelling conventions.
10457
10458 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
10459
10460         * config/m68k/m68k.c (split_di): New.
10461         * config/m68k/m68k-protos.h: Declare split_di.
10462         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
10463           Improve predicate handling and split constant shifts.
10464
10465 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
10466
10467         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
10468         parameter for register bitfield operations, general predicates
10469         cleanup
10470
10471 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
10472
10473         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
10474         * config/m68k/linux-unwind.h: New file.
10475
10476 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
10477
10478         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
10479         config/i386/athlon.md, config/ia64/ia64.md,
10480         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
10481         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
10482         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
10483         tree-ssa-loop-niter.c, tree-vect-analyze.c,
10484         tree-vect-transform.c: Fix comment typos.
10485
10486 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
10487
10488         * sched-deps.c (find_insn_list): Remove.
10489         * sched-int.h: Remove the prototype for find_insn_list.
10490
10491 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
10492
10493         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
10494         to linker.
10495         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
10496         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
10497         darwin_rs6000_override_options.
10498         (C_COMMON_OVERRIDE_OPTIONS): Expect
10499         darwin_macosx_version_min to be non-NULL always.
10500         (TARGET_C99_FUNCTIONS): Likewise.
10501         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
10502         (DARWIN_MINVERSION_SPEC): New.
10503         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
10504         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
10505         to cc1*.
10506         (DARWIN_MINVERSION_SPEC): New.
10507         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
10508         value.
10509         * config/darwin-c.c (darwin_cpp_builtins): Expect
10510         darwin_macosx_version_min to be non-NULL always.
10511
10512         * config/rs6000/rs6000.c: Clean up trailing whitespace.
10513
10514 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
10515
10516         * config/i386/i386.h (x86_use_xchgb): New.
10517         (TARGET_USE_XCHGB): New macro.
10518         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
10519         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
10520         Split after reload into bswaphi for shifts of 8.
10521         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
10522         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
10523         or when optimizing for size.
10524
10525 2007-02-16  Richard Guenther  <rguenther@suse.de>
10526             Christian Bruel  <christian.bruel@st.com>
10527
10528         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
10529         DECLs but prefer SSA_NAMEs over DECLs.
10530
10531 2007-02-16  Richard Guenther  <rguenther@suse.de>
10532
10533         * tree-flow-inline.h (single_imm_use_p): Remove.
10534         (zero_imm_uses_p): Likewise.
10535         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
10536         instead of single_imm_use_p.
10537         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
10538         zero_imm_uses_p.
10539
10540 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10541
10542         PR other/27843
10543         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
10544         nested double- and backquotes.
10545
10546 2007-02-15  Roger Sayle  <roger@eyesopen.com>
10547
10548         PR middle-end/30391
10549         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
10550         should be unreachable.
10551         (build2_stat): Allow construction of MODIFY_EXPR at any time.
10552         For the time being redirect GIMPLE_MODIFY_STMT to the new
10553         (renamed) build_gimple_modify_stmt_stat.
10554         (build2_gimple_stat): Rename to...
10555         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
10556         Always build a GIMPLE_MODIFY_STMT node.
10557         * tree.h (build2_gimple, build2_gimple_stat): Delete.
10558         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
10559         declarations.
10560
10561         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
10562         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
10563         * tree-complex.c (set_component_ssa_name, expand_complex_move,
10564         expand_complex_div_wide): Likewise.
10565         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
10566         * tree-ssa-loop-im.c (schedule_sm): Likewise.
10567         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
10568         * tree-ssa-loop-manip.c (create_iv): Likewise.
10569         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
10570         abs_replacement): Likewise.
10571         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
10572         realify_fake_stores): Likewise.
10573
10574         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
10575         node rather than a GIMPLE_MODIFY_STMT node.
10576         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
10577         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
10578         Likewise.
10579         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
10580         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
10581         GIMPLE_MODIFY_STMT.
10582
10583 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10584
10585         PR middle-end/30433
10586         * fold-const.c (fold_comparison): Add back the
10587         folding of constant complex comparisions.
10588
10589 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10590
10591         PR middle-end/30729
10592         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
10593         effects unknown to this function, return early.
10594
10595 2007-02-15  Ian Lance Taylor  <iant@google.com>
10596
10597         * lower-subreg.c (move_eh_region_note): New static function.
10598         (resolve_simple_move): Call it.
10599         (decompose_multiword_subregs): Track blocks for which we resolve a
10600         simple move which is also a control flow insn.  Pass them to
10601         find_many_sub_basic_blocks.
10602         (pass_lower_subreg): Add TODO_verify_flow.
10603         (pass_lower_subreg2): Likewise.
10604
10605 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
10606             Brooks Moses  <brooks.moses@codesourcery.com>
10607             Lee Millward  <lee.millward@codesourcery.com>
10608
10609         * tree.h (enum tree_code_class): Add tcc_vl_exp.
10610         (VL_EXP_CLASS_P): New.
10611         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
10612         TREE_CODE_LENGTH.
10613         (TREE_OPERAND_CHECK_CODE): Likewise.
10614         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
10615         (TREE_RTL_OPERAND_CHECK): Likewise.
10616         (tree_operand_check_failed): Make second parameter the whole tree
10617         instead of its code.  Fixed callers.
10618         (VL_EXP_CHECK): New.
10619         (TREE_OPERAND_LENGTH): New.
10620         (VL_EXP_OPERAND_LENGTH): New.
10621         (CALL_EXPR_FN): New.
10622         (CALL_EXPR_STATIC_CHAIN): New.
10623         (CALL_EXPR_ARGS): New.
10624         (CALL_EXPR_ARG): New.
10625         (call_expr_nargs): New.
10626         (CALL_EXPR_ARGP): New.
10627         (build_nt_call_list): Declare.
10628         (build_vl_exp_stat): Declare.
10629         (build_vl_exp): New.
10630         (build_call_list): Declare.
10631         (build_call_nary): Declare.
10632         (build_call_valist): Declare.
10633         (build_call_array): Declare.
10634         (call_expr_arg): Declare.
10635         (call_expr_argp): Declare.
10636         (call_expr_arglist): Declare.
10637         (fold_build_call_list): Declare.
10638         (fold_build_call_list_initializer): Declare.
10639         (fold_call_expr): Declare to replace fold_builtin.
10640         (fold_builtin_fputs): Update to agree with modified definition.
10641         (fold_builtin_strcpy): Likewise.
10642         (fold_builtin_strncpy): Likewise.
10643         (fold_builtin_memory_chk): Likewise.
10644         (fold_builtin_stxcpy_chk): Likewise.
10645         (fold_builtin_strncpy_chk): Likewise.
10646         (fold_builtin_next_arg): Likewise.
10647         (fold_build_call_expr): Declare.
10648         (fold_builtin_call_list): Declare.
10649         (fold_builtin_call_valist): Declare.
10650         (build_call_expr): Declare.
10651         (validate_arglist): Update to agree with modified definition.
10652         (tree_operand_length): New.
10653         (call_expr_arg_iterator): New.
10654         (init_call_expr_arg_iterator): New.
10655         (next_call_expr_arg): New.
10656         (first_call_expr_arg): New.
10657         (more_call_expr_args_p): New.
10658         (FOR_EACH_CALL_EXPR_ARG): New.
10659
10660         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
10661         and tcc_gimple_stmt.
10662         (tree_code_size): Update documentation.  Use sizeof (tree) rather
10663         than sizeof (char *).
10664         (tree_size): Likewise.  Add case for tcc_vl_exp.
10665         (tree_node_structure): Add case for tcc_vl_exp.
10666         (contains_placeholder_p): Likewise.
10667         (substitute_in_expr): Likewise.
10668         (substitute_placeholder_in_expr): Likewise.
10669         (stabilize_reference_1): Likewise.
10670         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
10671         to diagnose breakage of this interface for constructing CALL_EXPRs.
10672         (build_nt): Add similar assertion here.
10673         (build_nt_call_list): New.
10674         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
10675         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
10676         TREE_CODE_LENGTH.
10677         (get_callee_fndecl): Use new CALL_EXPR accessors.
10678         (tree_operand_check_failed): Change parameters to pass entire node
10679         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
10680         (process_call_operands): New.
10681         (build_vl_exp_stat): New.
10682         (build_call_list): New.
10683         (build_call_nary): New.
10684         (build_call_valist): New.
10685         (build_call_array): New.
10686         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10687         (call_expr_arglist): New.
10688
10689         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
10690         tcc_vl_exp instead of a fixed-size tcc_expression.
10691
10692         * doc/c-tree.texi (CALL_EXPR): Document new representation and
10693         accessors for CALL_EXPRs.
10694         (AGGR_INIT_EXPR): Likewise.
10695
10696 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
10697             Brooks Moses  <brooks.moses@codesourcery.com>
10698             Lee Millward  <lee.millward@codesourcery.com>
10699
10700         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
10701         (expand_builtin_nonlocal_goto): Change parameter to be entire
10702         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
10703         (expand_builtin_prefetch): Likewise.
10704         (expand_builtin_classify_type): Likewise.
10705         (mathfn_built_in): Return NULL_TREE instead of 0.
10706         (expand_errno_check): Use new CALL_EXPR accessors.
10707         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
10708         Return NULL_RTX instead of 0.
10709         (expand_builtin_mathfn_2): Likewise.
10710         (expand_builtin_mathfn_3): Likewise.
10711         (expand_builtin_interclass_mathfn): Likewise.
10712         (expand_builtin_sincos): Likewise.
10713         (expand_builtin_cexpi): Likewise.
10714         (expand_builtin_int_roundingfn): Likewise.
10715         (expand_builtin_int_roundingfn_2): Likewise.
10716         (expand_builtin_pow): Likewise.
10717         (expand_builtin_powi): Likewise.
10718         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
10719         of arglist, fixing callers appropriately.  Use new CALL_EXPR
10720         accessors and constructors.  Return NULL_RTX instead of 0.
10721         (expand_builtin_strstr): Likewise.
10722         (expand_builtin_strchr): Likewise.
10723         (expand_builtin_strrchr): Likewise.
10724         (expand_builtin_strpbrk): Likewise.
10725         (expand_builtin_memcpy): Likewise.
10726         (expand_builtin_mempcpy): Likewise.
10727         (expand_builtin_mempcpy_args): New.
10728         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
10729         (expand_builtin_memmove_args): New.
10730         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
10731         (expand_movstr): Likewise.
10732         (expand_builtin_strcpy): Likewise.
10733         (expand_builtin_strcpy_args): New.
10734         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
10735         (expand_builtin_strncpy): Likewise.
10736         (expand_builtin_memset): Likewise.
10737         (expand_builtin_memset_args): New.
10738         (expand_builtin_bzero): Similarly to expand_builtin_memset.
10739         (expand_builtin_memcmp): Likewise.
10740         (expand_builtin_strcmp): Likewise.
10741         (expand_builtin_strncmp): Likewise.
10742         (expand_builtin_strcat): Likewise.
10743         (expand_builtin_strncat): Likewise.
10744         (expand_builtin_strspn): Likewise.
10745         (expand_builtin_strcspn): Likewise.
10746         (expand_builtin_args_info): Likewise.
10747         (expand_builtin_va_start): Likewise.
10748         (gimplify_va_arg_expr): Likewise.
10749         (expand_builtin_va_end): Likewise.
10750         (expand_builtin_va_copy): Likewise.
10751         (expand_builtin_frame_address): Likewise.
10752         (expand_builtin_alloca): Likewise.
10753         (expand_builtin_bswap): Likewise.
10754         (expand_builtin_unop): Likewise.
10755         (expand_builtin_fputs): Likewise.
10756         (expand_builtin_expect): Likewise.
10757         (expand_builtin_fabs): Likewise.
10758         (expand_builtin_copysign): Likewise.
10759         (expand_builtin_printf): Likewise.
10760         (expand_builtin_fprintf): Likewise.
10761         (expand_builtin_sprintf): Likewise.
10762         (expand_builtin_init_trampoline): Likewise.
10763         (expand_builtin_signbit): Likewise.
10764         (expand_builtin_fork_or_exec): Likewise.
10765         (expand_builtin_sync_operation): Likewise.
10766         (expand_builtin_compare_and_swap): Likewise.
10767         (expand_builtin_lock_test_and_set): Likewise.
10768         (expand_builtin_lock_release): Likewise.
10769         (expand_builtin): Likewise.
10770         (builtin_mathfn_code): Likewise.
10771
10772         (fold_builtin_constant_p): Pass call arguments individually instead
10773         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
10774         accessors and constructors.  Return NULL_TREE instead of 0.
10775         (fold_builtin_expect): Likewise.
10776         (fold_builtin_classify_type): Likewise.
10777         (fold_builtin_strlen): Likewise.
10778         (fold_builtin_nan): Likewise.
10779         (integer_valued_real_p): Likewise.
10780         (fold_trunc_transparent_mathfn): Likewise.
10781         (fold_fixed_mathfn): Likewise.
10782         (fold_builtin_cabs): Likewise.
10783         (fold_builtin_sqrt): Likewise.
10784         (fold_builtin_cbrt): Likewise.
10785         (fold_builtin_cos): Likewise.
10786         (fold_builtin_cosh): Likewise.
10787         (fold_builtin_tan): Likewise.
10788         (fold_builtin_sincos): Likewise.
10789         (fold_builtin_cexp): Likewise.
10790         (fold_builtin_trunc): Likewise.
10791         (fold_builtin_floor): Likewise.
10792         (fold_builtin_ceil): Likewise.
10793         (fold_builtin_round): Likewise.
10794         (fold_builtin_int_roundingfn): Likewise.
10795         (fold_builtin_bitop): Likewise.
10796         (fold_builtin_bswap): Likewise.
10797         (fold_builtin_logarithm): Likewise.
10798         (fold_builtin_hypot): Likewise.
10799         (fold_builtin_pow): Likewise.
10800         (fold_builtin_powi): Likewise.
10801         (fold_builtin_exponent): Likewise.
10802         (fold_builtin_memset): Likewise.
10803         (fold_builtin_bzero): Likewise.
10804         (fold_builtin_memory_op): Likewise.
10805         (fold_builtin_bcopy): Deleted; call site changed to invoke
10806         fold_builtin_memory_op directly.
10807         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
10808         (fold_builtin_strncpy): Likewise.
10809         (fold_builtin_memcmp): Likewise.
10810         (fold_builtin_strcmp): Likewise.
10811         (fold_builtin_strncmp): Likewise.
10812         (fold_builtin_signbit): Likewise.
10813         (fold_builtin_copysign): Likewise.
10814         (fold_builtin_isascii): Likewise.
10815         (fold_builtin_toascii): Likewise.
10816         (fold_builtin_isdigit): Likewise.
10817         (fold_builtin_fabs): Likewise.
10818         (fold_builtin_abs): Likewise.
10819         (fold_builtin_fmin_fmax): Likewise.
10820         (fold_builtin_carg): Likewise.
10821         (fold_builtin_classify): Likewise.
10822         (fold_builtin_unordered_cmp): Likewise.
10823
10824         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
10825         New functions split out from fold_builtin_1.
10826         (fold_builtin_n): New.
10827         (fold_builtin_varargs): New.
10828         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
10829         instead.
10830         (fold_call_expr): New.
10831         (build_function_call_expr): Rewrite to use new helper function.
10832         (fold_builtin_call_list): New.
10833         (build_call_expr): New.
10834         (fold_builtin_call_valist): New.
10835         (rewrite_call_expr): New.
10836         (validate_arg): New.
10837         (validate_arglist): Change parameter to be entire CALL_EXPR instead
10838         of an arglist.  Change return type to bool.  Use new CALL_EXPR
10839         accessors.
10840
10841         (fold_builtin_strstr):  Pass call arguments individually instead
10842         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
10843         accessors and constructors.  Return NULL_TREE instead of 0.
10844         (fold_builtin_strchr): Likewise.
10845         (fold_builtin_strrchr): Likewise.
10846         (fold_builtin_strpbrk): Likewise.
10847         (fold_builtin_strcat): Likewise.
10848         (fold_builtin_strncat): Likewise.
10849         (fold_builtin_strspn): Likewise.
10850         (fold_builtin_strcspn): Likewise.
10851         (fold_builtin_fputs): Likewise.
10852         (fold_builtin_next_arg): Likewise.
10853         (fold_builtin_sprintf): Likewise.
10854
10855         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
10856         NULL_RTX instead of 0.
10857         (expand_builtin_memory_chk): Likewise.
10858         (maybe_emit_chk_warning): Likewise.
10859         (maybe_emit_sprintf_chk_warning): Likewise.
10860
10861         (fold_builtin_object_size): Pass call arguments individually instead
10862         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
10863         accessors and constructors.  Return NULL_TREE instead of 0.
10864         (fold_builtin_memory_chk): Likewise.
10865         (fold_builtin_stxcpy_chk): Likewise.
10866         (fold_builtin_strncpy_chk): Likewise.
10867         (fold_builtin_strcat_chk): Likewise.
10868         (fold_builtin_strcat_chk): Likewise.
10869         (fold_builtin_strncat_chk): Likewise.
10870         (fold_builtin_sprintf_chk): Likewise.
10871         (fold_builtin_snprintf_chk): Likewise.
10872         (fold_builtin_printf): Likewise.
10873         (fold_builtin_vprintf): Likewise.
10874
10875         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
10876         constructors.
10877         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
10878         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10879         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
10880         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
10881         (fold_unary): Likewise.
10882         (fold_binary): Likewise.
10883         (fold_ternary): Remove CALL_EXPR case, since they are no longer
10884         ternary expressions.
10885         (fold): Add logic for tcc_vl_exp.
10886         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
10887         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10888         (fold_build3_stat): Add assertion to flag broken interface for
10889         constructing CALL_EXPRs.
10890         (fold_build_call_list): New.
10891         (fold_build_call_list_initializer): New.
10892         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
10893         constructors.
10894         (fold_strip_sign_ops): Likewise.
10895
10896 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
10897             Brooks Moses  <brooks.moses@codesourcery.com>
10898             Lee Millward  <lee.millward@codesourcery.com>
10899
10900         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
10901         accessors and dump arguments explicitly.
10902
10903         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
10904         TREE_CODE_LENGTH.
10905         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
10906         explicitly.
10907         (print_call_name): Use new CALL_EXPR accessors.
10908
10909         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
10910         CALL_EXPR arguments explicitly instead of as a list.  Use
10911         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10912
10913         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
10914         (vrp_visit_stmt): Likewise.
10915
10916         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
10917         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
10918         TREE_CODE_LENGTH.
10919         (force_move_till_expr): Likewise.
10920
10921         * targhooks.c (default_external_stack_protect_fail): Use
10922         build_call_expr instead of build_function_call_expr.
10923         (default_hidden_stack_protect_fail): Likewise.
10924
10925         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
10926         build the call.
10927
10928         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
10929         and walk arguments explicitly.
10930
10931         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
10932         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10933         (expand_simple_operations): Likewise.
10934         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
10935
10936         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
10937         of TREE_CODE_LENGTH.
10938         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
10939
10940         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
10941         instead of TREE_CODE_LENGTH.
10942
10943         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
10944         (tree_ic_transform): Likewise.
10945         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
10946         parameter instead of arglist.  Fix callers.
10947         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
10948         (tree_stringops_transform): Likewise.
10949         (tree_indirect_call_to_profile): Likewise.
10950         (tree_stringops_values_to_profile): Likewise.
10951
10952         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
10953         (eliminate_tail_call): Likewise.
10954
10955         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
10956
10957         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
10958         Use TREE_OPERAND_LENGTH and generalize to handle any number of
10959         operands.
10960         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
10961
10962         * omp-low.c (build_omp_barrier): Use build_call_expr.
10963         (lower_rec_input_clauses): Likewise.
10964         (lower_reduction_clauses): Likewise.
10965         (expand_parallel_call): Likewise.
10966         (maybe_catch_exception): Likewise.
10967         (expand_omp_for_generic): Likewise.
10968         (expand_omp_for_static_nochunk): Likewise.
10969         (expand_omp_sections): Likewise.
10970         (lower_omp_single_simple): Likewise.
10971         (lower_omp_single_copy): Likewise.
10972         (lower_omp_master): Likewise.
10973         (lower_omp_ordered): Likewise.
10974         (lower_omp_critical): Likewise.
10975
10976         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
10977         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
10978
10979         * tree-gimple.c (is_gimple_call_addr): Fix doc.
10980         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
10981         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
10982
10983         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
10984         and generalize to handle any number of operands.
10985         (chrec_contains_undetermined): Likewise.
10986         (tree_contains_chrecs): Likewise.
10987         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
10988
10989         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
10990
10991         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
10992         fold_call_expr instead of fold_builtin.
10993         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
10994         match declarations there.
10995         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
10996         updates.
10997
10998         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
10999         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11000
11001         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
11002         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
11003
11004         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
11005         accessors.
11006
11007         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
11008         (execute_cse_sincos): Use new CALL_EXPR accessors.
11009
11010         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
11011
11012         * gimple-low.c (lower_function_body): Use build_call_expr.
11013         (lower_builtin_setjmp): Likewise.
11014
11015         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
11016         (set_storage_via_libcall): Likewise.
11017         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
11018         instead of TREE_CODE_LENGTH.
11019         (expand_expr_real_1): Use new CALL_EXPR accessors.
11020
11021         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
11022         generalize to handle any number of operands.
11023         (TB_parent_eq): Likewise.
11024
11025         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
11026         (strip_builtin_expect): Likewise.
11027
11028         * function.c (gimplify_parameters): Use build_call_expr.
11029
11030         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
11031         instead of TREE_CODE_LENGTH.
11032
11033         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
11034         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
11035
11036         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
11037         iterators.
11038
11039         * gimplify.c (build_stack_save_restore): Use build_call_expr.
11040         (gimplify_decl_expr): Likewise.
11041         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
11042         Use new CALL_EXPR iterators.
11043         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
11044         (gimplify_modify_expr_to_memset): Likewise.
11045         (gimplify_variable_sized_compare): Likewise.
11046         (gimplify_omp_atomic_fetch_op): Likewise.
11047         (gimplify_omp_atomic_pipeline): Likewise.
11048         (gimplify_omp_atomic_mutex): Likewise.
11049         (gimplify_function_tree): Likewise.
11050
11051         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
11052         (call_expr_flags): Likewise.
11053         (expand_call): Likewise.
11054
11055         * except.c (expand_builtin_eh_return_data_regno): Pass entire
11056         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
11057         accessors.
11058
11059         * coverage.c (create_coverage): Use build_call_expr.
11060
11061         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
11062         (temp_call_expr_obstack): New.
11063         (pool_copy_list): Delete.
11064         (temp_copy_call_expr): New.
11065         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
11066         CALL_EXPR accessors.  Get rid of special goo for copying argument
11067         lists and use temp_copy_call_expr instead.
11068         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
11069         CALL_EXPR accessors.
11070         (create_expression_by_pieces): Likewise.  Use build_call_array
11071         to construct the result instead of fold_build3.
11072         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
11073         dealing with argument lists.
11074         (init_pre): Remove references to expression_node_pool and
11075         list_node_pool.  Init temp_call_expr_obstack instead.
11076         (fini_pre): Remove references to expression_node_pool and
11077         list_node_pool.
11078
11079         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
11080         and walk arguments explicitly instead of as a list.
11081
11082         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
11083         (mx_register_decls): Likewise.
11084         (mudflap_register_call): Likewise.
11085         (mudflap_finish_file): Likewise.
11086
11087         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
11088         (ipa_callsite_compute_param): Likewise.
11089
11090         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
11091         accessors and constructor.
11092
11093         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
11094         accessors and constructor.
11095         (convert_tramp_reference): Likewise.
11096         (convert_call_expr): Likewise.
11097         (finalize_nesting_tree_1): Likewise.
11098
11099         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
11100         accessors.
11101
11102         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
11103
11104         * tree-inline.c (initialize_inlined_parameters): Pass entire
11105         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
11106         accessors.
11107         (estimate_num_insns_1): Use new CALL_EXPR accessors.
11108         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
11109
11110         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
11111         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11112         (vectorizable_reduction): Likewise.
11113         (vectorizable_call): Use new CALL_EXPR iterators.
11114         (vectorizable_conversion): Use build_call_expr.
11115         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
11116         (vect_gen_widened_results_half): Use build_call_expr.
11117         (vect_setup_realignment): Likewise.
11118         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
11119
11120         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
11121         (pass_through_call): Likewise.
11122         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
11123         fold_builtin.
11124
11125         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
11126         (tree_gen_pow2_profiler): Likewise.
11127         (tree_gen_one_value_profiler): Likewise.
11128         (tree_gen_ic_func_profiler): Likewise.
11129         (tree_gen_average_profiler): Likewise.
11130         (tree_gen_ior_profiler): Likewise.
11131
11132         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
11133         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
11134         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11135
11136         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
11137         of TREE_CODE_LENGTH.
11138
11139         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
11140         of TREE_CODE_LENGTH.
11141
11142         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
11143         constructor.
11144         (convert_to_integer): Likewise.
11145
11146         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
11147         accessors.
11148
11149 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11150             Brooks Moses  <brooks.moses@codesourcery.com>
11151             Lee Millward  <lee.millward@codesourcery.com>
11152
11153         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
11154         accessors.
11155         * config/frv/frv.c (frv_expand_builtin): Likewise.
11156         * config/s390/s390.c (s390_expand_builtin): Likewise.
11157
11158         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
11159         (sparc_expand_builtin): Use new CALL_EXPR accessors.
11160
11161         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
11162         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
11163         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
11164         (ix86_expand_store_builtin): Likewise.
11165         (ix86_expand_unop_builtin): Likewise.
11166         (ix86_expand_unop1_builtin): Likewise.
11167         (ix86_expand_sse_compare): Likewise.
11168         (ix86_expand_sse_comi): Likewise.
11169         (ix86_expand_vec_init_builtin): Likewise.
11170         (ix86_expand_vec_ext_builtin): Likewise.
11171         (ix86_expand_vec_set_builtin): Likewise.
11172         (ix86_expand_builtin): Use new CALL_EXPR accessors.
11173
11174         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
11175         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
11176
11177         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
11178         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
11179         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
11180
11181         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
11182         build_call_expr.
11183         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
11184         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
11185         arglist.  Use new CALL_EXPR accessors.  Fix callers.
11186         (altivec_expand_abs_builtin): Likewise.
11187         (rs6000_expand_binop_builtin): Likewise.
11188         (altivec_expand_predicate_builtin): Likewise.
11189         (altivec_expand_lv_builtin): Likewise.
11190         (spe_expand_stv_builtin): Likewise.
11191         (altivec_expand_stv_builtin): Likewise.
11192         (rs6000_expand_ternop_builtin): Likewise.
11193         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
11194         (altivec_expand_st_builtin): Likewise.
11195         (altivec_expand_dst_builtin): Likewise.
11196         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
11197         arglist.  Use new CALL_EXPR accessors.  Fix callers.
11198         (altivec_expand_vec_set_builtin): Likewise.
11199         (altivec_expand_vec_ext_builtin): Likewise.
11200         (altivec_expand_builtin): Use new CALL_EXPR accessors.
11201         (spe_expand_builtin): Likewise.
11202         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
11203         arglist.  Use new CALL_EXPR accessors.  Fix callers.
11204         (spe_expand_evsel_builtin): Likewise.
11205         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
11206         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
11207
11208         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
11209         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
11210         (arm_expand_unop_builtin): Likewise.
11211         (arm_expand_builtin): Use new CALL_EXPR accessors.
11212
11213         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
11214         accessors.
11215
11216         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
11217         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
11218         (bfin_expand_unop_builtin): Likewise.
11219         (bfin_expand_builtin): Use new CALL_EXPR accessors.
11220
11221 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11222             Brooks Moses  <brooks.moses@codesourcery.com>
11223             Lee Millward  <lee.millward@codesourcery.com>
11224
11225         * c-semantics.c (build_stmt): Add internal diagnostic check.
11226
11227         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
11228         accessors.  Print arguments explicitly instead of as a list.
11229
11230         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
11231
11232         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
11233         (c_finish_omp_flish): Likewise.
11234
11235         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
11236         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
11237         instead of TREE_CODE_LENGTH.
11238         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
11239         (c_warn_unused_result): Likewise.
11240
11241 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11242
11243         PR c/26494
11244         * doc/invoke.texi (Warning Options): Remove
11245         -Werror-implicit-function-declaration.
11246         (Wimplicit-function-declaration): Update description.
11247         * opts.c (common_handle_option): Move handling of -Werror=* to...
11248         (enable_warning_as_error): ...here.
11249         * opts.h (enable_warning_as_error): Declare.
11250         * c-decl.c (implicit_decl_warning): Unless
11251         -Wno-implicit-function-declaration is given, emit a pedwarn if
11252         -std=c99 or emit a warning if -Wimplicit-function-declaration.
11253         * c.opt (Wimplicit-function-declaration): Replace
11254         mesg_implicit_function_declaration with
11255         warn_implicit_function_declaration.
11256         * c-opts.c (c_common_handle_option):
11257         -Werror-implicit-function-declaration is exactly equal as
11258         -Werror=implicit-function-declaration.
11259         (set_Wimplicit): Replace mesg_implicit_function_declaration with
11260         warn_implicit_function_declaration.
11261         (c_common_post_options): -Wimplict-function-declaration is enabled
11262         by default by -std=c99, otherwise is disabled by default.
11263         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
11264
11265 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
11266
11267         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
11268         DECL on the rhs to a DECL on the lhs for debug info purposes if the
11269         former is ignored but not the latter.
11270
11271 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
11272
11273         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
11274         is made and the reference doesn't use the alias set of its type,
11275         do not create the temporary using that type.
11276
11277 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
11278
11279         * jump.c: Remove prototypes for delete_computation and
11280         delete_prior_computation.
11281
11282 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
11283
11284         * jump.c (get_label_after): Delete.
11285         (get_label_before, delete_computation, delete_jump,
11286         delete_prior_computation, follow_jumps): Move...
11287         * reorg.c (delete_computation, delete_prior_computation): ... here...
11288         (get_label_before, delete_jump): ... making these static ...
11289         (follow_jumps): ... and simplifying this since it only runs after
11290         reload.
11291         * rtl.h (get_label_after, get_label_before, delete_jump,
11292         follow_jumps): Delete prototypes.
11293
11294 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
11295
11296         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
11297
11298 2007-02-15  Nick Clifton  <nickc@redhat.com>
11299
11300         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
11301         order to prevent it from being munged by the target.
11302
11303 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
11304
11305         * config/i386/i386.md: Remove misleading comment.
11306
11307 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
11308
11309         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
11310         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
11311         invalid patterns.
11312
11313 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
11314
11315         * tree-sra.c (instantiate_missing_elements): Canonicalize
11316         bit-field types.
11317         (sra_build_assignment): New.
11318         (generate_copy_inout, generate_element_copy,
11319         generate_element_zero, generate_one_element_init): Use it.
11320
11321 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
11322
11323         * tree-sra.c (instantiate_missing_elements): Canonicalize
11324         bit-field types.
11325         (sra_build_assignment): New.
11326         (generate_copy_inout, generate_element_copy,
11327         generate_element_zero, generate_one_element_init): Use it.
11328
11329 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
11330
11331         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
11332         limbo die nodes.
11333
11334 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
11335
11336         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
11337         types as aggregates not scalars.
11338         * function.c (assign_stack_temp_for_type): Likewise.
11339
11340 2007-02-14  Roger Sayle  <roger@eyesopen.com>
11341             Zdenek Dvorak  <dvorakz@suse.cz>
11342
11343         * tree-dump.c (dump_switch_p_1): Require exact match of the option
11344         name.
11345
11346 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
11347
11348         * passes.c (next_pass_1): Clear the next field of the copied
11349         pass structure.
11350
11351 2007-02-14  Richard Henderson  <rth@redhat.com>
11352
11353         * tree-sra.c (early_sra): New.
11354         (decl_can_be_decomposed_p): Deny va_list if early_sra.
11355         (tree_sra_early, pass_sra_early): New.
11356         * tree-pass.h (pass_sra_early): Declare.
11357         * passes.c (init_optimization_passes): Use it.
11358
11359 2007-02-14  Richard Guenther  <rguenther@suse.de>
11360
11361         * flags.h (issue_strict_overflow_warning): Convert to a macro.
11362
11363 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
11364
11365          PR tree-optimization/30771
11366         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
11367         also phi nodes.
11368         (vect_analyze_operations): Induction phis can now be marked as
11369         used_in_loop.
11370         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
11371         Update documentation accordingly.
11372
11373 2007-02-14  Nick Clifton  <nickc@redhat.com>
11374
11375         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
11376         most 3 arguments are supported.
11377         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
11378
11379 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
11380
11381         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
11382         Ensure dst->current is valid.
11383
11384 2007-02-13  Paul Brook  <paul@codesourcery.com>
11385
11386         * config.gcc: Add arm*-*-uclinux-*eabi.
11387         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
11388         (SUBTARGET_EXTRA_LINK_SPEC): Define.
11389         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
11390         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
11391         (LINK_SPEC): Define.
11392         (LIB_SPEC): Define.
11393         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
11394         register.
11395         * config/arm/uclinux-eabi.h: New file.
11396         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
11397         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
11398         based targets.
11399
11400 2007-02-13  Ian Lance Taylor  <iant@google.com>
11401
11402         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
11403         * flags.h (warn_strict_overflow): Declare.
11404         (enum warn_strict_overflow_code): Define.
11405         (issue_strict_overflow_warning): New static inline function.
11406         * opts.c (warn_strict_overflow): New variable.
11407         (common_handle_option): Handle OPT_Wstrict_overflow and
11408         OPT_Wstrict_overflow_.
11409         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
11410         OPT_Wall.
11411         * fold-const.c: Include intl.h.
11412         (fold_deferring_overflow_warnings): New static variable.
11413         (fold_deferred_overflow_warning): New static variable.
11414         (fold_deferred_overflow_code): New static variable.
11415         (fold_defer_overflow_warnings): New function.
11416         (fold_undefer_overflow_warnings): New function.
11417         (fold_undefer_and_ignore_overflow_warnings): New function.
11418         (fold_deferring_overflow_warnings_p): New function.
11419         (fold_overflow_warning): New static function.
11420         (make_range): Add strict_overflow_p parameter.  Change all
11421         callers.
11422         (extract_muldiv, extract_muldiv_1): Likewise.
11423         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
11424         tree_expr_nonnegative_p.
11425         (fold_negate_expr): Call fold_overflow_warning.
11426         (fold_range_test): Likewise.
11427         (fold_comparison): Likewise.
11428         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
11429         instead of tree_expr_nonnegative_p.
11430         (tree_expr_nonnegative_warnv_p): Rename from
11431         tree_expr_nonnegative_p, add strict_overflow_p parameter.
11432         (tree_expr_nonnegative_p): New function.
11433         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
11434         strict_overflow_p parameter.
11435         (tree_expr_nonzero_p): New function.
11436         * passes.c (verify_interpass_invariants): New static function.
11437         (execute_one_pass): Call it.
11438         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
11439         warnings.
11440         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
11441         (estimate_numbers_of_iterations): Likewise.
11442         (scev_probably_wraps_p): Likewise.
11443         * tree-ssa-ccp.c: Include "toplev.h".
11444         (evaluate_stmt): Defer fold overflow warnings until we know we are
11445         going to optimize.
11446         (struct fold_stmt_r_data): Add stmt field.
11447         (fold_stmt_r): Defer fold overflow warnings until we know we
11448         optimized.
11449         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
11450         (fold_stmt_inplace): Likewise.
11451         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
11452         (cleanup_control_expr_graph): Defer fold overflow warnings until
11453         we know we are going to optimize.
11454         * tree-cfg.c (fold_cond_expr_cond): Likewise.
11455         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
11456         Likewise.
11457         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
11458         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
11459         * tree-ssa-loop-manip.c (create_iv): Likewise.
11460         * c-typeck.c (build_conditional_expr): Likewise.
11461         (build_binary_op): Likewise.
11462         * tree-vrp.c (vrp_expr_computes_nonzero): Call
11463         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
11464         (extract_range_from_unary_expr): Likewise.
11465         * simplify-rtx.c (simplify_const_relational_operation): Warn when
11466         assuming that signed overflow does not occur.
11467         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
11468         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
11469         (fold_defer_overflow_warnings): Declare.
11470         (fold_undefer_overflow_warnings): Declare.
11471         (fold_undefer_and_ignore_overflow_warnings): Declare.
11472         (fold_deferring_overflow_warnings_p): Declare.
11473         (tree_expr_nonzero_warnv_p): Declare.
11474         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
11475         of warning options.
11476         (Warning Options): Document -Wstrict-overflow.
11477         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
11478         (tree-ssa-ccp.o): Likewise.
11479         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
11480         (fold-const.o): Depend on intl.h.
11481
11482 2007-02-13  Ian Lance Taylor  <iant@google.com>
11483
11484         PR middle-end/30751
11485         * lower-subreg.c (resolve_simple_move): Decompose subregs in
11486         addresses.
11487
11488 2007-02-13  Stuart Hastings  <stuart@apple.com>
11489
11490         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
11491
11492 2007-02-13  Richard Henderson  <rth@redhat.com>
11493
11494         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
11495         handled_component_p before looking for the indirect_ref.
11496
11497 2007-02-13  Richard Henderson  <rth@redhat.com>
11498
11499         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
11500         remove flags clobber.
11501         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
11502         (bswaphi_lowpart): New.
11503         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
11504         remove TARGET_BSWAP test.  Delete expander of the same name.
11505
11506         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
11507         (expand_unop): Use them.
11508
11509 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
11510
11511         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
11512         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
11513         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
11514         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
11515         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
11516         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
11517         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
11518         assembler dialect choice from asm templates.
11519
11520 2007-02-12  Richard Henderson  <rth@redhat.com>
11521
11522         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
11523         (fixuns_trunc<SSEMODEF>si2): Use it.
11524         * config/i386/sse.md (vec_setv4sf_0): Export.
11525         * config/i386/i386.c (ix86_build_const_vector): Export.
11526         (ix86_split_convert_uns_si_sse): Rename from
11527         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
11528         * config/i386/i386-protos.h: Update.
11529
11530 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11531
11532         PR c/29521
11533         * c-typeck.c (c_finish_return): Improve warning message.
11534
11535 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11536
11537         * alias.c (find_symbolic_term): Delete unused function.
11538
11539 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
11540
11541         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
11542         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
11543         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
11544
11545 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
11546
11547         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
11548         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
11549         the function, temporarily point the debug interface to the null one.
11550
11551 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
11552
11553         * dwarf2out.c (round_up_to_align): New static function.
11554         (field_byte_offset): Use it to round the offset.
11555
11556 2007-02-12  Richard Henderson  <rth@redhat.com>
11557
11558         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
11559         (inswl_const): Export.
11560
11561 2007-02-12  Richard Henderson  <rth@redhat.com>
11562
11563         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
11564         result mode of the libcall, convert back to outmode.
11565
11566 2007-02-12  Roger Sayle  <roger@eyesopen.com>
11567
11568         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
11569         (bswapdi2): New define_expand to implement 32-bit implementation.
11570
11571 2007-02-12  Nick Clifton  <nickc@redhat.com>
11572
11573         * doc/invoke.texi (Overall Options): Document --help=.
11574         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
11575         (cc1_options): Pass --help= on to cc1.
11576         (display_help): Add description of --help=.
11577         (process_command): Add code to handle --help=.  Allow translated
11578         --help and --target-help switches to be passed on to compiler
11579         sub-process.
11580         (main): Remove unused if statement.
11581         * opts.c (columns): Remove.
11582         (LEFT_COLUMN): Define.
11583         (wrap_help): Add columns argument.
11584         (print_filtered_help): Change parameters to be an include bitmask,
11585         an exclude bitmask, an any bitmask and the column width.  Move the
11586         code to display the params list here.  Add code to display the
11587         status of options rather than their descriptions if the quiet flag
11588         is not active.
11589         (print_specific_help): Change parameters to be an include bitmask,
11590         an exclude bitmask and an any bitmask.  Move code to look up the
11591         column width here.  Decide upon the title for an options listing.
11592         (common_handle_options): Add code to handle --help=.  Adapt code
11593         for --help and --target-help to use the revised form of the
11594         print_specific_help function.
11595         (print_help): Delete.
11596         (print_param_help): Delete.
11597         (print_switch): Delete.
11598         * opts.h (cl_lang_count): Add prototype.
11599         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
11600         CL_MAX_OPTION_CLASS): New defines.
11601         * optc-gen.awk: Add construction of cl_lang_count.
11602         * c.opt: Add Warning attribute to warning options and Optimization
11603         attribute to optimization options.
11604         * common.opt: Likewise.
11605         Add --help=.
11606         Add -fhelp and -ftarget-help as aliases for the transformed --help
11607         and --target-help options.
11608         * opt-functions.awk: Add code to handle Warning and Optimization
11609         attributes.
11610
11611 2007-02-12  Richard Henderson  <rth@redhat.com>
11612
11613         * config/alpha/constraints.md: New file.
11614         * config/alpha/alpha.c: Include tm-constrs.h.
11615         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
11616         alpha_extra_constraint): Remove.
11617         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
11618         * config/alpha/alpha-protos.h: Update.
11619         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
11620         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
11621         (EXTRA_CONSTRAINT): Remove.
11622         * config/alpha/alpha.md: Include constraints.md.
11623         (adddi splitter): Use satisfies_constraint_*.
11624         * config/alpha/predicates.md (add_operand): Likewise.
11625         (sext_add_operand, addition_operation): Likewise.
11626
11627 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
11628
11629         PR tree-optimization/29145
11630         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
11631         in our handling of restrict qualified pointers.
11632
11633 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11634
11635         PR middle-end/7651
11636         * doc/invoke.texi (Wunused-value): Update description.
11637         (Wextra): Delete item.
11638         * opts.c (set_Wextra): Don't use the value of Wextra to set the
11639         value of Wunused-value.
11640         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
11641         (c_finish_stmt_expr): Don't check extra_warnings.
11642         (emit_side_effect_warnings): The caller is responsible to check
11643         warn_unused_value.
11644
11645 2007-02-11  Roger Sayle  <roger@eyesopen.com>
11646             Matt Thomas  <matt@3am-software.com>
11647
11648         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
11649
11650 2007-02-11  Roger Sayle  <roger@eyesopen.com>
11651
11652         * simplify-rtx.c (simplify_relational_operation_1): Optimize
11653         comparisons of POPCOUNT against zero.
11654         (simplify_const_relational_operation): Likewise.
11655
11656 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11657
11658         * doc/invoke.texi (Wextra): Delete outdated paragraph.
11659
11660 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11661
11662         * dwarf2out.c (root_type): Delete unused function.
11663
11664 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11665
11666         * genattrtab.c (contained_in_p): Delete unused function.
11667         (write_expr_attr_cache): Likewise.
11668
11669 2007-02-11  Jan Hubicka  <jh@suse.cz>
11670
11671         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
11672         previous patch.
11673
11674 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
11675
11676         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
11677         to add the REG_EQ* note.
11678         * see.c (see_merge_one_use_extension): Likewise.
11679         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
11680         turn REG_EQUAL notes into REG_EQUIV notes if the target
11681         register may have more than one set.
11682         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
11683         * gcse.c (try_replace_reg): Likewise.
11684         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
11685         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
11686         more than one REG_EQUIV note.
11687         * reload1.c (gen_reload): Use set_unique_reg_note.
11688
11689 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
11690
11691         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
11692         (ix86_builtin_conversion): New function.
11693
11694 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
11695
11696         PR target/29487
11697         * tree.h (DECL_REPLACEABLE_P): New macro.
11698         * except.c (set_nothrow_function_flags): Likewise.
11699
11700 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
11701             Ira Rosen  <irar@il.ibm.com>
11702             Dorit Nuzman  <dorit@il.ibm.com>
11703
11704         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
11705         * targhooks.c (default_builtin_vectorized_conversion): New.
11706         * targhooks.h (default_builtin_vectorized_function): New declaration.
11707         * target.h (struct vectorize): Add builtin_conversion field.
11708         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
11709         stmt_vec_info_type value.
11710         (vectorizable_conversion): New declaration.
11711         * tree-vect-analyze.c (vect_analyze_operations): Add
11712         vectorizable_conversion call.
11713         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
11714         * tree-vect-transform.c (vectorizable_conversion): New function.
11715         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
11716         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
11717         mode.
11718         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
11719         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
11720         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
11721         or ALTIVEC_BUILTIN_VCFSX.
11722
11723 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11724
11725         PR target/30634
11726         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
11727         CONST_DOUBLE and operand 0 is a hard register.
11728         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
11729         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
11730         is a hard floating-point register.
11731
11732 2007-02-10  Richard Henderson  <rth@redhat.com>
11733             Jakub Jelinek  <jakub@redhat.com>
11734             Alexandre Oliva  <aoliva@redhat.com>
11735
11736         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
11737         * builtin-types.def (BT_WORD): Make unsigned.
11738         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
11739         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
11740         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
11741         * c-decl.c (grokdeclarator): Don't error if !have_tls.
11742         * c-parser.c (c_parser_omp_threadprivate): Likewise.
11743         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
11744         emulated tls.
11745         * expr.c (emutls_var_address): New.
11746         (expand_expr_real_1): Expand emulated tls.
11747         (expand_expr_addr_expr_1): Likewise.
11748         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
11749         * output.h (emutls_finish): Declare.
11750         * toplev.c (compile_file): Call it.
11751         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
11752         address before wrapping in CONST.
11753         * varasm.c (emutls_htab, emutls_object_type): New.
11754         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
11755         (get_emutls_object_name, get_emutls_object_type): New.
11756         (get_emutls_init_templ_addr, emutls_decl): New.
11757         (emutls_common_1, emutls_finish): New.
11758         (assemble_variable): When emulating tls, swap decls; generate
11759         constructor for the emutls objects.
11760         (do_assemble_alias): When emulating tls, swap decl and target name.
11761         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
11762         for emulated tls.
11763         * varpool.c (decide_is_variable_needed): Look at force_output.
11764         Recurse for emulated tls.
11765         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
11766         with decide_is_variable_needed.
11767         * emutls.c: New file.
11768         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
11769         tls_object for real tls.
11770
11771 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
11772
11773         PR rtl-optimization/29599
11774         * reload1.c (eliminate_regs_in_insn): Take the destination
11775         mode into account when computing the offset.
11776
11777 2007-02-09  Stuart Hastings  <stuart@apple.com>
11778             Richard Henderson  <rth@redhat.com>
11779
11780         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
11781         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
11782         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
11783         fixuns_truncdfhi2): New.
11784         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
11785         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
11786         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
11787         (floatunssidf2): Allow nonimmediate source.
11788         * config/i386/sse.md (movdi_to_sse): New.
11789         (vec_concatv2di): Drop '*'.
11790         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
11791         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
11792         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
11793         New.
11794         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
11795         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
11796         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
11797         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
11798         (ix86_build_signbit_mask): Fix decl of v, refactor to call
11799         ix86_build_const_vector.
11800         (x86_emit_floatuns): Rewrite.
11801
11802 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11803
11804         * genautomata.c (longest_path_length): Delete unused function.
11805         (struct state): Delete unused longest_path_length.
11806         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
11807         (get_free_state): Delete unused.
11808
11809 2007-02-09  Jan Hubicka  <jh@suse.cz>
11810
11811         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
11812         * doc/invoke.texi (inline-unit-growth): Update default value.
11813
11814         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
11815         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
11816         (rebuild_cgraph_edges): Likewise.
11817         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
11818         (dump_cgraph_node): Dump frequencies.
11819         (cgraph_clone_edge): Add frequency scales.
11820         (cgraph_clone_node): Add freuqnecy.
11821         * cgraph.h (cgraph_edge): Add freuqnecy argument.
11822         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
11823         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
11824         * tree-pass.h (TODO_rebuild_frequencies): New constant.
11825         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
11826         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
11827         (save_inline_function_body): Likewise.
11828         * ipa-inline.c: inluce rtl.h
11829         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
11830         (cgraph_edge_badness): Use frequencies.
11831         (cgraph_decide_recursive_inlining): Update clonning.
11832         (cgraph_decide_inlining_of_small_function): Dump frequency.
11833         * predict.c (estimate_bb_frequencies): Export.
11834         * predict.h (estimate_bb_frequencies): Declare.
11835         * tree-inline.c (copy_bb): Watch overflows.
11836         (expand_call_inline): Update call of cgraph_create_edge.
11837         (optimize_inline_calls): Use TODO flags to update frequnecies.
11838         * passes.h: Include predict.h
11839         (init_optimization_passes): Move profile ahead.
11840         (execute_function_todo): Handle TODO_rebuild_frequencies.
11841
11842 2007-02-09  Roger Sayle  <roger@eyesopen.com>
11843
11844         * config/alpha/alpha.c (emit_insxl): Force the first operand of
11845         the insbl or inswl pattern into a register.
11846
11847 2007-02-09  Roger Sayle  <roger@eyesopen.com>
11848
11849         * config/ia64/ia64.md (bswapdi2): New define_insn.
11850
11851 2007-02-09  Richard Henderson  <rth@redhat.com>
11852
11853         * config/i386/constraints.md (Ym): New constraint.
11854         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
11855         (movdi_1_rex64): Split sse and xmm general register moves from
11856         memory move alternatives.  Use conditional register constraints.
11857         (movsf_1, movdf_integer): Likewise.
11858         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
11859         (movdf_integer_rex64): New.
11860         (pushsf_rex64): Fix output constraints.
11861         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
11862         (sse2_stored): Likewise.
11863         (sse2_storeq_rex64): New.
11864         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
11865         amd and not generic.
11866         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
11867         for optimize_size.  Remove SF/DFmode hack.
11868
11869 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11870
11871         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
11872         (bit_SSE4a): New.
11873
11874 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
11875             Richard Sandiford  <richard@codesourcery.com>
11876
11877         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
11878         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
11879         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
11880         m68k/t-mlib to tmake_file.
11881         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
11882         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
11883         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
11884         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
11885         variable is not empty, add t-$m68k_arch_family to tmake_file.
11886         Add t-mlibs to tmake_file.
11887         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
11888         * config/m68k/t-cf: New file.
11889         * config/m68k/t-m68k: Likewise.
11890         * config/m68k/t-mlibs: Likewise.
11891         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
11892         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
11893         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
11894         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
11895         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
11896         Delete.
11897         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
11898         (INSTALL_LIBGCC): Delete.
11899         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
11900         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
11901         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
11902         (M68K_MLIB_CPU): Define.
11903         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
11904         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
11905         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
11906
11907 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
11908             Richard Guenther  <rguenther@suse.de>
11909
11910         PR middle-end/23361
11911         * fold-const.c (fold_comparison): Handle obfuscated comparisons
11912         against INT_MIN/INT_MAX.
11913         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
11914         file if a loop is removed.
11915
11916 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
11917
11918         * calls.c (store_one_arg): Pass correct alignment to
11919         emit_push_insn for non-BLKmode values.
11920         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
11921         unaligned stack slot via a suitably aligned slot.
11922
11923 2007-02-08  DJ Delorie  <dj@redhat.com>
11924
11925         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
11926         warnings.
11927         (legal_subregs): Use unsigned char, make const.
11928         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
11929
11930 2007-02-08  Paul Brook  <paul@codesourcery.com>
11931
11932         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
11933         special interworking needed.
11934
11935 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
11936
11937         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
11938         conditional to __SSE2__.
11939         (Entries below should have been added to first ChangeLog
11940         entry for amdfam10 dated 2007-02-05)
11941         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
11942         defined.
11943         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
11944         defined.
11945         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
11946         defined.
11947
11948 2007-02-08  DJ Delorie  <dj@redhat.com>
11949
11950         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
11951         * config/m32c/m32c.c (legal_subregs): New.
11952         (m32c_illegal_subreg_p): New.
11953         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
11954         unsupported subregs of hard regs.
11955
11956 2007-02-08  Jan Hubicka  <jh@suse.cz>
11957
11958         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
11959         the same one; always update histograms.
11960
11961 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
11962
11963         * passes.c (init_optimization_passes): Tidy comment.
11964
11965 2007-02-08  Roger Sayle  <roger@eyesopen.com>
11966
11967         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
11968         strip zero_extend, bswap and rotates from POCOUNT's argument.
11969         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
11970         zero_extend and rotates from PARITY's argument.
11971         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
11972         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
11973         of an integer constant at compile-time.
11974
11975 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
11976
11977         PR 30562
11978         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
11979         Update all users.
11980         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
11981         users.
11982         (init_alias_info):
11983         * tree-ssa-live.c (remove_unused_locals): Do not remove
11984         TREE_ADDRESSABLE variables.
11985         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
11986         * tree-ssa-operands.c (add_virtual_operand): Remove argument
11987         FOR_CLOBBER.  Update all users.
11988         If VAR has an associated alias set, add a virtual operand for
11989         it if no alias is found to conflict with the memory reference.
11990
11991 2007-02-07  Jan Hubicka  <jh@suse.cz>
11992             Robert Kidd <rkidd@crhc.uiuc.edu>
11993
11994         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
11995
11996 2007-02-07  Ian Lance Taylor  <iant@google.com>
11997
11998         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
11999
12000 2007-02-07  Roger Sayle  <roger@eyesopen.com>
12001
12002         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
12003         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
12004         tablejumpdi, movsi_to_cr_one): Remove constraints from
12005         define_expand's match_operands.
12006
12007 2007-02-07  Roger Sayle  <roger@eyesopen.com>
12008
12009         * global.c (compute_regsets): Move declatation of "i" inside of
12010         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
12011
12012 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
12013
12014         PR c++/30703
12015         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
12016         of INDIRECT_REF <RESULT_DECL>.
12017
12018         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
12019
12020 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
12021             Kaz Kojima  <kkojima@gcc.gnu.org>
12022
12023         PR target/29746
12024         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
12025         properly.
12026         (sh_initialize_trampoline): Add parentheses to avoid a warning.
12027
12028 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
12029
12030         * doc/loop.texi: Document possibility not to perform disambiguation
12031         of loops with multiple latches.
12032         * cfgloopmanip.c (alp_enum_p): Removed.
12033         (add_loop): Handle subloops.  Use get_loop_body_with_size.
12034         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
12035         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
12036         the new forwarder block.
12037         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
12038         Handle the case latch is NULL.
12039         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
12040         when marking loop exits.
12041         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
12042         be modified.
12043         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
12044         disambiguate_loops_with_multiple_latches.
12045         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
12046         before fix_loop_structure.
12047         * cfgloop.c: Include pointer-set.h and output.h.
12048         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
12049         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
12050         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
12051         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
12052         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
12053         disambiguate_multiple_latches, get_loop_body_with_size,
12054         disambiguate_loops_with_multiple_latches): New functions.
12055         (flow_loop_dump): Dump multiple latch edges.
12056         (flow_loop_nodes_find): Handle loops with multiple latches.
12057         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
12058         (glb_enum_p): Modified.
12059         (get_loop_body): Use get_loop_body_with_size.
12060         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
12061         (AVOID_CFG_MODIFICATIONS): New constant.
12062         (disambiguate_loops_with_multiple_latches, add_loop,
12063         get_loop_body_with_size): Declare.
12064         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
12065
12066 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
12067
12068         PR inline-asm/28686
12069         * global.c (compute_regsets): New function.
12070         (global_alloc): Refactored ELIMINABLE_REGSET
12071         and NO_GLOBAL_ALLOC_REGS computation out.
12072         (rest_of_handle_global_alloc): Call compute_regsets()
12073         for non-optimizing case.
12074
12075 2007-02-06  Richard Henderson  <rth@redhat.com>
12076
12077         * config/i386/constraints.md (Y2): Rename from Y.
12078         (Yi): New constraint.
12079         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
12080         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
12081         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
12082         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
12083         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
12084         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
12085         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
12086         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
12087         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
12088         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
12089         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
12090         vec_extractv2si_1): Change Y constraints to Y2.
12091         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
12092         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
12093         Change Y constraints to Y2.
12094         (sse2_loadld): Change Y constraints to x.
12095
12096 2007-02-06  Roger Sayle  <roger@eyesopen.com>
12097
12098         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
12099         (parity<mode>2): New define_expand using rs6000_emit_parity.
12100         * config/rs6000/rs6000.c (rs6000_emit_popcount,
12101         rs6000_emit_parity): New functions.
12102         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
12103         rs6000_emit_parity): Prototype here.
12104
12105 2007-02-06  Ian Lance Taylor  <iant@google.com>
12106
12107         * lower-subreg.c (simple_move_operand): Reject CONST.
12108         (resolve_clobber): Call validate_change rather than directly
12109         assigning to XEXP (pat, 0).
12110
12111 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
12112
12113         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
12114         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
12115         (tree-cfg.o): Remove hashtab.h dependency.
12116
12117         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
12118         (struct ivopts_data): Change niters to pointer_map_t.
12119         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
12120         (niter_for_exit): Create pointer_map on demand.  Change for
12121         pointer_map API.
12122         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
12123         (free_loop_data): Destroy data->niters if created and reset field.
12124         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
12125         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
12126
12127         * tree-ssa-reassoc.c: Include pointer-set.h.
12128         (bb_rank): Change to long *.
12129         (operand_rank): Change to pointer_map_t.
12130         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
12131         (insert_operand_rank): Accept long.
12132         (operand_entry_hash, operand_entry_eq): Remove.
12133         (get_rank): Return long.  Adjust for changes above.
12134         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
12135         and operand_rank.
12136         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
12137
12138         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
12139         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
12140         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
12141         is not NULL.
12142         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
12143         directly since it cannot be NULL.
12144         (get_vi_for_tree): Rewrite for pointer_map API.
12145         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
12146         (init_alias_vars): Create vi_for_tree as pointer_map.
12147         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
12148
12149         * tree-cfg.c: Don't include hashtab.h.
12150         (edge_to_cases): Declare as pointer_map.
12151         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
12152         Delete.
12153         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
12154         (start_recording_case_labels): Create edge_to_cases as pointer_map.
12155         (end_recoding_case_labels): Cleanup edge_to_cases manually before
12156         destroying it.
12157         (record_switch_edge): Delete.
12158         (get_cases_for_edge): Adjust for pointer_map API, inline
12159         record_switch_edge (rewritten for new API), remove goto.
12160
12161 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
12162
12163         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
12164         * tree-nested.c: Include pointer-set.h.
12165         (var_map_elt, var_map_eq, var_map_hash): Delete.
12166         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
12167         to pointer_map_t's.
12168         (nesting_info_bitmap_obstack): New.
12169         (lookup_field_for_decl): Adjust for pointer_map API.
12170         (lookup_tramp_for_decl): Adjust for pointer_map API.
12171         (get_nonlocal_debug_decl): Adjust for pointer_map API.
12172         (get_local_debug_decl): Adjust for pointer_map API.
12173         (convert_nl_goto_reference): Adjust for pointer_map API.
12174         (convert_nl_goto_receiver): Adjust for pointer_map API.
12175         (create_nesting_tree): Create outside GGC space.  Create bitmap on
12176         the new obstack.  Create field_map and var_map as pointer_maps.
12177         (free_nesting_tree): Adjust for changes to create_nesting_tree.
12178         (root): Delete.
12179         (lower_nested_functions): Move root here, no need to NULL it.
12180         Initialize and release the obstack.
12181
12182 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
12183
12184         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
12185         Remove prototypes and make them non-static.
12186         (struct tree_int_map): Remove.
12187         * tree.h (struct tree_int_map): Move here, turning TO into an
12188         unsigned int.
12189         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
12190
12191         * tree.h (TREE_COMPLEXITY): Remove.
12192         (struct tree_exp): Remove complexity field.
12193         * tree.c (build1_stat): Don't set it.
12194
12195 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
12196             Victor Kaplansky  <victork@il.ibm.com>
12197
12198         * tree-vectorizer.c (vect_is_simple_use): Support induction.
12199         (vect_is_simple_reduction): Support reduction with induction as
12200         one of the operands.
12201         (vect_is_simple_iv_evolution): Fix formatting.
12202         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
12203         formatting.  Don't mark induction phis for vectorization.
12204         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
12205         * tree-vect-transform.c (get_initial_def_for_induction): New function.
12206         (vect_get_vec_def_for_operand): Support induction.
12207         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
12208         induction case.
12209         (vectorizable_reduction): Support reduction with induction as one of
12210         the operands.
12211         (vectorizable_type_demotion): Use def-type of stmt argument rather
12212         than dummy def-type.
12213
12214         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
12215         flag_tree_scev_cprop.
12216         * common.opt (tree-scev-cprop): New flag.
12217
12218         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
12219         call to vect_get_new_vect_var.
12220
12221 2007-02-06  Ira Rosen  <irar@il.ibm.com>
12222
12223         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
12224         vectype is not NULL.
12225         (vect_pattern_recog_1): Likewise.
12226
12227 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12228
12229         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
12230         (fold_negate_expr): Likewise.
12231
12232 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
12233
12234         PR debug/30189
12235         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
12236         even if cv-qualification is the same.
12237
12238 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
12239
12240         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
12241         __enable_execute_stack on completion.
12242
12243 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12244
12245         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
12246         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
12247         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
12248         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
12249         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
12250         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
12251         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
12252         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
12253
12254 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12255
12256         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
12257         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
12258         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
12259         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
12260         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
12261         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
12262         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
12263         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
12264         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
12265         umuldi3_highpart_rex64, umulsi3_highpart_insn,
12266         umulsi3_highpart_zext, smuldi3_highpart_rex64,
12267         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
12268         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
12269         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
12270         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
12271         sqrtextenddfxf2_i387): Added amdfam10_decode.
12272
12273         * config/i386/athlon.md (athlon_idirect_amdfam10,
12274         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
12275         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
12276         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
12277         athlon_ivector_store_amdfam10): New define_insn_reservation.
12278         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
12279         amdfam10.
12280
12281 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12282
12283         * config/i386/athlon.md (athlon_call_amdfam10,
12284         athlon_pop_amdfam10, athlon_lea_amdfam10): New
12285         define_insn_reservation.
12286         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
12287         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
12288         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
12289
12290 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12291
12292         * config/i386/athlon.md (athlon_sseld_amdfam10,
12293         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
12294         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
12295
12296 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12297
12298         * config/i386/athlon.md (athlon_sseins_amdfam10): New
12299         define_insn_reservation.
12300         * config/i386/i386.md (sseins): Added sseins to define_attr type
12301         and define_attr unit.
12302         * config/i386/sse.md: Set type attribute to sseins for insertq
12303         and insertqi.
12304
12305 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12306
12307         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
12308         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
12309         ssecomi_load_amdfam10, ssecomi_amdfam10,
12310         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
12311         define_insn_reservation.
12312         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
12313
12314 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12315
12316         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
12317         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
12318         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
12319         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
12320         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
12321         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
12322         define_insn_reservation.
12323
12324         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
12325         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
12326         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
12327         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
12328         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
12329
12330 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12331
12332         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
12333         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
12334         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
12335         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
12336         athlon_ssemul_load_k8): Added amdfam10.
12337
12338 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12339
12340         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
12341         (x86_sse_unaligned_move_optimal): New variable.
12342
12343         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
12344         m_AMDFAM10.
12345         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
12346         for unaligned vector SSE double/single precision loads for AMDFAM10.
12347
12348 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12349
12350         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
12351         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
12352         Define TARGET_CPU_DEFAULT_amdfam10.
12353         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
12354         (processor_type): Add PROCESSOR_AMDFAM10.
12355
12356         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
12357         processor_type in config/i386/i386.h.
12358         Enable imul peepholes for TARGET_AMDFAM10.
12359
12360         * config.gcc: Add support for --with-cpu option for amdfam10.
12361
12362         * config/i386/i386.c (amdfam10_cost): New variable.
12363         (m_AMDFAM10): New macro.
12364         (m_ATHLON_K8_AMDFAM10): New macro.
12365         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
12366         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
12367         x86_promote_QImode, x86_integer_DFmode_moves,
12368         x86_partial_reg_dependency, x86_memory_mismatch_stall,
12369         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
12370         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
12371         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
12372         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
12373         Enable/disable for amdfam10.
12374         (override_options): Add amdfam10_cost to processor_target_table.
12375         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
12376         processor_alias_table.
12377         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
12378         (ix86_adjust_cost): Add code for amdfam10.
12379
12380 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
12381
12382         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
12383         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
12384         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
12385         * config/i386/i386.h: Add builtin definition for SSE4A.
12386         * config/i386/i386.md: Add support for ABM instructions
12387         (popcnt and lzcnt).
12388         * config/i386/sse.md: Add support for SSE4A instructions
12389         (movntss, movntsd, extrq, insertq).
12390         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
12391         Add -march=amdfam10 flag.
12392         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
12393         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
12394         and amdfam10.
12395         * doc/extend.texi: Add documentation for SSE4A builtins.
12396
12397 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
12398
12399         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
12400
12401 2007-02-05  Richard Guenther  <rguenther@suse.de>
12402
12403         * tree-vectorizer.h (vectorizable_function): Add argument type
12404         argument, change return type.
12405         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
12406         * tree-vect-transform.c (vectorizable_function): Handle extra
12407         argument, return vectorized function decl.
12408         (build_vectorized_function_call): Remove.
12409         (vectorizable_call): Handle calls with result and argument types
12410         differing.  Handle loop vectorization factor correctly.
12411         * targhooks.c (default_builtin_vectorized_function): Adjust for
12412         extra argument.
12413         * targhooks.h (default_builtin_vectorized_function): Likewise.
12414         * target.h (builtin_vectorized_function): Add argument type
12415         argument.
12416         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
12417         extra argument, allow vectorizing of lrintf.
12418         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
12419         documentation of target hook.
12420
12421 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
12422
12423         PR target/30665
12424         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
12425         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
12426         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
12427
12428 2007-02-05  Roger Sayle  <roger@eyesopen.com>
12429
12430         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
12431         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
12432         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
12433         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
12434         before canonicalizing sincos to cexpi.
12435         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
12436
12437 2007-02-05  Roger Sayle  <roger@eyesopen.com>
12438
12439         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
12440         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
12441         (alpha_init_builtins): Use alpha_add_builtins to process tables.
12442
12443 2007-02-05  Roger Sayle  <roger@eyesopen.com>
12444
12445         * mips-tfile.c (initialize_init_file): Correct endianness test.
12446
12447 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
12448
12449         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
12450         the 'y' constraint.
12451
12452 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
12453
12454         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
12455         saves in a PARALLEL before the register assignments.
12456
12457 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
12458
12459         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
12460         DWARF_FRAME_RETURN_COLUMN to be a general register.
12461         * dwarf2out.c (init_return_column_size): New function, split from...
12462         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
12463         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
12464         to be nongeneral registers.
12465         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
12466         integer registers.
12467         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
12468         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
12469
12470 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
12471
12472         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
12473
12474 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
12475
12476         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
12477         (remove_path): Use can_remove_branch_p and remove_branch instead
12478         of loop_delete_branch_edge.
12479         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
12480         (tree_transform_and_unroll_loop): Remove dead branches immediately.
12481         Update profile using scale_dominated_blocks_in_loop.
12482         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
12483         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
12484         (can_remove_branch_p, remove_branch): Declare.
12485         * tree-cfg.c (tree_can_remove_branch_p): New function.
12486         (tree_cfg_hooks): Add tree_can_remove_branch_p.
12487         * cfgrtl.c (rtl_can_remove_branch_p): New function.
12488         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
12489
12490 2007-02-05  Jan Hubicka  <jh@suse.cz>
12491
12492         PR middle-end/30696
12493         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
12494         nodes in cgraph, don't remove offline copy of the function.
12495
12496 2007-02-04  Jan Hubicka  <jh@suse.cz>
12497
12498         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
12499         vectors might cause maybe_lookup_element_for_expr to be called
12500         on non-sra-candidate.
12501
12502 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
12503
12504         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
12505         config/bfin/bfin.md, config/bfin/predicates.md: Follow
12506         spelling conventions.
12507
12508 2007-02-04  Richard Guenther  <rguenther@suse.de>
12509
12510         PR middle-end/30636
12511         * fold-const.c (try_move_mult_to_index): Make sure to not
12512         overflow one dimension of a multi-dimensional array access.
12513
12514 2007-02-04  Jan Hubicka  <jh@suse.cz>
12515
12516         * passes.c (init_optimization_passes): Reindent.
12517
12518 2007-02-04  Jan Hubicka  <jh@suse.cz>
12519             Eric Botcazou  <ebotcazou@adacore.com>
12520
12521         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
12522         (execute_fixup_cfg): Break out the abnormal goto code.
12523         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
12524         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
12525         (optimize_inline_calls): Call make_nonlocal_label_edges.
12526
12527 2007-02-04  Jan Hubicka  <jh@suse.cz>
12528
12529         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
12530         true when something was changed.
12531         (rename_ssa_copies): When something was changed, do
12532         TODO_remove_unused_locals.
12533         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
12534         add TODO_remove_unused_locals when instruction was removed.
12535
12536 2007-02-04  Jan Hubicka  <jh@suse.cz>
12537
12538         * ipa-inline.c (try_inline): Improve debug output; work on already
12539         inline edges too.
12540         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
12541         call try_inline for already inlined edges too when flattening;
12542         inline also functions that make callee growth but overall unit size
12543         reduce.
12544
12545 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
12546
12547         * config/m32c/bitops.md, config/m32c/jump.md,
12548         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
12549         config/m32r/m32r.h, config/m32r/m32r.md,
12550         config/m32r/predicates.md, config/m68hc11/larith.asm,
12551         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
12552         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
12553         config/mips/mips-protos.h, config/mips/mips.c,
12554         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
12555         config/mn10300/mn10300.h, config/mn10300/predicates.md,
12556         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
12557         spelling conventions.
12558
12559         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
12560         Follow spelling conventions.
12561
12562 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
12563
12564         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
12565         warn about C++0x compatibility.
12566
12567 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
12568
12569         * config/h8300/h8300.c, config/h8300/h8300.h,
12570         config/h8300/h8300.md: Follow spelling conventions.
12571
12572 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
12573
12574         PR middle-end/30667
12575         * combine.c (try_combine): Do not substitute source operand
12576         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
12577
12578 2007-02-03  Jan Hubicka  <jh@suse.cz>
12579
12580         PR gcov-profile/30650
12581         * value-prof.c (stringop_block_profile): Fix handling of size counter;
12582         do not divide by zero for never executed counters.
12583         (tree_find_values_to_profile): Fix counters.
12584         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
12585
12586 2007-02-03  Ian Lance Taylor  <iant@google.com>
12587
12588         * lower-subreg.c (simple_move_operand): New static function,
12589         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
12590         operands.
12591         (simple_move): Call simple_move_operand.
12592         (find_decomposable_subregs): Add special handling of MEMs.
12593         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
12594         meaning of return value.  If we see a hard register, test whether
12595         it can store a word_mode value.  Change all callers.
12596
12597 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12598
12599         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
12600         ftrapv insns and expanders.
12601         (subdi3): Change define_expand operand 1 to arith11_operand, and
12602         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
12603         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
12604         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
12605         respectively.
12606
12607         PR middle-end/30174
12608         * varasm.c (notice_global_symbol): Treat global objects as weak when
12609         flag_shlib is true.
12610
12611 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12612
12613         * emit-rtl.c (dconstpi): Delete.
12614         (dconstsqrt2): New.
12615         (init_emit_once): Delete dconstpi and init dconstsqrt2.
12616         * real.h (dconstpi): Delete.
12617         (dconstsqrt2): New.
12618         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
12619         (fold_builtin_hypot): Likewise.
12620
12621 2007-02-03  Tom Tromey  <tromey@redhat.com>
12622
12623         PR driver/30246
12624         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
12625         -gcoff3, -gxcoff3, -gvms3 implies -dD.
12626
12627 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
12628
12629         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
12630         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
12631         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
12632         config/rs6000/cell.md, config/rs6000/darwin.h,
12633         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
12634         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
12635         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
12636         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
12637         typos.  Follow spelling conventions.
12638         * doc/invoke.texi: Follow spelling conventions.
12639
12640 2007-02-03  Roger Sayle  <roger@eyesopen.com>
12641
12642         * simplify-rtx.c (simplify_relational_operation_1): Implement some
12643         canonicalization transformations that attempt to simplify integer
12644         constant comparisons to become comparisons against zero.
12645
12646 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12647
12648         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
12649         fabs(x)*sqrt(2).
12650         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
12651         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
12652
12653 2007-02-02  Mike Stump  <mrs@apple.com>
12654
12655         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
12656         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
12657         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
12658         generate a branch island.
12659
12660 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
12661
12662         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
12663         (xtensa_legitimate_address_p): New.
12664         (xtensa_legitimize_address): New.
12665         (xtensa_output_addr_const_extra): New.
12666         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
12667         (BASE_REG_P): New.
12668         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
12669         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
12670         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
12671         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
12672         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
12673         (xtensa_legitimize_address): New.
12674         (xtensa_output_addr_const_extra): New.
12675
12676 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
12677
12678         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
12679
12680 2007-02-02  Ian Lance Taylor  <iant@google.com>
12681
12682         * expmed.c (expand_divmod): Add comment.
12683
12684 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
12685
12686         * emit-rtl.c (renumber_insns): Remove.
12687         * flags.h: Remove the extern for flag_renumber_insns.
12688         * rtl.h: Remove the prototype for renumber_insns.
12689         * toplev.c (flag_renumber_insns): Remove.
12690
12691 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
12692
12693         Revert for x86 darwin:
12694         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
12695
12696         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
12697         code before the following patch under TARGET_MACHO.
12698         (ix86_function_value_regno_p): Likewise.
12699
12700 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12701
12702         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
12703         COMPLEX_EXPR.
12704
12705 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12706
12707         PR target/29682
12708         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
12709         general or fp registers.  Add comments.
12710         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
12711
12712 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
12713
12714         * pointer-set.c (insert_aux): Only return insertion slot.
12715         (pointer_set_insert): Adjust.
12716         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
12717         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
12718         pointer_map_traverse): New.
12719         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
12720         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
12721         pointer_map_contains, pointer_map_traverse): Declare.
12722
12723 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
12724
12725         PR middle-end/30473
12726         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
12727         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
12728
12729 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12730
12731         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
12732
12733         (struct _dep): New type.
12734         (dep_t): New typedef.
12735         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
12736         (DEP_STATUS): New access macro.  The macro with the same name was
12737         renamed to DEP_LINK_STATUS.
12738         (dep_init): Declare function
12739
12740         (struct _dep_link): New type.
12741         (dep_link_t): New typedef.
12742         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
12743         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
12744         (DEP_LINK_STATUS): New macro.
12745         (debug_dep_links): New debug function.
12746
12747         (struct _deps_list): New type.
12748         (deps_list_t): New typedef.
12749         (DEPS_LIST_FIRST): New access macro.
12750         (FOR_EACH_DEP_LINK): New cycle macro.
12751         (create_deps_list, free_deps_list, delete_deps_list): Declare
12752         functions.
12753         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
12754         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
12755         (copy_deps_list_change_con): Ditto.
12756
12757         (move_dep_link): Declare function.
12758
12759         (struct _dep_node): New type.
12760         (dep_node_t): New typedef.
12761         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
12762
12763         (struct haifa_insn_data.back_deps): New field to hold backward
12764         dependencies of the insn.
12765         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
12766         to deps_list_t.
12767         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
12768         Change its type to deps_list_t.
12769         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
12770         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
12771         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
12772
12773         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
12774
12775         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
12776
12777         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
12778         all callers.
12779         (dep_cost): Declare.
12780
12781         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
12782         (ds_to_dk, dk_to_ds): New functions.
12783
12784         (init_dep_1): New static function.
12785         (init_dep): New function.
12786         (copy_dep): New static function.
12787
12788         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
12789         functions.
12790         (detach_dep_link): New static function.
12791         (move_dep_link): New function.
12792
12793         (dep_links_consistent_p, dump_dep_links): New static functions.
12794         (debug_dep_links): New debugging function.
12795
12796         (deps_obstack, dl_obstack, dn_obstack): New static variables.
12797
12798         (alloc_deps_list, init_deps_list): New static functions.
12799         (create_deps_list): New function.
12800         (clear_deps_list): New static function.
12801         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
12802         (deps_list_consistent_p, dump_deps_list): New static functions.
12803         (debug_deps_list): New function.
12804         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
12805         functions.
12806         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
12807
12808         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
12809         use new scheduler dependencies lists.
12810         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
12811         (sched_analyze): Ditto.  Initialize dependencies lists.
12812         (add_forw_dep, compute_forward_dependences): Update to use new
12813         scheduler dependencies lists.
12814
12815         (init_dependency_caches): Init deps_obstack.
12816         (free_dependency_caches): Free deps_obstack.
12817
12818         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
12819         new scheduler dependencies lists.
12820         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
12821         (add_back_forw_dep, delete_back_forw_dep): Ditto.
12822
12823         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
12824         Update to use new scheduler dependencies lists.
12825         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
12826         (debug_dependencies): Ditto.
12827         (schedule_region): Update comments.
12828
12829         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
12830         scheduler dependencies lists.
12831         (schedule_ebb): Update comments.
12832
12833         * rtl.def (DEPS_LIST): Remove.
12834
12835         * lists.c (unused_deps_list): Remove.
12836         (free_list): Update assertions.
12837
12838         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
12839         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
12840
12841         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
12842         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
12843
12844         * haifa-sched.c (comments): Update.
12845         (insn_cost1): Remove.  Inline the code into insn_cost ().
12846         (insn_cost): Update to use new scheduler dependencies lists.  Move
12847         processing of the dependency cost to dep_cost ().
12848         (dep_cost): New function.  Use it instead of insn_cost () when
12849         evaluating cost of the dependency.  Use compatible interface to
12850         interact with the target.
12851         (priority): Update to use new scheduler dependencies lists.
12852         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
12853         with greater number of insns that depend on the insn.
12854         (schedule_insn): Update to use new scheduler dependencies lists.  Add
12855         code to free backward dependencies lists.  Inline and optimize code
12856         from resolve_dep () - see PR28071.
12857         (ok_for_early_queue_removal): Update to use new scheduler dependencies
12858         lists.  Update call to targetm.sched.is_costly_dependence hook.
12859
12860         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
12861         scheduler dependencies lists.
12862
12863         (resolve_dep): Remove.  Move the logic to schedule_insn ().
12864         (init_h_i_d): Initialize dependencies lists.
12865
12866         (process_insn_depend_be_in_spec): Rename to
12867         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
12868         dependencies lists.
12869         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
12870         Update to use new scheduler dependencies lists.
12871         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
12872
12873         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
12874         new scheduler dependencies lists.
12875         (build_intra_loop_deps): Ditto.
12876
12877         * target.h (struct _dep): Declare to use in
12878         gcc_target.sched.is_costly_dependence.
12879         (struct gcc_target.sched.adjust_cost): Fix typo.
12880         (struct gcc_target.sched.is_costly_dependence): Change signature to use
12881         single dep_t parameter instead of an equivalent triad.
12882         (struct gcc_target.sched.adjust_cost_2): Remove.
12883
12884         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
12885
12886         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
12887
12888         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
12889         documentation.
12890         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
12891
12892         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
12893         (REG_DEP_TRUE): Document.
12894
12895         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
12896         Change signature to correspond to the targetm.sched.adjust_cost hook.
12897         Update use in TARGET_SCHED_ADJUST_COST_2.
12898         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
12899         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
12900         new scheduler dependencies lists.
12901         (ia64_gen_check): Ditto.
12902
12903         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
12904         dependencies lists.
12905
12906         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
12907         signature to correspond to the targetm.sched.is_costly_dependence hook.
12908         (is_costly_group): Update to use new scheduler dependencies lists.
12909
12910         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
12911         instead of INSN_COST () macro.
12912
12913 2007-02-01  Ian Lance Taylor  <iant@google.com>
12914
12915         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
12916
12917 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
12918
12919         * pa.md (tp_load): Correct mfctl instruction syntax.
12920
12921 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
12922
12923         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
12924         altivec_padding_size calculation on AIX.  Improve comment, add
12925         assert to verify that it's right.
12926
12927         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
12928         64-bit.
12929
12930 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
12931
12932         PR inline-asm/28686
12933         * global.c (global_alloc): Add mising initialization of
12934         ELIMINABLE_REGSET.
12935
12936 2007-02-01  Roger Sayle  <roger@eyesopen.com>
12937
12938         * alias.c (init_alias_analysis): Correct whitespace.
12939         * bb-reorder.c (fix_edges_for_rarely_executed_code,
12940         partition_hot_cold_basic_blocks): Likewise.
12941         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
12942         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
12943         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
12944         fold_builtin_snprintf_chk, fold_builtin_printf,
12945         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
12946         do_mpfr_arg3, do_mpfr_sincos): Likewise.
12947         * cfgcleanup.c (cleanup_cfg): Likewise.
12948         * cfgexpand.c (tree_expand_cfg): Likewise.
12949         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
12950         * function.c (get_next_funcdef_no): Likewise.
12951         * gengtype.c (main): Likewise.
12952         * genmodes.c (main): Likewise.
12953         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
12954         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
12955         * ifcvt.c (noce_emit_move_insn): Likewise.
12956         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
12957         Likewise.
12958         * stor-layout.c (get_best_mode): Likewise.
12959         * tree-ssa-loop-niter.c (get_val_for): Likewise.
12960         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
12961         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
12962         perform_var_substitution, solve_graph): Likewise.
12963         * tree-vrp.c (vrp_finalize): Likewise.
12964
12965 2007-02-01  Ian Lance Taylor  <iant@google.com>
12966
12967         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
12968         high part of a paradoxical subreg, return a constant zero.
12969
12970 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
12971
12972         * toplev.c (lang_dependent_init): Call init_set_costs.
12973         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
12974
12975 2007-02-01  Richard Guenther  <rguenther@suse.de>
12976
12977         PR middle-end/30656
12978         * fold-const.c (fold_negate_expr): Allow negating a
12979         constant if overflow does not change.
12980
12981 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12982
12983         * doc/c-tree.texi (Expression trees): Improve markup.
12984         * doc/tm.texi (Register Classes, Addressing Modes)
12985         (Floating Point): Fix spacing after abbreviations.  Fix some
12986         typos.
12987
12988 2007-02-01  Ben Elliston  <bje@au.ibm.com>
12989
12990         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
12991         * doc/contrib.texi: Likewise.
12992         * doc/install.texi: Likewise.
12993
12994 2007-01-31  Richard Henderson  <rth@redhat.com>
12995             Ian Lance Taylor  <iant@google.com>
12996
12997         * lower-subreg.c: New file.
12998         * rtl.def (CONCATN): Define.
12999         * passes.c (init_optimization_passes): Add pass_lower_subreg and
13000         pass_lower_subreg2.
13001         * emit-rtl.c (update_reg_offset): New static function, broken out
13002         of gen_rtx_REG_offset.
13003         (gen_rtx_REG_offset): Call update_reg_offset.
13004         (gen_reg_rtx_offset): New function.
13005         * regclass.c: Revert patch of 2006-03-05, restoring
13006         reg_scan_update.
13007         (clear_reg_info_regno): New function.
13008         * dwarf2out.c (concatn_loc_descriptor): New static function.
13009         (loc_descriptor): Handle CONCATN.
13010         * common.opt (fsplit_wide_types): New option.
13011         * opts.c (decode_options): Set flag_split_wide_types when
13012         optimizing.
13013         * timevar.def (TV_LOWER_SUBREG): Define.
13014         * rtl.h (gen_reg_rtx_offset): Declare.
13015         (reg_scan_update): Declare.
13016         * regs.h (clear_reg_info_regno): Declare.
13017         * tree-pass.h (pass_lower_subreg): Declare.
13018         (pass_lower_subreg2): Declare.
13019         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
13020         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
13021         -fsplit-wide-types.
13022         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
13023         * Makefile.in (OBJS-common): Add lower-subreg.o.
13024         (lower-subreg.o): New target.
13025
13026 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
13027
13028         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
13029
13030 2007-01-31  Anatoly Sokolov <aesok@post.ru>
13031
13032         PR target/19087
13033         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
13034
13035 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13036
13037         PR middle-end/29335
13038         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
13039
13040 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
13041
13042         * cfgloop.h: Include vec-prim.h.
13043         (enum li_flags): Remove LI_ONLY_OLD.
13044         (loop_iterator): Changed.
13045         (fel_next, fel_init): Iterate over loop tree.
13046         (FOR_EACH_LOOP_BREAK): New macro.
13047         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
13048         FOR_EACH_LOOP.
13049         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
13050         * modulo-sched.c (sms_schedule): Ditto.
13051         * tree-vectorizer.c (vectorize_loops): Ditto.
13052         * doc/loop.texi: Update information on loop numbering and behavior of
13053         FOR_EACH_LOOP wrto new loops.
13054         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
13055         add_to_evolution_1): Test nestedness of loops instead of comparing
13056         their numbers.
13057         * tree-chrec.c (chrec_fold_plus_poly_poly,
13058         chrec_fold_multiply_poly_poly, chrec_evaluate,
13059         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
13060         reset_evolution_in_loop): Ditto.
13061         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
13062
13063 2007-01-31  Dirk Mueller  <dmueller@suse.de>
13064
13065         * c-common.c (warn_about_parentheses): Separate warning about
13066         un-parenthized sequence of comparison operators from the one
13067         which is supposed to warn about x <= y <= z.
13068
13069 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
13070
13071         * optabs.h (enum optab_index): Add new OTI_isinf.
13072         (isinf_optab): Define corresponding macro.
13073         * optabs.c (init_optabs): Initialize isinf_optab.
13074         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
13075         patterns.
13076         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
13077         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
13078         using isinf_optab.
13079         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
13080         expand_builtin_interclass_mathfn.
13081         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
13082         * config/i386/i386.md (UNSPEC_FXAM): New constant.
13083         (fxam<mode>2_i387): New insn pattern.
13084         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
13085         built-in functions as x87 inline asm.
13086
13087 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
13088
13089         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
13090
13091 2007-01-30  Eric Christopher  <echristo@apple.com>
13092
13093         * config.gcc: Add geode.
13094
13095 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
13096
13097         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
13098         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
13099         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
13100         value-prof.c: Fix comment typos.
13101
13102 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13103
13104         PR c++/24745
13105         * doc/invoke.texi (Wpointer-arith): Document warning.
13106
13107 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
13108
13109         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
13110         the list of discrepancies from the draft TR.
13111
13112 2007-01-30  Dirk Mueller  <dmueller@suse.de>
13113
13114         PR c++/30601
13115         * doc/invoke.texi (-Wreturn-type): Update description to
13116         match new behavior.
13117
13118 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
13119
13120         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
13121
13122 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
13123
13124         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
13125         to handle optabs that operate on floating point input argument and
13126         output to integer output.
13127         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
13128         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
13129         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
13130         expand_builtin_interclass_mathfn ().
13131         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
13132         (ilogbsi2): Remove.
13133         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
13134         ilogbl built-in functions as x87 intrinsics.
13135
13136 2007-01-30  Richard Guenther  <rguenther@suse.de>
13137
13138         PR middle-end/27657
13139         * dwarf2out.c (reference_to_unused): Query varpool if the
13140         variable was output.
13141
13142 2007-01-30  Richard Guenther  <rguenther@suse.de>
13143
13144         PR middle-end/30313
13145         * passes.c (execute_one_pass): Reset in_gimple_form to not
13146         confuse non-unit-at-a-time mode.
13147
13148 2007-01-29  Roger Sayle  <roger@eyesopen.com>
13149             Richard Guenther  <rguenther@suse.de>
13150
13151         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
13152         avoid undefined behaviour on overflow.  Use force_fit_type_double
13153         to construct the constant with the specified TREE_OVERFLOW.
13154
13155 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
13156
13157         * config/dfp-bit.c: Add parameterized support for fp exceptions.
13158         * config/dfp-bit.h: Ditto.
13159
13160 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13161
13162         * c-decl.c (pop_scope): Replace warnings with call to
13163         warn_for_unused_label.
13164         * c-common.h (warn_for_unused_label): Declare.
13165         * c-common.c (warn_for_unused_label): Define.
13166
13167 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13168
13169         * tree-optimize.c (update_inlined_to_pointers): Delete unused
13170         function.
13171
13172 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
13173
13174         * Makefile.in (USER_H): Remove decfloat.h.
13175         * ginclude/decfloat.h: Delete, moving contents to ...
13176         * ginclude/float.h: Add support for decimal floating point,
13177         guarded by __STDC_WANT_DEC_FP__.
13178
13179 2007-01-29  Mike Stump  <mrs@apple.com>
13180
13181         * doc/gccint.texi (Top): Rename Loop Representation to Loop
13182         Analysis and Representation to resolve case insensitive conflict.
13183         * doc/loop.texi (Loop Analysis and Representation): Likewise.
13184
13185 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
13186
13187         * tree.h (struct tree_memory_tag): Add aliases member.
13188         (MTAG_ALIASES): New macro.
13189         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
13190         (add_may_alias): Remove pointer-set. Update for may_aliases being
13191         a bitmap.
13192         (mark_aliases_call_clobbered): Update for may_aliases being a
13193         bitmap.
13194         (compute_tag_properties): Ditto.
13195         (create_partition_for): Ditto.
13196         (compute_memory_partitions): Ditto.
13197         (dump_may_aliases_for): Ditto.
13198         (is_aliased_with): Ditto.
13199         (add_may_alias_for_new_tag): Ditto.
13200         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
13201         (compute_is_aliased): New function.
13202         (compute_may_aliases): Call compute_is_aliased).
13203         (init_alias_info): Initialize alias_bitmap_obstack.
13204         (union_alias_set_into): New function.
13205         (compute_flow_sensitive_aliasing): Use union_aliases_into.
13206         (have_common_aliases_p): Rewrite to take two bitmaps and use
13207         intersection.
13208         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
13209         Update for bitmaps.
13210         (finalize_ref_all_pointers): Update for add_may_alias changes.
13211         (new_type_alias): Ditto.
13212         * tree-flow-inline.h (may_aliases): Return a bitmap.
13213         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
13214         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
13215         may_aliases being a bitmap.
13216         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
13217         may_aliases now returns a bitmap.
13218         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
13219         being a bitmap.
13220         * tree-ssa-operands.c (add_virtual_operand): Update for
13221         may_aliases being a bitmap.
13222
13223 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
13224
13225         PR tree-optimization/30630
13226         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
13227         variable as changed.
13228
13229 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
13230
13231         PR c++/28266
13232         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
13233         expanded only once even if an error occurs.
13234
13235 2007-01-29  Ben Elliston  <bje@au.ibm.com>
13236
13237         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
13238         (__gcov_average_profiler): Likewise.
13239         (__gcov_ior_profiler): Likewise.
13240         (__gcov_merge_ior): Likewise.
13241
13242 2007-01-28  Jan Hubicka  <jh@suse.cz>
13243
13244         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
13245         * value-prof.c (stringop_block_profile): Likewise.
13246
13247 2007-01-28  Jan Hubicka  <jh@suse.cz>
13248
13249         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
13250         variant handling histograms; add wrapper.
13251         (clear_storage_via_libcall): Export.
13252         (emit_block_move_hints): Break out from ...; add histograms.
13253         (emit_block_move): ... this one.
13254         (clear_storage_hints): Break out from ...; add histograms.
13255         (clear_storage): ... this one.
13256         (set_storage_via_memset): Handle histogram.
13257         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
13258         (clear_storage_hints, clear_storage_via_libcall): Declare.
13259         (set_storage_via_setmem): Update prototype.
13260         * doc/md.texi (movmem, setmem): Document new arguments.
13261
13262         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
13263         new histograms.
13264         (stringop_block_profile): New global function.
13265         (tree_stringops_values_to_profile): Profile block size and alignment.
13266         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
13267         HIST_TYPE_IOR.
13268         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
13269         (stringop_block_profile): Declare.
13270         * builtins.c: Include value-prof.h.
13271         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
13272         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
13273         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
13274         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
13275         * profile.c (instrument_values): Add new counters.
13276         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
13277         calls.
13278         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
13279         (tree_init_edge_profiler): Build new profilers.
13280         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
13281         (pass_tree_profile): Add dump.
13282         (tree_profile_hooks): Update.
13283         * Makefile.in (LIBGCOV): Add new constants.
13284         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
13285         __gcov_ior_profiler): New.
13286         * i386.md (movmem/setmem expanders): Add new optional arguments.
13287
13288 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
13289
13290         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
13291
13292 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
13293
13294         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
13295         (tree_unswitch_single_loop): Pass eni_size_weights to
13296         tree_num_loop_insns.
13297         * tree-ssa-loop-manip.c: Include tree-inline.h.
13298         (can_unroll_loop_p): Pass eni_size_weights to
13299         tree_num_loop_insns.
13300         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
13301         Pass eni_size_weights to estimate_num_insns.
13302         * tree.h (init_inline_once): Export.
13303         * toplev.c (backend_init): Call init_inline_once.
13304         * cgraphunit.c (cgraph_process_new_functions,
13305         cgraph_analyze_function): Pass eni_inlining_weights to
13306         estimate_num_insns.
13307         * ipa-inline.c (compute_inline_parameters): Ditto.
13308         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
13309         to estimate_num_insns.
13310         (try_unroll_loop_completely): Pass eni_size_weights to
13311         tree_num_loop_insns.
13312         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
13313         ot estimate_num_insns.
13314         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
13315         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
13316         * tree-inline.c (eni_inlining_weights, eni_size_weights,
13317         eni_time_weights): New variables.
13318         (init_inline_once): Initialize them.
13319         (struct eni_data): Mew.
13320         (estimate_num_insns_1, estimate_num_insns): Use weights.
13321         * tree-inline.h (struct eni_weights_d): New.
13322         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
13323         (estimate_num_insns): Declaration changed.
13324         * cfgloop.h (tree_num_loop_insns): Declaration changed.
13325         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
13326         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
13327
13328 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
13329
13330         * tree-data-ref.c (conflict_fn): Assert that the number of affine
13331         relations in the conflict function is valid.
13332
13333 2007-01-27  Ian Lance Taylor  <iant@google.com>
13334
13335         * common.opt: Add fstrict-overflow.
13336         * opts.c (decode_options): Set flag_strict_overflow if -O2.
13337         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
13338         (TYPE_OVERFLOW_UNDEFINED): Define.
13339         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
13340         Replace all uses.
13341         * tree.h (TYPE_TRAP_SIGNED): Don't define.
13342         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
13343         (fold_negate_expr): Likewise.
13344         (make_range): Likewise.
13345         (extract_muldiv_1): Likewise.
13346         (maybe_canonicalize_comparison): Likewise.
13347         (fold_comparison): Likewise.
13348         (fold_binary): Likewise.
13349         (tree_expr_nonnegative_p): Likewise.
13350         (tree_expr_nonzero_p): Likewise.
13351         * tree-vrp.c (compare_values): Likewise.
13352         (extract_range_from_binary_expr): Likewise.
13353         (extract_range_from_unary_expr): Likewise.
13354         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
13355         Likewise.
13356         (nowrap_type_p): Likewise.
13357         * tree-scalar-evolution.c (simple_iv): Likewise.
13358         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
13359         (build_range_check): Likewise.
13360         (extract_muldiv_1): Likewise.
13361         (fold_comparison): Likewise.
13362         * tree-vrp.c (vrp_int_const_binop): Likewise.
13363         (extract_range_from_unary_expr): Likewise.
13364         * convert.c (convert_to_integer): Likewise.
13365         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
13366         (fold_comparison): Likewise.
13367         (fold_binary): Likewise.
13368         * optabs.c (optab_for_tree_code): Likewise.
13369         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
13370         * simplify-rtx.c (simplify_const_relational_operation): Check
13371         flag_strict_overflow and flag_trapv.
13372         (simplify_const_relational_operation): Likewise.
13373         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
13374         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
13375         -fstrict-overflow.
13376
13377 2007-01-27  Roger Sayle  <roger@eyesopen.com>
13378
13379         * tree.c (tree_fold_gcd): Delete.
13380         * tree.h (tree_fold_gcd): Remove prototype.
13381         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
13382         test whether one constant integer is a multiple of another.  Instead
13383         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
13384         * fold-const.c (multiple_of_p):  We've determined both TOP and
13385         BOTTOM are integer constants so we can call int_const_binop directly
13386         instead of the more generic const_binop.
13387
13388 2007-01-27  Roger Sayle  <roger@eyesopen.com>
13389
13390         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
13391         1*X check that the constant hasn't overflowed, to preserve the
13392         TREE_OVERFLOW bit.
13393         (round_up): Provide an efficient implementation when rouding-up an
13394         INTEGER_CST to a power-of-two.
13395
13396 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13397
13398         * doc/sourcebuild.texi: Add comma for clarity.
13399         * doc/extend.texi: Fix some typos.
13400         * doc/passes.texi: Likewise.
13401         * doc/cppinternals.texi: Likewise.
13402         * doc/c-tree.texi: Likewise.
13403         * doc/tree-ssa.texi: Likewise.
13404         * doc/install.texi: Likewise.
13405
13406 2007-01-27  Jan Hubicka  <jh@suse.cz>
13407
13408         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
13409         (pass_sra): Do not require alias information.
13410         * passes.c (init_optimization_passes): Add SRA
13411
13412 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
13413
13414         * tracer.c (rest_of_handle_tracer): We already cleaned
13415         up the CFG in tracer() so don't do it here again.
13416         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
13417         cleanup_cfg here, either.  And don't call renumber_insns.
13418
13419         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
13420         and BB_HEAD are in the insn stream here.  Instead make sure
13421         that BB_INSN is valid on all insns.  Also, do check here that
13422         there are no pending branch predictions...
13423         (rtl_verify_flow_info): ...instead of doing it here.  Checks
13424         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
13425         here.
13426
13427 2007-01-26  Roger Sayle  <roger@eyesopen.com>
13428
13429         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
13430         function to simplify/factorize operand order canonicalization.
13431         (ix86_fixup_binary_operands): Reorganize using the above function.
13432         (ix86_binary_operator_ok): Likewise.
13433
13434 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
13435
13436         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
13437         file scope from optimize_attrs.
13438         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
13439         up search.
13440         (optimize_attrs): Clear insn_code_values after freeing it.
13441
13442 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
13443
13444         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
13445         a parts.base assignment.
13446
13447 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
13448
13449         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
13450         (compute_subscript_distance, initialize_data_dependence_relation,
13451         finalize_ddr_dependent, analyze_ziv_subscript,
13452         analyze_siv_subscript_cst_affine,
13453         compute_overlap_steps_for_affine_univar,
13454         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
13455         analyze_siv_subscript, analyze_miv_subscript,
13456         analyze_overlapping_iterations, subscript_dependence_tester_1,
13457         compute_self_dependence, free_dependence_relation): Work
13458         with affine_fn instead of chrecs.
13459         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
13460         common_affine_function, affine_function_base,
13461         affine_function_constant_p, affine_fn_op, affine_fn_plus,
13462         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
13463         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
13464         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
13465         (all_chrecs_equal_p): Removed.
13466         * tree-data-ref.h (affine_fn, conflict_function): New types.
13467         (struct subscript): Change type of conflicting_iterations_in_a
13468         and conflicting_iterations_in_b.
13469
13470 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
13471
13472         PR other/30182
13473         * config/pa/pa.h (TARGET_HPUX_11): New.
13474         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
13475         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
13476
13477 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
13478         Richard Guenther  <rguenther@suse.de>
13479
13480         * tree-ssa-structalias.c (solve_graph): Handle case
13481         we merged the variable to another.
13482
13483 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13484
13485         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
13486         functions.
13487
13488         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
13489         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
13490
13491 2007-01-25  DJ Delorie  <dj@redhat.com>
13492
13493         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
13494         allow changes to modes which don't fit in those registers.
13495
13496         * reload1.c (choose_reload_regs): Check for invalid subregs before
13497         computing their locations, not after.
13498
13499 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
13500
13501         PR 25127
13502         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
13503         save Altivec registers in an eh_return function.
13504         (compute_vrsave_mask): Likewise.
13505         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
13506         for saving Altivec registers.
13507         (rs6000_emit_prologue): Don't allocate stack twice in
13508         eh_return function.  Correct expected value of altivec_save_offset
13509         when using save_world.  Describe save of R0 to stack when using
13510         save_world.  Describe stack pointer adjustment when using
13511         save_world.  Remove duplicated eh_return parameter register saving.
13512         Update sp_offset variable after save_world.
13513         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
13514         darwin-world.asm.
13515         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
13516         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
13517         implies Altivec.
13518
13519 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
13520
13521         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
13522
13523 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
13524
13525         PR other/30182
13526         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
13527         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
13528
13529 2007-01-25  Richard Guenther  <rguenther@suse.de>
13530
13531         * doc/invoke.texi (-Wcoverage-mismatch): Document.
13532         * common.opt (-Wcoverage-mismatch): New warning option.
13533         * coverage.c (get_coverage_counts): Ignore coverage mismatch
13534         if -Wcoverage-mismatch is given.
13535
13536 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
13537
13538         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
13539         (ipcp_driver): Change to static definition.
13540         Add dumping of the ifunctions.
13541         (constant_val_insert): Remove unused parameter. Support for SSA.
13542         (ipcp_propagate_const): Support for SSA.
13543         (ipcp_profile_bb_print): Print only analyzed nodes.
13544         (ipcp_replace_map_create): Remove support for Fortran constant
13545         for now.
13546         * ipa-prop.c (ipa_method_modify_stmt,
13547         ipa_callsite_compute_param): Support for SSA.
13548         * ipa-prop.h (ipcp_driver): Remove declaration.
13549         (IS_VALID_TREE_MAP_INDEX): Add define.
13550
13551 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
13552
13553         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
13554
13555 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13556
13557         PR middle-end/30447
13558         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
13559         constant argument to cabs and do it without checking for
13560         -funsafe-math-optimizations.
13561
13562 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
13563
13564         * c-common.h (RID_FIRST_CXX0X): New.
13565         (RID_LAST_CXX0X): New.
13566         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
13567         by -Wall.
13568         * c.opt (Wc++0x-compat): New.
13569         * doc/invoke.texi (-Wc++0x-compat): Document.
13570
13571 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13572
13573         * builtins.c (fold_builtin_carg): New.
13574         (fold_builtin_1): Use it.
13575
13576 2007-01-24  Jan Hubicka  <jh@suse.cz>
13577
13578         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
13579
13580         * ipa-inline.c (initial_insns, max_insns): Delete.
13581         (compute_max_insns): New function.
13582         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
13583         of insns as base for code growth.
13584         (cgraph_decide_inlining): Make initial_insns local; do not compute
13585         max_insns.
13586         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
13587         * doc/invoke.texi (inline-unit-growth): Update docs.
13588
13589 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
13590
13591         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
13592         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
13593         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
13594         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
13595         for CPUs that have PTA_CX16 set.
13596
13597         PR middle-end/27416
13598         * gimplify.c (omp_check_private): New function.
13599         (gimplify_scan_omp_clauses): Use it for
13600         firstprivate/lastprivate/reduction.
13601
13602         PR middle-end/30494
13603         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
13604         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
13605
13606         PR middle-end/30421
13607         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
13608         If lower_lastprivate_clauses emits some statements, append them
13609         to dlist rather than body_p and to body_p append an initializer.
13610         (lower_omp_for): Adjust caller.
13611
13612 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
13613
13614         * target.h (globalize_decl_name): New.
13615         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
13616         * output.h (default_globalize_decl_name): New.
13617         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
13618         globalize_label.
13619         (globalize_decl): Ditto.
13620         (default_globalize_decl_name): New.
13621         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
13622         (ia64_handle_version_id_attribute): New.
13623         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
13624         (ia64_asm_output_external): Use globalize_decl_name instead
13625         of globalize_label.
13626         * doc/extend.texi (version_id): New pragma.
13627         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
13628
13629 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13630
13631         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
13632         _uleb128_t and _Unwind_SWord with _sleb128_t.
13633         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
13634         uw_frame_state_for, uw_update_context_1): Likewise.
13635         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
13636         * unwind-pe.h (read_uleb128, read_sleb128,
13637         read_encoded_value_with_base): Likewise.
13638         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
13639
13640 2007-01-24  Richard Guenther  <rguenther@suse.de>
13641
13642         * builtins.c (expand_builtin_cexpi): Get the fndecl
13643         for cexp in the correct way.
13644
13645 2007-01-24  Jan Hubicka  <jh@suse.cz>
13646
13647         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
13648
13649 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13650
13651         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
13652         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
13653         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
13654         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
13655         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
13656         __SIZEOF_PTRDIFF_T__.
13657         * doc/cpp.texi: Documentation for the new builtin macros added.
13658
13659 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
13660
13661         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
13662         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
13663         instead of operands[2] to avoid access past the end of array.
13664
13665 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
13666
13667         * reload1.c (emit_reload_insns): Pass the reload register
13668         for a non-spill output reload through forget_old_reloads_1.
13669
13670 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
13671
13672         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
13673         _SOFT_DOUBLE if doubles use software floating-point.
13674         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
13675         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
13676         * config/rs6000/darwin-ldouble.c: Also compile functions for
13677         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
13678         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
13679         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
13680         commented-out long double override.
13681         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
13682         * config/rs6000/eabispe.h: Likewise.
13683         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
13684         long double for non-SPE.
13685         (rs6000_handle_option): Likewise.
13686         (invalid_e500_subreg): Disallow more subregs involding DImode,
13687         DFmode, TImode or TFmode.
13688         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
13689         E500 double.
13690         (legitimate_lo_sum_address_p): Also check for TFmode for E500
13691         double.
13692         (rs6000_legitimize_address): Also handle TFmode for E500 double.
13693         (rs6000_legitimize_reload_address): Also handle TFmode for E500
13694         double.
13695         (rs6000_legitimate_address): Also check for TFmode for E500
13696         double.
13697         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
13698         (spe_build_register_parallel): Handle TFmode and TCmode.
13699         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
13700         double.
13701         (function_arg): Handle TFmode and TCmode for E500 double.
13702         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
13703         in general.
13704         (print_operand): Handle TFmode and TImode for %y.
13705         (rs6000_generate_compare): Handle TFmode comparisons for E500
13706         double.
13707         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
13708         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
13709         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
13710         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
13711         TFmode for E500 double.
13712         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
13713         (floatsidf2): Enable for E500 double.
13714         (movtf_softfloat): Use rs6000_nonimmediate_operand.
13715         (extenddftf2): Change to extenddftf2_fprs.
13716         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
13717         depending on TARGET_E500_DOUBLE.
13718         (extendsftf2): Enable for E500 double.
13719         (trunctfdf2): Enable for E500 double.
13720         (trunctfsf2): Change to trunctfsf2_fprs.
13721         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
13722         depending on TARGET_E500_DOUBLE.
13723         (floatsitf2): Enable for E500 double.
13724         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
13725         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
13726         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
13727         (negtf2): Change to negtf2_internal.
13728         (negtf2): New expander.
13729         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
13730         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
13731         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
13732         (movdi_internal32): Use rs6000_nonimmediate_operand.
13733         (unnamed splitter): Likewise.
13734         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
13735         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
13736         (SPE64TF, DITI): New mode macros.
13737         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
13738         modes.
13739         (frob_tf_ti): New.
13740         (frob_<mode>_di_2): New.
13741         (frob_tf_di_8_2): New.
13742         (frob_di_df): Change to frob_di_<mode>; allow more modes.
13743         (frob_ti_tf): New.
13744         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
13745         more modes.
13746         (frob_ti_<mode>_8_2): New.
13747         (frob_ti_tf_2): New.
13748         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
13749         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
13750         TFmode.
13751         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
13752         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
13753         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
13754         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
13755         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
13756         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
13757         tsttflt_gp): New.
13758
13759 2007-01-23  Ian Lance Taylor  <iant@google.com>
13760
13761         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
13762         insn-*.o first.
13763         (OBJS-archive): Reformat, alphabetize.
13764         (OBJS): Change out_object_file to OBJS-md.
13765
13766 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
13767
13768         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
13769         JUMP_P and CALL_P predicates where applicable.
13770         * config/i386/i386.c: Ditto.
13771         * config/i386/i386.md: Ditto.
13772         * config/i386/mmx.md: Ditto.
13773         * config/i386/predicates.md: Ditto.
13774
13775 2007-01-22  Andreas Schwab  <schwab@suse.de>
13776
13777         * config/m68k/m68k.h: Fix comment.
13778
13779 2007-01-22  Jan Hubicka  <jh@suse.cz>
13780
13781         * passes.c (init_optimization_passes): Do not rerun
13782         pass_early_warn_uninitialized.
13783
13784 2007-01-22  Richard Guenther  <rguenther@suse.de>
13785
13786         PR tree-optimization/30038
13787         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
13788         function.
13789         (execute_cse_sincos_1): Likewise.
13790         (execute_cse_sincos): Likewise.
13791         (gate_cse_sincos): Likewise.
13792         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
13793         the cexpi() canonicalization of sincos().
13794         * tree-pass.h (pass_cse_sincos): Declare.
13795         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
13796
13797 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
13798
13799         PR rtl-optimization/29329
13800         * combine.c (replaced_rhs_insn): Rename to i2mod.
13801         (replaced_rhs_value): Rename to i2mod_new_rhs.
13802         (i2mod_old_rhs): New global variable.
13803         (combine_instructions): Adjust for above change.  Save a copy of
13804         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
13805         note are substituted in the second instruction.
13806         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
13807         ditch the note if it pertains to the second eliminated register
13808         and this register is mentioned in i2mod_old_rhs.
13809
13810         Revert:
13811         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
13812
13813         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
13814         the insn to which the note was originally attached.
13815
13816 2007-01-21  Jan Hubicka  <jh@suse.cz>
13817
13818         * ipa-inline.c (inlining_mode): Comment, move up.
13819         (cgraph_decide_inlining_incrementally): Do not perform inlining
13820         itself; fix handling of flattening of self recursive functions.
13821         (cgraph_find_cycles): Remove.
13822         (cgraph_flatten_node): Remove.
13823         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
13824         (try_inline): New function.
13825         (cgraph_early_inlining): Update call of
13826         cgraph_decide_inlining_incrementally.  Apply inlining here.
13827         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
13828
13829 2007-01-21  Dirk Mueller  <dmueller@suse.de>
13830
13831         PR bootstrap/30511
13832         * tree-vrp.c (check_array_bounds): do not warn
13833         about ADDR_EXPR's of ARRAY_REF's which are immediately
13834         used in binary expressions.
13835
13836 2007-01-21  Ira Rosen  <irar@il.ibm.com>
13837
13838         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
13839         read_write_dep and macros for its access.
13840         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
13841         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
13842         argument, call vect_check_interleaving for every independent pair of
13843         data-refs. Mark loads that access the same memory location as a store
13844         in the loop.
13845         (vect_check_dependences): Remove.
13846         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
13847         call, fix the call to vect_analyze_data_ref_dependence.
13848         (vect_analyze_data_ref_access): For statements that access the same
13849         data-ref, check that they are not stores; for loads, check that there
13850         is no store that access the same location.
13851
13852 2007-01-20  Roger Sayle  <roger@eyesopen.com>
13853             Joseph Myers  <joseph@codesourcery.com>
13854
13855         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
13856         (-fdump-rtl-stack): Likewise.
13857         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
13858         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
13859         (-mpt-fixed): Use @minus{} for minus sign.
13860         (Using Precompiled Headers): Fix under/overfull hbox.
13861
13862 2007-01-20  Jan Hubicka  <jh@suse.cz>
13863
13864         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
13865         place within annotation.
13866
13867 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13868
13869         * pa.c (output_move_double): Change array size of xoperands to 4.
13870
13871 2007-01-20  Jan Hubicka  <jh@suse.cz>
13872
13873         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
13874         as temporary.
13875
13876 2007-01-19  Ian Lance Taylor  <iant@google.com>
13877
13878         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
13879         constant to unsigned HOST_WIDE_INT before negating.
13880
13881 2007-01-19  Ian Lance Taylor  <iant@google.com>
13882
13883         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
13884         to unsigned.
13885         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
13886         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
13887         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
13888         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
13889         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
13890         (realloc_vdef, realloc_vuse): Change second parameter to
13891         unsigned.
13892         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
13893         fields to unsigned.
13894         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
13895         unsigned. Change x and lim locals to unsigned.
13896         (realloc_vdef, realloc_vuse): Change num_elem parameter to
13897         unsigned.
13898         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
13899         (copy_virtual_operands): Change i and n locals to unsigned.
13900
13901 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13902
13903         PR middle-end/29335
13904         * builtins.c (fold_builtin_1): Handle builtin fdim.
13905
13906 2007-01-20  Jan Hubicka  <jh@suse.cz>
13907
13908         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
13909         * tree-ssa-structalias.c (compute_points_to_sets): Do call
13910         init_alias_heapvars.
13911         (init_alias_heapvars): Initialize only when not already initialized.
13912         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
13913
13914 2007-01-19  Roger Sayle  <roger@eyesopen.com>
13915
13916         * common.opt (fsigned-zeros): New command line option.
13917         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
13918         of flag_unsafe_math_optimizations.
13919         * opts.c (set_fast_math_flags): The -ffast-math command line option
13920         implies -fno-signed-zeros.
13921         (fast_math_flags_set_p): Likewise.
13922
13923         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
13924         the documentation of -ffast-math appropriately.  Wrap long lines.
13925
13926 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
13927
13928         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
13929         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
13930
13931 2007-01-19  Tomas Bily  <tbily@suse.cz>
13932
13933         * cgraphunit.c (cgraph_finalize_function): Updating of pid
13934         * tree-profile.c:
13935         (tree_init_ic_make_global_vars): New function
13936         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
13937         (tree_gen_ic_profiler): New function
13938         (tree_gen_ic_func_profiler): New function
13939         (tree_profiling): Added calling of tree_gen_ic_func_profiler
13940         (tree_profile_hooks): Added hook for indirec/virtual calls
13941         * value-prof.c (tree_find_values_to_profile): New case for
13942         indirect calls
13943         (tree_values_to_profile): Call for determining indirect/virtual
13944         counters
13945         (tree_indirect_call_to_profile): New function
13946         (tree_ic_transform): New function
13947         (tree_ic): New function
13948         (find_func_by_pid): New function
13949         (init_pid_map): New function
13950         (tree_value_profile_transformations): Added check for
13951         indirect/virtual call transformation
13952         * value-prof.h (enum hist_type): New counter type for
13953         indirect/virtual calls
13954         (profile_hooks): Added new hook for profiling indirect/virtual
13955         calls
13956         * profile.c (instrument_values): New case for indirect/virtual
13957         call added
13958         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
13959         (GCOV_COUNTER_V_INDIR): New counter type
13960         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
13961         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
13962         call added
13963         * cgraph.c: Definition of cgraph_max_pid
13964         (cgraph_create_node): Default init of pid attribute
13965         * cgraph.h: Declaration of cgraph_max_pid
13966         (struct cgraph_node): Added pid attribute
13967         * libgcov.c (__gcov_indirect_call_profiler): New function
13968         (__gcov_one_value_profiler_body): New function
13969         (__gcov_one_value_profiler): Body was moved to
13970         __gcov_one_value_profiler_body and calls it
13971
13972 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
13973
13974         * doc/gty.texi (Options): Document the mark_hook option to GTY.
13975         * gengtype.c (write_types_data, write_func_for_structure,
13976         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
13977         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
13978         (walk_type, write_func_for_structure): Generate the mark_hook if
13979         needed.
13980
13981 2007-01-19  Jan Hubicka  <jh@suse.cz>
13982
13983         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
13984         'early' argument take inlining mode argument specifying whether to
13985         inline for size/speeed or all functions; add support for flattening;
13986         improve dumpting.
13987         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
13988
13989 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13990
13991         PR c++/17947
13992         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
13993         the name of the declared identifier.
13994
13995 2007-01-19  Dirk Mueller  <dmueller@suse.de>
13996
13997         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
13998         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
13999         duplicate evaluation.
14000
14001 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
14002
14003         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
14004         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
14005         to XFMode, use acosxf2 and truncate result to requested mode.
14006         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
14007         (asin<mode>2): Similarly, with asin expanders.
14008         (*fscalexf4_i387): Rename from *fscalexf4.
14009         (expNcorexf3): New expander.
14010         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
14011         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
14012         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
14013         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
14014         patterns for SSE math.
14015         (exp10<mode>2): Similarly, with exp10 expanders.
14016         (exp2<mode>2): Similarly, with exp2 expanders.
14017         (expm1<mode>2): Similarly, with expm1 expanders.
14018         (ldexp<mode>3): Similarly, with ldexp expanders.
14019         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
14020         Use gen_truncxf<mode>2_i387_noop to truncate result.
14021
14022 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14023
14024         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
14025         for ColdFire targets.
14026
14027 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
14028             Richard Sandiford  <richard@codesourcery.com>
14029
14030         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
14031         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
14032         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
14033         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
14034         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
14035         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
14036
14037 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14038
14039         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
14040         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
14041         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
14042         (*adddi_dilshr32_cf): New pattern.
14043         (adddi3, subdi3): Remove first alternatives.
14044
14045 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14046
14047         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
14048         implemented using move.l, do not use its cc result for floating-point
14049         comparisons.
14050
14051 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14052
14053         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
14054         from accepting 's' constraints if flag_pic.
14055
14056 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14057
14058         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
14059         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
14060         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
14061         condition from TARGET_68881 to TARGET_HARD_FLOAT.
14062
14063 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
14064
14065         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
14066         ColdFire alternatives.
14067         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
14068         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
14069         architectures that support ff1 instruction.
14070
14071 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14072             Julian Brown  <julian@codesourcery.com>
14073
14074         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
14075         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
14076         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
14077         Add commentary.
14078
14079 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14080
14081         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
14082         and return a bool.
14083         (output_move_const_into_data_reg, output_move_simode_const): Delete.
14084         * config/m68k/m68k.c (const_method, const_int_cost): Take a
14085         HOST_WIDE_INT instead of an rtx.
14086         (m68k_rtx_costs): Update call accordingly.
14087         (output_move_const_into_data_reg): Likewise.  Fix formatting.
14088         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
14089         Return a bool.
14090         (output_move_simode_const): Update calls after above changes.
14091         Rework to use automatic variables and predicates like MEM_P.
14092         * config/m68k/m68k.md (pushexthisi_const): Update call to
14093         valid_mov3q_const.
14094
14095 2007-01-19  Dirk Mueller  <dmueller@suse.de>
14096
14097         * tree-ssa-alias.c (perform_var_substitution): Fix typo
14098         in dump_flags test.
14099
14100 2007-01-19  Richard Guenther  <rguenther@suse.de>
14101
14102         * builtins.c (expand_builtin_cexpi): Fall back to expanding
14103         via cexp in case sincos is not available.
14104
14105 2007-01-19  Richard Guenther  <rguenther@suse.de>
14106
14107         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
14108         * defaults.h (TARGET_HAS_SINCOS): Default to off.
14109         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
14110         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
14111         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
14112         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
14113         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
14114         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
14115
14116 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
14117
14118         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
14119         New insn patterns.
14120         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
14121         (atan2xf3): Directly generate RTL pattern.
14122         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
14123         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
14124         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
14125         disable patterns for SSE math.
14126         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
14127         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
14128         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
14129         disable patterns for SSE math.
14130
14131 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
14132
14133         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
14134
14135 2007-01-18  Roger Sayle  <roger@eyesopen.com>
14136
14137         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
14138         VIEW_CONVERT_EXPR to the same type as it's operand.
14139
14140 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
14141
14142         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
14143         configured for long double 128.
14144
14145 2007-01-18  Mike Stump  <mrs@apple.com>
14146
14147         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
14148         error.
14149
14150 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
14151
14152         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
14153         type correct.
14154
14155 2007-01-18  Jan Hubicka  <jh@suse.cz>
14156
14157         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
14158         greater than NUM_VOP_FREE_BUCKETS.
14159
14160 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
14161
14162         * tree-ssa-structalias.c: Update comments.
14163         (ptabitmap_obstack): Removed.
14164         (pta_obstack): New.
14165         (oldpta_obstack): Ditto.
14166         (stats): Add a few members.
14167         (struct variable_info): Remove node, complex, address_taken, and
14168         indirect_target members. Add oldsolution member.
14169         (new_var_info): Do not initialize removed members.
14170         (constraint_expr_type): Remove INCLUDES.
14171         (constraint_graph): Add size, implicit_preds, rep,
14172         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
14173         (FIRST_REF_NODE): New macro.
14174         (LAST_REF_NODE): Ditto.
14175         (FIRST_ADDR_NODE): Ditto.
14176         (find): New function.
14177         (unite): Ditto.
14178         (dump_constraint): Do not handle INCLUDES.
14179         (insert_into_complex): Do not insert duplicate constraints.
14180         (condense_varmap_nodes): Renamed and rewritten into ...
14181         (merge_node_constraints): This. Also fix bug in handling of
14182         offseted copy constraints.
14183         (clear_edges_for_node): No longer need to deal with preds at all,
14184         or removing associated preds/succs.
14185         (merge_graph_nodes): Deal with indirect_cycles.
14186         Don't deal with predecessors.
14187         (add_implicit_graph_edge): New function.
14188         (add_pred_graph_edge): Ditto.
14189         (add_graph_edge): Don't deal with predecessors.
14190         (build_constraint_graph): Removed.
14191         (build_pred_graph): New function.
14192         (build_succ_graph): Ditto.
14193         (struct scc_info): Removed in_component. Added roots, dfs, and
14194         node_mapping. Remove visited_index, unification_queue.
14195         (scc_visit): Deal with union-find we do now.
14196         Deal with cycles with REF nodes.
14197         (collapse_nodes): Renamed and rewritten to ...
14198         (unify_nodes): This.
14199         (process_unification_queue): Removed.
14200         (topo_visit): Cleanup
14201         (do_da_constraint): Use find.
14202         (do_sd_constraint): Ditto.
14203         (do_ds_constraint): Ditto.
14204         (do_complex_constraint): Ditto.
14205         (init_scc_info): Update for removed and added members.
14206         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
14207         (find_indirect_cycles): This.
14208         (equivalence_class): New variable.
14209         (label_visit): New function.
14210         (perform_variable_substitution): Rewritten.
14211         (free_var_substitution_info): New function.
14212         (find_equivalent_node): Ditto.
14213         (move_complex_constraints): Ditto.
14214         (eliminate_indirect_cycles): Ditto.
14215         (solve_graph): Only propagate changed bits.
14216         Use indirect cycle elimination.
14217         Use find.
14218         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
14219         (tree_id_eq): Renamed to ...
14220         (tree_vi_eq): This. Update for member change
14221         (insert_id_for_tree): Renamed and rewritten to ...
14222         (insert_vi_for_tree): This.
14223         (lookup_id_for_tree): Renamed and rewritten to ...
14224         (lookup_vi_for_tree): This.
14225         (get_id_for_tree): Renamed and rewritten to ...
14226         (get_vi_for_tree): Ditto.
14227         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
14228         (process_constraint): Don't handle INCLUDES.
14229         Remove special ADDRESSOF case.
14230         (find_func_aliases): Rewrite to use vi functions instead of id
14231         ones.
14232         (create_function_info_for): Ditto.
14233         (create_variable_info_for): Ditto.
14234         (intra_create_variable_infos): Ditto.
14235         (merge_smts_into): Ditto.
14236         (find_what_p_points_to): Ditto.
14237         (init_base_vars): Ditto.
14238         (init_alias_vars): Ditto.
14239         (remove_preds_and_fake_succs): New function.
14240         (dump_sa_points_to_info): Dump new stats.
14241         (dump_solution_for_var): Use find.
14242         (set_used_smts): Fix formatting.
14243         (compute_points_to_sets): Updated for new functions.
14244         (ipa_pta_execute): Ditto.
14245
14246 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
14247             Richard Sandiford  <richard@codesourcery.com>
14248
14249         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
14250         parallels.
14251         * calls.c (expand_call): If the return value is a PARALLEL,
14252         extract its first member.
14253         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
14254         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
14255         use FUNCTION_EXTRA_EPILOGUE.
14256         (m68k_function_value): Return a PARALLEL if the return value
14257         is of a pointer type.
14258         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
14259         (FUNCTION_EXTRA_EPILOGUE): Remove.
14260         * config/m68k/m68k.md (D0_REG): New constant.
14261
14262 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
14263
14264         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
14265         output a NOP for empty epilogues.
14266
14267 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14268
14269         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
14270         before function.  Extend register save check to include all
14271         registers, not just integer ones.
14272
14273 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
14274
14275         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
14276         (m68k_use_return_insn): ...this.
14277         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
14278         * config/m68k/m68k.c (use_return_insn): Rename to...
14279         (m68k_use_return_insn): ...this.
14280         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
14281         of USE_RETURN_INSN.
14282
14283 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
14284
14285         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
14286         nearest even, fix denormal rounding overflow.
14287
14288 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14289
14290         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
14291         f%$smove and f%$move.
14292         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
14293         (extendsfdf2_cf): Use fdmove instead of f%&move.
14294         (truncdfsf2_cf): Use fsmove instead of f%$smove.
14295         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
14296
14297 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14298
14299         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
14300         GPR<-GPR moves.
14301
14302 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14303
14304         * real.h (real_format): Add a canonical_nan_lsbs_set field.
14305         (coldfire_single_format): Declare.
14306         (coldfire_double_format): Likewise.
14307         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
14308         of qnan_msb_set to determine the lower bits of a canonical
14309         NaN significand.
14310         (encode_ieee_double): Likewise.
14311         (encode_ieee_quad): Likewise.
14312         (ieee_single_format): Initialize canonical_nan_lsbs_set.
14313         (mips_single_format): Likewise.
14314         (ieee_double_format): Likewise.
14315         (mips_double_format): Likewise.
14316         (ieee_extended_motorola_format): Likewise.
14317         (ieee_extended_intel_96_format): Likewise.
14318         (ieee_extended_intel_128_format): Likewise.
14319         (ieee_extended_intel_96_round_53_format): Likewise.
14320         (ibm_extended_format): Likewise.
14321         (mips_extended_format): Likewise.
14322         (ieee_quad_format): Likewise.
14323         (mips_quad_format): Likewise.
14324         (vax_f_format): Likewise.
14325         (vax_d_format): Likewise.
14326         (vax_g_format): Likewise.
14327         (i370_single_format): Likewise.
14328         (i370_double_format): Likewise.
14329         (decimal_single_format): Likewise.
14330         (decimal_double_format): Likewise.
14331         (decimal_quad_format): Likewise.
14332         (c4x_single_format): Likewise.
14333         (c4x_extended_format): Likewise.
14334         (real_internal_format): Likewise.
14335         (coldfire_single_format): New real_format.
14336         (coldfire_double_format): Likewise.
14337         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
14338         canonical_nan_lsbs_set.
14339         (pdp11_d_format): Likewise.
14340         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
14341         if TARGET_COLDFIRE_CPU.
14342
14343 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14344
14345         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
14346         (output_call, m68k_legitimize_call_address): Declare.
14347         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
14348         parenthesees.  Add support for a 'W' constraint.
14349         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
14350         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
14351         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
14352         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
14353         variables.
14354         (override_options): Initialize them.  Do not set flag_no_function_cse
14355         for TARGET_ID_SHARED_LIBRARY.
14356         (m68k_output_pic_call): Delete.
14357         (m68k_legitimize_call_address): New function.
14358         (print_operand): Remove the %o prefix.  Handle the %p prefix.
14359         (output_call): New function.
14360         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
14361         target address from the GOT if symbolic jumps are not allowed.
14362         * config/m68k/m68k.md (call, general_operand): Do not set
14363         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
14364         Merge separate flag_pic and !flag_pic define_insns into...
14365         (*call, *call_value): ...these new patterns.  Match the address
14366         rather than the containing MEM and require it to be a call_operand.
14367         Use output_call to generate the asm template.
14368         * config/m68k/predicates.md (const_call_operand): New predicate.
14369         (call_operand): Likewise.
14370
14371 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
14372
14373         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
14374         (STACK_GROWS_DOWNWARD): Define to 1.
14375         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
14376         comments, emphasizing that these values are only defaults.
14377         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
14378         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
14379
14380 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14381
14382         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
14383
14384 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
14385             Richard Sandiford  <richard@codesourcery.com>
14386
14387         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
14388         (FP_REGNO_P): New macros.
14389         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
14390         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
14391         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
14392         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
14393
14394 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
14395
14396         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
14397         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
14398         to $tmake_file.
14399         * config/m68k/t-floatlib: New file, extracting common code from...
14400         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
14401         * config/m68k/t-uclinux: Here.
14402         * config/m68k/fpgnulib.c: Do not compile extendeed precision
14403         routines on ColdFire targets.
14404
14405 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
14406
14407         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
14408         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
14409         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
14410         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
14411         explicitly set MOTOROLA to 1.
14412         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
14413
14414 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14415             Nathan Sidwell  <nathan@codesourcery.com>
14416
14417         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
14418         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
14419         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
14420         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
14421         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
14422         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
14423         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
14424         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
14425         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
14426         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
14427         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
14428         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
14429         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
14430         (DBX_REGISTER_NUMBER): Delete.
14431         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
14432         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
14433         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
14434
14435 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14436
14437         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
14438         * config/flat.h: New file.
14439         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
14440         OBJECT_FORMAT_FLAT.
14441         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
14442         indirect references for -msep-data or -mid-shared-library.
14443         Do not use PC-relative code addresses either.
14444         * config/m68k/m68k.c (override_options): Restrict -fPIC error
14445         to -mpcrel.
14446         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
14447         for shared libraries and crt1.o for executables.  Use crti.o and
14448         crtbegin.o.
14449         (ENDFILE_SPEC): Use crtend.o and crtn.o.
14450         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
14451         Do not add -elf2flt or -shared-lib-id options here.
14452         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
14453         Pass -shared-lib-id if -mid-shared-library, taking the library
14454         identifier from -mshared-library-id if given, otherwise
14455         defaulting to 0.
14456         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
14457         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
14458         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
14459         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
14460         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
14461         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
14462         and crtend.o.
14463         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
14464         jump sequence for ISA A and ISA A+.
14465         (PICJUMP): Likewise.
14466
14467 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14468
14469         * config.gcc (m68k-*-uclinux*): Base the port on the common
14470         and m68k GNU/Linux files rather than on the generic ELF ones.
14471         * config/m68k/uclinux.h (TARGET_VERSION): Override.
14472         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
14473
14474 2007-01-18  Julian Brown  <julian@codesourcery.com>
14475             Richard Sandiford  <richard@codesourcery.com>
14476
14477         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
14478         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
14479         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
14480         before redefining.
14481         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
14482         80 unconditionally.
14483         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
14484
14485 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
14486
14487         * doc/install.texi: Document m68k-uclinuxoldabi.
14488         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
14489         * config/m68k/uclinux-oldabi.h: New file, copied from
14490         config/m68k/uclinux.h.
14491
14492 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
14493
14494         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
14495         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
14496         (m32r_compute_frame_size): Use unsigned for regno.
14497         (m32r_reload_lr): Use gen_frame_mem.
14498         (pop): New.
14499         (m32r_output_function_epilogue): Don't output the function epilogue
14500         textually here.
14501         (m32r_expand_epilogue): New.
14502         (direct_return): Return false if the function has the interrupt
14503         attribute.
14504         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
14505         * config/m32r/m32r.md (epilogue): New expander.
14506         (return_lr, return_rte): New insns.
14507         (return): Make it expander.
14508         (return_normal): New expander.
14509
14510 2007-01-18  Josh Conner  <jconner@apple.com>
14511
14512         PR target/30485
14513         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
14514         support for UNLE, UNLT, UNGE, and UNGT.
14515
14516 2007-01-18  Jan Hubicka  <jh@suse.cz>
14517
14518         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
14519         * tree-tailcall (add_virtual_phis): Likewise.
14520         (optimize_tail_call): Return TODOs.
14521         (execute_tail_calls): Return TODOs.
14522         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
14523         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
14524         changed.
14525         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
14526         Cleanup cfg using TODO.
14527         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
14528         * passes.c (execute_function_todo): When cleanup did something, remove
14529         unused locals.
14530         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
14531         (make_edges): Don't cleanup_cfg.
14532
14533 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
14534
14535         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
14536         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
14537         operate on the top of stack.
14538         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
14539         register handling of instructions that output to the second
14540         stack slot.
14541         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
14542         (move_for_stack_reg): Special-case check for dead destination
14543         stack slot for constant load of 1.0 inside UNSPEC_TAN.
14544
14545         * config/i386/i386.md (UNSPEC_TAN): New constant.
14546         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
14547         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
14548         to correctly model move of constant 1.0 to top stack slot.
14549         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
14550         (unnamed peephole2 pattern): Remove corresponding peephole2
14551         pattern that optimizes tan insn and loading of constant 1.0.
14552         (tanxf2): Use fptanxf4_i387.
14553         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
14554         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
14555         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
14556         disable patterns for SSE math.
14557         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
14558         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
14559
14560 2007-01-18  Dirk Mueller  <dmueller@suse.de>
14561             Richard Guenther <rguenther@suse.de>
14562
14563         PR diagnostic/8268
14564         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
14565         * common.opt (Warray-bounds): Add new warning option.
14566         * c-opts.c (c_common_handle_option): Define -Warray-bounds
14567         if -Wall is given.
14568         * Makefile.in: make tree-vrp.o depend on toplev.h
14569         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
14570         is enabled.
14571         (check_array_refs, check_array_bounds, check_array_ref): New.
14572
14573 2007-01-18  Jan Hubicka  <jh@suse.cz>
14574
14575         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
14576         (execute_ssa_ccp): Return flags conditionally.
14577         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
14578         changed.
14579         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
14580
14581 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
14582
14583         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
14584         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
14585
14586         * Makefile.c (GTFILES): Add cfglayout.h.
14587         * gengtype.c (open_base_files): Likewise.
14588         * cfglayout.c (cfg_layout_function_footer,
14589         cfg_layout_function_header) Reindent to make gengtype happy.
14590         * cfglayout.h (cfg_layout_function_footer,
14591         cfg_layout_function_header): Add GTY(()) marker.
14592
14593         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
14594
14595 2007-01-18  Ben Elliston  <bje@au.ibm.com>
14596
14597         * genautomata.c (write_automata): Include xstrerror output in the
14598         error message if writing the DFA description file fails.
14599
14600 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
14601
14602         * config/mips/mips-protos.h (mips_output_external): Make it
14603         return void.
14604         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
14605         * config/mips/mips.c (irix_output_external_libcall): Likewise.
14606         (extern_list): Likewise.
14607         (extern_head): Likewise.
14608         (TARGET_ASM_FILE_END): Likewise.
14609         (mips_file_end): Likewise.
14610         (mips_output_external): Rewritten.
14611
14612 2007-01-18  Ben Elliston  <bje@au.ibm.com>
14613
14614         * genpreds.c (write_insn_preds_c): Only write out the function
14615         body for regclass_for_constraint if we have register constraints.
14616
14617 2007-01-17  Tom Tromey  <tromey@redhat.com>
14618
14619         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
14620         * doc/install.texi (Testing): Use sourceware.org.
14621         (Binaries): Likewise.
14622         (Specific): Likewise.
14623         * doc/contrib.texi (Contributors): Use sourceware.org.
14624
14625 2007-01-17  Anatoly Sokolov <aesok@post.ru>
14626
14627         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
14628         (AVR_ENHANCED): Rename to ...
14629         (AVR_HAVE_MUL): ... new.
14630         (avr_enhanced_p): Rename to ...
14631         (avr_have_mul_p): ... new.
14632         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
14633         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
14634         * config/avr/avr.c (avr_enhanced_p): Rename to ...
14635         (avr_have_mul_p): ... new.
14636         (base_arch_s): Rename 'enhanced' to 'have_mul'.
14637         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
14638         'avr_enhanced_p' and 'enhanced'.
14639         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
14640         AVR_HAVE_MUL instead of AVR_ENHANCED.
14641         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
14642         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
14643         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
14644         instead of AVR_ENHANCED.
14645         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
14646         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
14647         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
14648
14649 2007-01-17  Ian Lance Taylor  <iant@google.com>
14650
14651         * vec.h (VEC_reserve_exact): Define.
14652         (vec_gc_p_reserve_exact): Declare.
14653         (vec_gc_o_reserve_exact): Declare.
14654         (vec_heap_p_reserve_exact): Declare.
14655         (vec_heap_o_reserve_exact): Declare.
14656         (VEC_OP (T,A,reserve_exact)): New static inline function, three
14657         versions.
14658         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
14659         negative parameter.
14660         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
14661         (VEC_OP (T,A,copy)) [all versions]: Likewise.
14662         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
14663         * vec.c (calculate_allocation): Add exact parameter.  Change all
14664         callers.
14665         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
14666         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
14667         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
14668         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
14669         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
14670         (vec_heap_p_reserve_exact): New function.
14671         (vec_heap_o_reserve_exact): New function.
14672
14673 2007-01-17  Jan Hubicka  <jh@suse.cz>
14674
14675         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
14676
14677 2007-01-17  Eric Christopher  <echristo@apple.com>
14678
14679         * config.gcc: Support core2 processor.
14680
14681 2007-01-16  Jan Hubicka  <jh@suse.cz>
14682
14683         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
14684         the names, just unlink the chain so we don't crash on dangling pointers
14685         to dead SSA names.
14686
14687 2007-01-16  Jan Hubicka  <jh@suse.cz>
14688
14689         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
14690         * tree-pass.h: Reorder to make IPA passes appear toegher.
14691         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
14692         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
14693         parameters, do not call early inliner.
14694         * ipa-inline.c: Update comments.  Include tree-flow.h
14695         (cgraph_decide_inlining): Do not compute inlining parameters.
14696         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
14697         be called with function context set up.
14698         (pass_ipa_inline): Remove unreachable functions before pass.
14699         (cgraph_early_inlining): Simplify assuming to be called from the
14700         PM as local pass.
14701         (pass_early_inline): New pass.
14702         (cgraph_gate_ipa_early_inlining): New gate.
14703         (pass_ipa_early_inline): Turn into simple wrapper.
14704         (compute_inline_parameters): New function.
14705         (gate_inline_passes): New gate.
14706         (pass_inline_parameters): New pass.
14707         (apply_inline): Move here from tree-optimize.c
14708         (pass_apply_inline): New pass.
14709         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
14710         transforming.
14711         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
14712         doing them by hand.
14713         (tree_function_versioning): Do not allocate dummy struct function.
14714         * tree-inline.h (optimize_inline_calls): Update prototype.
14715         * tree-optimize.c (execute_fixup_cfg): Export.
14716         (pass_fixup_cfg): Remove
14717         (tree_rest_of_compilation): Do not apply inlines.
14718         * tree-flow.h (execute_fixup_cfg): Declare.
14719         * Makefile.in (gt-passes.c): New.
14720         * passes.c: Include gt-passes.h
14721         (init_optimization_passes): New passes.
14722         (nnodes, order): New static vars.
14723         (do_per_function_toporder): New function.
14724         (execute_one_pass): Dump current pass here.
14725         (execute_ipa_pass_list): Don't dump current pass here.
14726
14727 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
14728
14729         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
14730         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
14731
14732 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
14733
14734         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
14735         (strong_alias): Define.
14736         (__gcc_qmul): Provide non-FMA for soft-float.
14737         (__gcc_qdiv): Same.
14738         (__gcc_qneg): New.
14739         (__gcc_qeq): New.
14740         (__gcc_qle): New.
14741         (__gcc_qge): New.
14742         (__gcc_qunord): New.
14743         (__gcc_stoq): New.
14744         (__gcc_dtoq): New.
14745         (__gcc_qtos): New.
14746         (__gcc_qtod): New.
14747         (__gcc_qtoi): New.
14748         (__gcc_qtou): New.
14749         (__gcc_itoq): New.
14750         (__gcc_utoq): New.
14751         (fmsub): New.
14752         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
14753         soft-float functions.
14754         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
14755         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
14756         about long double soft float.
14757
14758 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
14759             Tehila Meyzels  <tehila@il.ibm.com>
14760
14761         * tree-vectorizer.h (is_pattern_stmt_p): New.
14762         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
14763         formatting (tabs instead of spaces). Cleanup and clarify setting
14764         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
14765         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
14766         (vectorizable_type_demotion): Check that types are integral.
14767         (vectorizable_type_promotion): Likewise.
14768         (vectorizable_store): Fix typo.  Eliminate new-line at end of
14769         comments.
14770
14771 2007-01-16  Jan Hubicka  <jh@suse.cz>
14772
14773         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
14774         cgraph edges too.
14775
14776 2007-01-15  Eric Christopher  <echristo@apple.com>
14777
14778         * ifcvt.c: Include vec.h, vecprim.h.
14779         (check_cond_move_block): New argument regs.
14780         Reorganize. Add registers used to regs.
14781         (cond_move_process_if_block): Use regs set above as
14782         loop bounds.
14783
14784 2007-01-15  Eric Christopher  <echristo@apple.com>
14785
14786         * config/darwin.h: Update copyright.
14787         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
14788         (LINK_COMMAND_SPEC): Add -u.
14789         (LINK_SPEC): Fix umbrella for above.
14790
14791 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
14792
14793         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
14794         glibc CVS.
14795
14796 2007-01-15  Tom Tromey  <tromey@redhat.com>
14797
14798         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
14799         * doc/install.texi (Testing): Don't mention jacks.
14800         (Configuration): Document --enable-java-maintainer-mode.  Move
14801         --with-java-home to libgcj-specific section.  Document
14802         --with-ecj-jar.
14803         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
14804
14805 2007-01-15  Jan Hubicka  <jh@suse.cz>
14806
14807         * tree-ssa-dce.c (DCE_TODOs): New.
14808         (propagate_necessity): Return if something changed.
14809         (eliminate_unnecessary_stmts): Likewise.
14810         (perform_tree_ssa_dce): Return TODO flags when needed.
14811         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
14812
14813 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
14814
14815         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
14816         (fyl2x_extend<mode>xf3_i387): New insn pattern.
14817         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
14818         patterns using X87MODEF12 mode macro.  Extend operand 1
14819         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
14820         (log10<mode>2): Ditto.
14821         (log2<mode>2): Ditto.
14822         (log1p<mode>2): Ditto.
14823         (logb<mode>2): Ditto.
14824         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
14825         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
14826         (*fxtractxf3_i387): Rename from *fxtractxf3.
14827         (fxtract_extend<mode>xf3_i387): New insn pattern.
14828         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
14829         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
14830         and gen_fyl2xxf3_i387().
14831
14832 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
14833
14834         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
14835         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
14836         get_loop_exit_edges.  Changed return type to bool.
14837         * cfgloop.h (fix_loop_placement): Declaration removed.
14838
14839 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
14840
14841         * param.h (MIN_VECT_LOOP_BOUND): New.
14842         * params.def (MIN_VECT_LOOP_BOUND): New.
14843         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
14844         argument - minimum threshold for number of iterations.
14845         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
14846         argument to declaration.
14847         * tree-vect-analyze.c (vect_analyze_operations): Check value of
14848         MIN_VECT_LOOP_BOUND.
14849         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
14850         slpeel_tree_peel_loop_to_edge with additional argument.
14851         (vect_do_peeling_for_alignment): Likewise.
14852         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
14853
14854 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
14855
14856         PR target/30413
14857         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
14858         operands of size 1.
14859
14860 2007-01-14  Jan Hubicka  <jh@suse.cz>
14861
14862         * tree-dfa.c (remove_referenced_var): New function.
14863         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
14864         prune referenced vars list too.
14865         * tree-flow.h (remove_referenced_var): Declare.
14866
14867 2007-01-14  Jan Hubicka  <jh@suse.cz>
14868
14869         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
14870         separately.
14871         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
14872         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
14873         * except.h (verify_eh_throw_table_statements): Kill prototype.
14874         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
14875         into call exrepssions.
14876         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
14877         eh trhow verifier.
14878         * tree-cfg.c: Include pointer-set.h.
14879         (verify_node_sharing): Work on pointer set.
14880         (verify_eh_throw_stmt_node): New.
14881         (verify_stmts): Use pointers sets, verify throw_stmt.
14882
14883 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
14884
14885         * ipa-reference.c (analyze_function): Consider also addresses taken
14886         in phi nodes.
14887
14888 2007-01-12  Roger Sayle  <roger@eyesopen.com>
14889
14890         * c-typeck.c (null_pointer_constant_p): Replace use of
14891         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
14892         (build_c_cast): Likewise.
14893
14894 2007-01-12  Roger Sayle  <roger@eyesopen.com>
14895
14896         * tree.h (force_fit_type_double): Remove unused final argument.
14897         * c-common.c (constant_expression_warning): Replace use of
14898         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
14899         (convert_and_check): Likewise.
14900         (shorten_compare): Update call to force_fit_type_double.
14901         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
14902         * convert.c (convert_to_pointer): Update call to
14903         force_fit_type_double.
14904         * fold-const.c (force_fit_type_double): Remove overflowed_const
14905         argument.
14906         (int_const_binop, fold_convert_const_int_from_int,
14907         fold_convert_const_int_from_real, fold_div_compare,
14908         fold_sign_changed_comparison, fold_unary, fold_negate_const,
14909         fold_abs_const, fold_not_const): Remove the final argument from
14910         calls to force_fit_type_double.
14911
14912 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14913
14914         * configure.ac: Set insn to "nop" for spu-*-* also.
14915         * configure: Regenerate.
14916
14917 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
14918
14919         * builtins.def : Add BUILT_IN_FREE.
14920
14921 2007-01-12  Jan Hubicka  <jh@suse.cz>
14922
14923         PR tree-optimization/30443
14924         * tree-inline.c (tree_function_versioning): Do not optimize when
14925         cloning for inlining.
14926
14927 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
14928
14929         * doc/loop.texi: Document recording of loop exits.
14930         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
14931         (update_single_exits_after_duplication,
14932         update_single_exit_for_duplicated_loop,
14933         update_single_exit_for_duplicated_loops): Removed.
14934         (duplicate_loop_to_header_edge): Do not call
14935         update_single_exits_after_duplication and
14936         update_single_exit_for_duplicated_loops.
14937         (loop_version): Do not update single_exit information.
14938         (fix_loop_structure): Use record_loop_exits instead of
14939         mark_single_exit_loops.
14940         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
14941         the lists of loop exits.
14942         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
14943         split_edge, merge_blocks): Update the lists of loop exits.
14944         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
14945         loop_optimizer_init.
14946         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
14947         of mark_single_exit_loops.
14948         (loop_optimizer_finalize): Call release_recorded_exits.
14949         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
14950         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
14951         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
14952         update single exit information.
14953         * lambda-code.c (perfect_nestify): Ditto.
14954         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
14955         (mark_single_exit_loops): Removed.
14956         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
14957         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
14958         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
14959         functions.
14960         (get_loop_exit_edges, single_exit): Use recorded exit lists.
14961         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
14962         (verify_loop_structure): Verify consistency of the exit lists.
14963         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
14964         (set_single_exit): Removed.
14965         * cfgloop.h (struct loop_exit): New function.
14966         (struct loop): single_exit_ field replaced by exits field.
14967         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
14968         (struct loops): Added exits hash.
14969         (mark_single_exit_loops, set_single_exit): Declaration removed.
14970         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
14971
14972 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14973
14974         * doc/invoke.texi: Avoid use of @headitem.
14975
14976 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14977
14978         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
14979
14980 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14981
14982         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
14983         list of targets.
14984
14985 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
14986             Richard Sandiford  <richard@codesourcery.com>
14987
14988         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
14989         * config/m68k/m68k.opt: Resort options.
14990         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
14991
14992 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
14993             Richard Sandiford  <richard@codesourcery.com>
14994
14995         * doc/invoke.texi: Document the macros that are defined by
14996         m68k's -mtune and -mhard-float options.
14997         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
14998         (m68k_cpp_cpu_family): Likewise.
14999         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
15000         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
15001         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
15002         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
15003         (m68k_cpp_cpu_family): Likewise.
15004
15005 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15006
15007         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
15008         macros besides mc68000 as tuning macros.  Use a switch statement
15009         to set them and mcpu32.
15010
15011 2007-01-12  Julian Brown  <julian@codesourcery.com>
15012
15013         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
15014         (TARGET_68040_ONLY): Rename to...
15015         (TARGET_68040): ...this.
15016         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
15017         * config/m68k/m68k.md: Likewise.
15018
15019 2007-01-12  Julian Brown  <julian@codesourcery.com>
15020             Nathan Sidwell  <nathan@codesourcery.com>
15021             Richard Sandiford  <richard@codesourcery.com>
15022
15023         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
15024         the -mcpu= argument associated with the --with-cpu setting.
15025         Define M68K_DEFAULT_TUNE to the default -mtune= option,
15026         if different from the one implied by the -mcpu setting.
15027         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
15028         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
15029         * doc/invoke.texi: Mention ColdFire in the introduction to the
15030         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
15031         -mno-div and -mhard-float options.  Make -m68881 a synonym for
15032         -mhard-float.  Document the previously-undocumented -m5206e,
15033         -m528x, -m5307 and -m5407 options.  Tweak the existing option
15034         documentation for consistency.
15035         * doc/install.texi: Mention new --with-cpu arguments.
15036         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
15037         default CPU if neither -mcpu nor -march are specified.
15038         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
15039         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
15040         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
15041         using m68k_tune to decide between families that implement the
15042         same ISA.  Use m68k_tune to set __mcfv4e__.
15043         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
15044         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
15045         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
15046         (FL_ISA_C, FL_ISA_MMU): New macros.
15047         (MASK_COLDFIRE): Delete.
15048         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
15049         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
15050         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
15051         (TARGET_HARD_FLOAT): Do not define here.
15052         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
15053         (TUNE_68000): New macro.
15054         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
15055         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
15056         (TUNE_CFV2): Redefine in terms of m68k_tune.
15057         (uarch_type, target_device, fpu_type): New enums.
15058         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
15059         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
15060         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
15061         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
15062         (FL_FOR_isa_c): New macros.
15063         (m68k_isa): New enum.
15064         (m68k_target_selection): New structure.
15065         (all_devices, all_isas, all_microarchs): New tables.
15066         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
15067         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
15068         (MASK_ALL_CPU_BITS): Delete.
15069         (m68k_find_selection): New function.
15070         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
15071         Map the legacy target options to a combination of the new ones.
15072         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
15073         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
15074         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
15075         settings.
15076         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
15077         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
15078         properties.
15079         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
15080         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
15081         * config/m68k/m68k-devices.def: New file.
15082
15083 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15084             Nathan Sidwell  <nathan@codesourcery.com>
15085
15086         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
15087         (SUBTARGET_EXTRA_SPECS): New macros.
15088         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
15089         use %(asm_cpu_spec) instead.
15090         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
15091         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
15092         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
15093         (EXTRA_SPECS): Rename to...
15094         (SUBTARGET_EXTRA_SPECS): ...this.
15095
15096 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
15097             Richard Sandiford  <richard@codesourcery.com>
15098             Julian Brown  <julian@codesourcery.com>
15099
15100         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15101         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
15102         to the configuration's default CPU.
15103         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
15104         Remove default masks.
15105         (m680[012]0-*-*): Set the default with_cpu to the first part of
15106         the target name.
15107         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
15108         (m68k*-*-linux): Extend the --with-cpu handling to...
15109         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
15110         and m68010.  Don't set target_cpu_default2.
15111         * doc/install.texi: Document --with-cpu for m68k.
15112         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
15113         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
15114         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
15115         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
15116         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
15117         (ASM_SPEC): Remove use of %(asm_cpu_default).
15118         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
15119         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
15120         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
15121         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
15122         __HAVE_FPU__ if TARGET_HARD_FLOAT.
15123         (TARGET_DEFAULT): Delete.
15124         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
15125         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
15126         (CPP_CPU_SPEC): Delete.
15127         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
15128         the appropriate string.
15129         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
15130         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
15131         (ASM_SPEC): Don't use %(asm_default_spec).
15132         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
15133         TARGET_DEFAULT and add MASK_68881.
15134         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
15135
15136 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15137
15138         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
15139         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
15140         MASK_68010 alongside MASK_68020.
15141         * doc/invoke.texi: Document -m68010.
15142         * config/m68k/m68k.opt (m68010): New.
15143         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
15144         if TUNE_68010.
15145         (TUNE_68010): New macro.
15146         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
15147         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
15148         (M68K_CPU_m68332): Add MASK_68010.
15149         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
15150         fallback definition.
15151         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
15152         defines.
15153         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
15154         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
15155         to all entries that use MASK_68020.
15156         (output_move_simode_const, output_move_himode, output_move_qimode)
15157         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
15158         instead of TARGET_68020 to select clr behavior.  Remove comment
15159         about there being no TARGET_68010.
15160         * config/m68k/m68k.md: Likewise throughout.
15161
15162 2007-01-12  Julian Brown  <julian@codesourcery.com>
15163
15164         * config/m68k/m68k.h (TARGET_ISAB): New macro.
15165         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
15166         * config/m68k/m68k.md: Likewise.
15167
15168 2007-01-12  Julian Brown  <julian@codesourcery.com>
15169
15170         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
15171         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
15172
15173 2007-01-12  Julian Brown  <julian@codesourcery.com>
15174
15175         * config/m68k/m68k.h (TUNE_68040_60): New macro.
15176         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
15177         * config/m68k/m68k.md: Likewise.
15178
15179 2007-01-12  Julian Brown  <julian@codesourcery.com>
15180             Richard Sandiford  <richard@codesourcery.com>
15181
15182         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
15183         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
15184         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
15185         TARGET_CPU32.
15186         (TARGET_CPU32): Rename to...
15187         (TUNE_CPU32): ...this.
15188         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
15189         (TUNE_CFV2): New macros.
15190         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
15191         remove conditions that are implied by TARGET_68020.
15192         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
15193         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
15194         (m68k_output_function_epilogue): Likewise.
15195         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
15196         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
15197         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
15198         non-68000 timings.  Refactor multiplication and division costs.
15199         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
15200         TUNE_CPU32 instead of TARGET_CPU32.
15201         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
15202         and TUNE_68060 instead of TARGET_68060.
15203         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
15204         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
15205         TARGET_CPU32.
15206         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
15207         && !TARGET_COLDFIRE" to choose between moveq and clr.
15208         Likewise in the unnamed movsf pattern.
15209         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
15210         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
15211         ashiftrt pattern.
15212
15213 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15214
15215         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
15216         of tabbing before backslashes.
15217
15218 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15219
15220         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
15221         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
15222         (ASM_OUTPUT_INTERNAL_LABEL): Define.
15223
15224 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
15225
15226         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
15227         find_interesting_uses_cond.
15228         (find_interesting_uses_cond): Use extract_cond_operands.
15229         (rewrite_use_compare): Use extract_cond_operands and
15230         force_gimple_operand_bsi.  Do not call update_stmt.
15231         (determine_use_iv_cost_condition): Use extract_cond_operands.
15232         Return cheaper of using original bound and changing the exit bound.
15233
15234 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
15235
15236         PR tree-optimization/29516
15237         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
15238         most_expensive_mult_to_index, addr_to_parts,
15239         create_mem_ref, maybe_fold_tmr): Make the type of
15240         fields of TARGET_MEM_REF sizetype.
15241         (move_fixed_address_to_symbol, move_pointer_to_base):
15242         New functions.
15243         * tree.def (TARGET_MEM_REF): Add comment on types of
15244         the operands.
15245
15246 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
15247
15248         * c-common.c (vector_types_convertible_p): Treat opaque types as
15249         always convertible if they have the same size, but not otherwise.
15250
15251 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
15252
15253         * ifcvt.c (struct noce_if_info): Add comments to the fields.
15254         Remove the b_unconditional field.
15255         (noce_try_sign_mask): Do not look at b_unconditional.
15256         (noce_process_if_block): Do not use merge_if_blocks.  Update
15257         the CFG here.  Do not set b_unconditional.
15258         (cond_move_process_if_block): Likewise.
15259         (find_cond_trap): Likewise.
15260         (check_cond_move_block): Require simple jump insns at the end
15261         of the basic block.
15262
15263 2007-01-11  Jan Hubicka  <jh@suse.cz>
15264
15265         PR tree-optimization/1046
15266         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
15267         when alias info is not ready.
15268         (pass_tail_recursion): Do not require aliasing.
15269         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
15270         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
15271         * tree-ssa-copy.c (pass_copy_prop): Likewise.
15272         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
15273         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
15274         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
15275         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
15276         before inlining.
15277         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
15278         When aliasing is not build, mark statement as volatile.
15279
15280 2007-01-11  Tom Tromey  <tromey@redhat.com>
15281
15282         PR preprocessor/15185, PR preprocessor/20989:
15283         * doc/cppopts.texi <-MT>: Update description of algorithm for
15284         computing default target.
15285         <-M, -MD>: Reword "basename" text.
15286
15287 2007-01-11  Roger Sayle  <roger@eyesopen.com>
15288
15289         * builtins.c (expand_builtin_pow, expand_builtin_powi,
15290         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
15291         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
15292         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
15293         fold_builtin_bswap, real_constp, fold_builtin_pow,
15294         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
15295         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
15296         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
15297         * convert.c (convert_to_pointer): Likewise.
15298         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
15299         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
15300         const_binop, fold_convert_const_int_from_int,
15301         fold_convert_const_int_from_real,
15302         fold_convert_const_real_from_real, sign_bit_p,
15303         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
15304         fold_sign_changed_comparison, fold_unary, fold_comparison,
15305         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
15306         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
15307         * print-tree.c (print_node_brief, print_node): Likewise.
15308         * stor-layout.c (place_field, layout_type): Likewise.
15309         * tree-chrec.c (keep_cast): Likewise.
15310         * tree.c (build_vector, build_real, build_real_from_int_cst,
15311         build_complex): Likewise.
15312
15313 2007-01-11  Roger Sayle  <roger@eyesopen.com>
15314
15315         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
15316         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
15317
15318 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
15319
15320         * configure.ac (strict1_warn): Rename to strict_warn.
15321         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
15322         cc_set_by_configure, quoted_cc_set_by_configure,
15323         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
15324         all_boot_languages, all_stagestuff): Remove.
15325         (target_list): Remove bootstrap targets.
15326         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
15327         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
15328         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
15329         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
15330         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
15331         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
15332         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
15333         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
15334         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
15335         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
15336         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
15337         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
15338         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
15339         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
15340         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
15341         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
15342         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
15343         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
15344         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
15345         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
15346         (mostlyclean): Adjust.
15347         (clean, distclean): Don't mention bootstrap stuff.
15348         * configure: Regenerate.
15349         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
15350         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
15351         treelang/config-lang.in (stagestuff): Remove.
15352         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
15353         stageprofile, stagefeedback, stagestuff): Remove mention.
15354
15355 2007-01-11  Nick Clifton  <nickc@redhat.com>
15356
15357         * config/mcore/predicates.md (mcore_general_movesrc_operand):
15358         Accept CONSTs.
15359         (mcore_general_movdst_operand): Do not accept CONST_INTs.
15360         (mcore_arith_K_S_operand): Run the test for the S constraint not
15361         the test for the M constraint.
15362         (mcore_addsub_operand): Do not accept integer values that are
15363         larger than 32 bits.
15364         * config/mcore/mcore.md: Remove unused constraints from split.
15365         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
15366         (addsi3): Likewise.
15367         (allocate_stack): Likewise.
15368         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
15369         operands to 32 bits.
15370         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
15371         INTVAL.
15372         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
15373         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
15374         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
15375         mcore_output_bclri, mcore_output_andn, output_inline_const,
15376         mcore_output_move, mcore_output_movedouble): Likewise.
15377         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
15378         (output_inline_const): Likewise.
15379         (output_inline_const): Fix format strings used in sprintf
15380         statements.
15381         * config/mcore/mcore-protos.h: Update prototypes for changed
15382         functions in mcore.c.
15383         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
15384         HOST_WIDE_INT and not int.
15385         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
15386         CONST_OK_FOR_N): Likewise.
15387         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
15388         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
15389         an INTVAL.
15390
15391 2007-01-10  Jan Hubicka  <jh@suse.cz>
15392
15393         * tree-vrp.c (remove_range_assertions): Release defs.
15394         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
15395         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
15396
15397 2007-01-10  Paul Brook  <paul@codesourcery.com>
15398
15399         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
15400         * config/arm/arm.md (mulsi3subsi): New insn.
15401
15402 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
15403
15404         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
15405         (tree_transform_and_unroll_loop): New.
15406         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
15407         Declare.
15408
15409 2007-01-10  Robert Kennedy <jimbob@google.com>
15410
15411         * fold-const.c (fold_comparison): Fold comparisons like (x *
15412         1000 < 0) to (x < 0).
15413
15414 2007-01-10  Ian Lance Taylor  <iant@google.com>
15415
15416         * tree-pretty-print.c (dump_generic_node): Print parentheses when
15417         operands have the same priority.
15418
15419 2007-01-10  Tom Tromey  <tromey@redhat.com>
15420
15421         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
15422         (fold_binary): Likewise.
15423         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
15424         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
15425         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
15426         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
15427         * langhooks.h (struct lang_hooks): Removed field
15428         'can_use_bit_fields_p'.
15429
15430 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
15431
15432         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
15433
15434 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
15435
15436         * function.c (get_last_funcdef_no): New function.
15437         * function.h (get_last_funcdef_no): Declare.
15438         * tree-inline.c (initialize_cfun): Add initialization.
15439         (tree_function_versioning): Cleanup.
15440
15441 2007-01-10  Jan Hubicka  <jh@suse.cz>
15442
15443         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
15444         PHIs.
15445
15446 2007-01-10  Sa Liu  <saliu@de.ibm.com>
15447             Ben Elliston  <bje@au.ibm.com>
15448
15449         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
15450         for SAVE_NONLOCAL and Pmode for any other save level.
15451         * spu-protos.h (spu_restore_stack_block): Declare.
15452         * spu.md (save_stack_block): Remove.
15453         (restore_stack_block): Call spu_restore_stack_block.
15454         * spu.c (spu_restore_stack_block): New function.
15455         (spu_expand_epilogue): Remove old comment.
15456
15457 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
15458
15459         PR tree-optimization/30322
15460         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
15461         (cand_value_at): Return the value as aff_tree.
15462         (may_eliminate_iv): Convert the bound from aff_tree to tree.
15463         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
15464         aff_combination_mult): New functions.
15465         (aff_combination_add): Use aff_combination_add_cst.
15466         (aff_combination_convert): Allow conversions to a wider type.
15467         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
15468         * tree-affine.h (aff_combination_mult): Declare.
15469
15470 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
15471
15472         * doc/tm.texi: Update documentation to reflect reality of exec
15473         and start file search behaviours. Update copyright year.
15474         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
15475         header file directories.
15476
15477 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
15478
15479         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
15480         (*cosxf2): Rename to cosxf2_i387.
15481         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
15482         using X87MODEF12 mode macro. Rename patterns to
15483         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
15484         for SSE math.
15485         (*cosdf2, *cossf2): Ditto.
15486         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
15487         to match extended input operands.
15488         (sincos<mode>3): New expander.
15489         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
15490         insn patterns and corresponding splitters.
15491
15492 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
15493
15494         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
15495         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
15496
15497 2007-01-09  Nicolas Pitre  <nico@cam.org>
15498
15499         PR target/30173
15500         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
15501
15502 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
15503
15504         * target.h (struct gcc_target): New field library_rtti_comdat.
15505         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
15506         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
15507         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
15508         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
15509
15510 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
15511
15512         * doc/invoke.texi (Optimize Options): Correct description of -O0.
15513
15514 2007-01-08  Richard Guenther  <rguenther@suse.de>
15515
15516         * tree.h (force_fit_type_double): Export.
15517         (force_fit_type): Remove.
15518         * fold-const.c (force_fit_type_double): New function.
15519         (force_fit_type): Remove.
15520         (int_const_binop): Use it.
15521         (fold_convert_const_int_from_int): Likewise.
15522         (fold_convert_const_int_from_real): Likewise.
15523         (fold_div_compare): Likewise.
15524         (fold_sign_changed_comparison): Likewise.
15525         (fold_unary): Likewise.
15526         (fold_negate_const): Likewise.
15527         (fold_abs_const): Likewise.
15528         (fold_not_const): Likewise.
15529         * c-common.c (shorten_compare): Use force_fit_type_double.
15530         * convert.c (convert_to_pointer): Likewise.
15531
15532 2007-01-08  Richard Guenther  <rguenther@suse.de>
15533
15534         * tree.h (build_int_cst_wide_type): Export.
15535         * tree.c (build_int_cst_wide_type): New function.
15536         (build_int_cst_wide): Fix comment.
15537         * builtins.c (fold_builtin_object_size): Use build_int_cst
15538         to build -1 or 0 of the correct type.  Use fit_double_type
15539         to check for overflow.
15540         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
15541         to build the mask.
15542         (decode_field_reference): Likewise.
15543         (all_ones_mask_p): Likewise.
15544         (native_interpret_int): Use build_int_cst_wide_type.
15545         (fold_binary): Use build_int_cst_type to build an all-ones
15546         value.
15547         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
15548
15549 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
15550
15551         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
15552
15553 2007-01-09  Ben Elliston  <bje@au.ibm.com>
15554
15555         * genautomata.c (STATS_OPTION): New option.
15556         (stats_flag): New flag.
15557         (gen_automata_option): Handle it.
15558         (initiate_automaton_gen): Ditto.
15559         (write_automata): Output statistics only if stats_flag is
15560         set. Likewise, output time statistics only if time_flag is set.
15561         * doc/md.texi (Processor pipeline description): Document new flag.
15562
15563 2007-01-08  Richard Guenther  <rguenther@suse.de>
15564
15565         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
15566         * tree.c (build_int_cst_type): Likewise.
15567         (size_in_bytes): Don't call force_fit_type on the result.
15568         (int_fits_type_p): Use fit_double_type.
15569         * fold-const.c (fit_double_type): New function.
15570         (force_fit_type): Use it.
15571         * tree.h (fit_double_type): Export.
15572
15573 2007-01-08  Jan Hubicka  <jh@suse.cz>
15574
15575         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
15576         * ipa.c (function_and_variable_visibility): Fix return type.
15577
15578 2007-01-08  Richard Guenther  <rguenther@suse.de>
15579
15580         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
15581         of offset to build the index.
15582         * tree-pretty-print.c (dump_generic_node): Don't build negated
15583         const just for printing.
15584         * c-pretty-print.c (pp_c_integer_constant): Likewise.
15585         * builtins.c (fold_builtin_int_roundingfn): Check if result
15586         fits the type by using force_fit_type and comparing the result.
15587         * predict.c (predict_loops): Use compare_tree_int for comparison.
15588         * tree.c (build_int_cst): Fall back to integer_type_node for
15589         NULL_TREE type.
15590         (build_int_cst_wide): Assert type is non-null.
15591
15592 2007-01-08  Roberto Costa  <roberto.costa@st.com>
15593
15594         * tree-vrp.c (extract_range_from_cond_expr): New.
15595         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
15596         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
15597         as expressions.
15598         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
15599         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
15600         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
15601         used as expressions.
15602         * tree-object-size.c (cond_expr_object_size): New.
15603         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
15604
15605 2007-01-08  Jan Hubicka  <jh@suse.cz>
15606
15607         * tree-ssa-forwprop.c (forward_propagate_into_cond,
15608         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
15609         statement.
15610
15611 2007-01-08  Richard Guenther  <rguenther@suse.de>
15612
15613         PR tree-optimization/23603
15614         * tree-vrp.c (set_value_range_to_truthvalue): New function.
15615         (extract_range_from_binary): Fall back to truthvalue instead of
15616         varying for TRUTH_*_EXPR.
15617         (extract_range_from_comparison): Fall back to truthvalue instead of
15618         varying.
15619         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
15620         if all visited PHI values were constant.
15621
15622 2007-01-08  Jan Hubicka  <jh@suse.cz>
15623
15624         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
15625         (cgraph_analyze_function): break out from ...
15626         (cgraph_finalize_compilation_unit): ... here.
15627         (cgraph_expand_function): Remove forgoten commented out line.
15628         (cgraph_optimize): Analyze functions.
15629
15630 2007-01-08  Jan Hubicka  <jh@suse.cz>
15631
15632         * tree-pas.h (TODO_remove_function): New flag.
15633         (TODO_update*): Renumber.
15634         (pass_ipa_increase_alignment,
15635         pass_ipa_function_and_variable_visibility): New passes.
15636         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
15637         (cgraph_function_and_variable_visibility): Move to ipa.c
15638         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
15639         cgraph_increase_alignment.
15640         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
15641         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
15642         calling tree-inline.
15643         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
15644         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
15645         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
15646         (gate_increase_alignment): New function.
15647         (pass_ipa_increase_alignment): New pass.
15648         * ipa.c: Inline tree-pass.h and timevar.h
15649         (function_and_variable_visibility): Move here from cgraphunit.c
15650         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
15651         * passes.c (init_optimization_passes): Add the two new passes.
15652         (execute_todo): Handle cgraph_remove_functions.
15653
15654 2007-01-08  Nick Clifton  <nickc@redhat.com>
15655
15656         * config/frv/predicates.md (reg_or_0_operand): Accept
15657         CONST_DOUBLEs.
15658
15659 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
15660
15661         * config/bfin/rtems.h, config/bfin/t-rtems: New.
15662         * config.gcc: Add bfin*-rtems*.
15663
15664 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
15665
15666         * c.opt: Add -flax-vector-conversions.
15667         * c-typeck.c (convert_for_assignment): Pass flag to
15668         vector_types_convertible_p to allow emission of note.
15669         (digest_init): Likewise.
15670         * c-opts.c: Handle -flax-vector-conversions.
15671         * c-common.c (flag_lax_vector_conversions): New.
15672         (vector_types_convertible_p): Unless -flax-vector conversions
15673         has been passed, disallow conversions between vectors with
15674         differing numbers of subparts and/or element types.  If such
15675         a conversion is disallowed, possibly emit a note on the first
15676         occasion only to inform the user of -flax-vector-conversions.
15677         The new last argument specifies this.
15678         * c-common.h (flag_lax_vector_conversions): New.
15679         (vector_types_convertible_p): Add extra argument.
15680         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
15681         char_type_node for V*QI type vectors.
15682         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
15683         Update to satisfy new typechecking rules.
15684         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
15685         C and C++ variants.
15686         * doc/invoke.texi (C Dialect Options): Document
15687         -flax-vector-conversions.
15688
15689 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
15690
15691         PR tree-optimization/29877
15692         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
15693         a register variable on the RHS to not be replaceable.
15694
15695 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
15696         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
15697         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
15698         const_simm15, const_pow2, const_npow2): Added.
15699         * config/score/misc.md (insv, extv, extzv, movmemsi,
15700         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
15701         * config/score/score.c (score_address_cost, score_select_cc_mode):
15702         Added.
15703         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
15704         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
15705         Update score_print_operand.
15706         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
15707         Adjust register allocate order and update some macro define.
15708         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
15709         mdx_block_move_straight, mdx_block_move_loop_head,
15710         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
15711         mdx_block_move): Added.
15712         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
15713         mdp_limm): Updated and fix some bug and typo.
15714         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
15715         (movsf, movdf, doloop_end): Added.
15716
15717 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
15718
15719         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
15720         config/arm/thumb2.md: Fix comment typos.
15721         * doc/extend.texi: Fix a typo.
15722
15723 2007-01-07  Eric Christopher  <echristo@apple.com>
15724
15725         * configure.ac: Check for __stack_chk_fail for darwin.
15726         * configure: Regenerate.
15727
15728 2007-01-07  Richard Guenther  <rguenther@suse.de>
15729
15730         * tree-vrp.c (extract_range_from_assert): CSE calls to
15731         compare_values where possible.
15732         (extract_range_from_unary_expr): Likewise.
15733
15734 2007-01-07  Anatoly Sokolov <aesok@post.ru>
15735
15736         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
15737         * config/avr/avr.c (call_insn_operand): Delete function.
15738         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
15739         instead of register number. Use predicates.
15740         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
15741         call_insn_operand): Add.
15742
15743 2007-01-06  Jan Hubicka  <jh@suse.cz>
15744
15745         * tree-pass.h (pass_build_cgraph_edges): Declare.
15746         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
15747         (visited_nodes): Remove.
15748         (cgraph_create_edges): Move to cgraphbuild.c; rename to
15749         build_cgrpah_edges; make visited_nodes local.
15750         (cgraph_process_new_functions): DO not call initialize_inline_failed.
15751         (record_references_in_initializer): Move to cgraphbuild.c
15752         (initialize_inline_failed, rebuild_cgraph_edges,
15753         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
15754         (verify_cgraph_node): Make visited_nodes local.
15755         (cgraph_analyze_function): Do not call cgraph_create_edges and
15756         initialize_inline_failed.
15757         (cgraph_expand_function): Do not call cgraph_lower_function;
15758         assert that function is already lowered.
15759         * Makefile.in (cgraphbuild.o): New.
15760         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
15761         at the end of lowering passes.
15762
15763 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
15764
15765         * ifcvt.c (cond_move_convert_if_block): New function, code
15766         factored out from...
15767         (cond_move_process_if_block): ...here.  Call the new function
15768         on the THEN and ELSE blocks.
15769         (merge_if_block): Do not copy global_live_at_end, merge_blocks
15770         already takes care of this.
15771
15772 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15773
15774         PR c/19978
15775         * tree.h (TREE_OVERFLOW_P): New.
15776         * c-typeck.c (parser_build_unary_op): Warn only if result
15777         overflowed and operands did not.
15778         (parser_build_binary_op): Likewise.
15779         (convert_for_assignment): Remove redundant overflow_warning.
15780         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
15781
15782 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15783
15784         * c-typeck.c (store_init_value): Split over two lines to follow
15785         the GNU coding style.
15786
15787 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
15788
15789         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
15790         __GXX_EXPERIMENTAL_CXX0X__.
15791         * doc/cpp.texi: Same.
15792
15793 2007-01-05  Richard Guenther  <rguenther@suse.de>
15794
15795         PR middle-end/27826
15796         * tree.c (get_narrower): Do not construct COMPONENT_REFs
15797         with mismatched types.  Instead explicitly build a
15798         conversion NOP_EXPR.
15799
15800 2007-01-05  Ian Lance Taylor  <iant@google.com>
15801
15802         * c-common.c (decl_with_nonnull_addr_p): New function.
15803         (c_common_truthvalue_conversion): Call it.
15804         * c-typeck.c (build_binary_op): Likewise.
15805         * c-common.h (decl_with_nonnull_addr_p): Declare.
15806
15807 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
15808
15809         PR c/30360
15810         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
15811         denom against 0.0.
15812
15813 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
15814
15815         * doc/install.texi (Final install): Document the fact that
15816         the GNAT runtime should not be stripped.
15817
15818 2007-01-04  Jan Hubicka  <jh@suse.cz>
15819
15820         * tree-inline.c (fold_marked_statements): Update operand caches
15821         and EH after folding
15822
15823 2007-01-04  Ian Lance Taylor  <iant@google.com>
15824
15825         * c-common.c (check_function_nonnull): Whitespace fix.
15826
15827 2007-01-04  Jan Hubicka  <jh@suse.cz>
15828
15829         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
15830         comitted older version of patch.
15831         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
15832         function, celanup cfg and collect garbage.
15833
15834 2007-01-04  Mike Stump  <mrs@apple.com>
15835
15836         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
15837         (clean): Likewise.
15838
15839 2007-01-04  Eric Christopher  <echristo@apple.com>
15840
15841         * libgcc2.c (__bswapsi2): Use SItype.
15842         (__bswapdi2): Use DItype.
15843         * libgcc2.h: Update for above.
15844
15845 2007-01-04  Paul Brook  <paul@codesourcery.com>
15846
15847         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
15848         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
15849         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
15850         umulsidi3, umulsidi3adddi, smulsi3_highpart,
15851         umulsi3_highpart): Make conditional on !arm_arch6.
15852         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
15853         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
15854         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
15855         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
15856         umulsi3_highpart_v6): New insns.
15857
15858 2007-01-04  Roger Sayle  <roger@eyesopen.com>
15859
15860         * fold-const.c (fold_convert): When casting an expression to void,
15861         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
15862         have a type.  Instead of attempting to build a NOP_EXPR, return
15863         these "special" trees directly.
15864
15865 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
15866
15867         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
15868         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
15869         rs6000_cost->fp not 0 as adjustment for outer NEG.
15870
15871 2007-01-04  Jan Hubicka  <jh@suse.cz>
15872
15873         * cgraph.c (cgraph_release_function_body): New function.
15874         (cgraph_remove_node): Use it.
15875         * cgraph.h (cgraph_release_function_body): Declare.
15876         * cgraphunit.c (cgraph_expand_function): Use it.
15877         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
15878         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
15879         is initialized and while compilation of other function is running.
15880         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
15881         statement CFG annotations from here to ...
15882         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
15883
15884 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
15885
15886         * cfgloop.h (enum li_flags): Make the constants powers of two.
15887
15888 2007-01-04  Jan Hubicka  <jh@suse.cz>
15889
15890         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
15891         set.
15892         (fold_marked_statements): New function.
15893         (optimize_inline_calls, tree_function_versioning): Fold new statements.
15894         * tree-inline.h (copy_body_data): Add statements_to_fold.
15895
15896 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
15897
15898         * config.gcc: Mention libgcc/config.host.
15899         * Makefile.in: Update comments mentioning libgcc.
15900         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
15901         (all.cross, start.encap, rest.encap, rest.cross): Update
15902         dependencies for libgcc move.
15903         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
15904         (clean-target, clean-target-libgcc): Delete.
15905         (srcdirify, GCC_EXTRA_PARTS): New macros.
15906         (libgcc-support, libgcc.mvars): New rules.
15907         (distclean): Remove mention of mklibgcc.
15908         (install): Don't reference INSTALL_LIBGCC.
15909         (install-common): Don't reference EXTRA_PARTS.
15910         (install-libgcc, install-multilib): Delete rules.
15911         * mklibgcc.in: Delete file.
15912         * doc/configfiles.texi: Don't mention mklibgcc.
15913
15914         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
15915         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
15916         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
15917         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
15918         (mklibgcc, ldblspecs): Likewise.
15919
15920         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
15921         (posixpre.def): Use $(T).
15922         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
15923         (SHLIB_SRC, SHLIB_INSTALL): Delete.
15924         (SHLIB_LINK): Make dummy.
15925         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
15926
15927         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
15928
15929         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
15930         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
15931         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
15932         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
15933
15934         * configure.ac (all_outputs): Remove mklibgcc.
15935         * configure: Regenerated.
15936
15937 2007-01-03  Josh Conner  <jconner@apple.com>
15938
15939         PR middle-end/29683
15940         * calls.c (compute_argument_addresses): Set stack and stack_slot
15941         for partial args, too.
15942         (store_one_arg): Use locate.size.constant for the size when
15943         generating a save_area.
15944
15945 2007-01-03  Robert Kennedy <jimbob@google.com>
15946
15947         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
15948         whose definitions are deleted due to basic block merging.
15949
15950 2007-01-03  Paul Brook  <paul@codesourcery.com>
15951
15952         PR target/16634
15953         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
15954         functions.
15955         (use_return_insn): Return 0 for Thumb interrupt functions.
15956         (print_multi_reg): Add rfe argument for IRQ returns.
15957         (arm_output_epilogue): Pop interrupt return address directly into PC.
15958         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
15959
15960 2007-01-03  Paul Brook  <paul@codesourcery.com>
15961
15962         Merge from sourcerygxx-4_1.
15963         * config/arm/thumb2.md: New file.
15964         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
15965         Thumb-2.
15966         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
15967         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
15968         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
15969         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
15970         tables.
15971         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
15972         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
15973         comptibility.
15974         * config/arm/ieee754-sf.S: Ditto.
15975         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
15976         (thumb1_base_register_rtx_p): ... to this.
15977         (thumb_index_register_rtx_p): Rename...
15978         (thumb1_index_register_rtx_p): ... to this.
15979         (thumb_output_function_prologue): Rename...
15980         (thumb1_output_function_prologue): ... to this.
15981         (thumb_legitimate_address_p): Rename...
15982         (thumb1_legitimate_address_p): ... to this.
15983         (thumb_rtx_costs): Rename...
15984         (thumb1_rtx_costs): ... to this.
15985         (thumb_compute_save_reg_mask): Rename...
15986         (thumb1_compute_save_reg_mask): ... to this.
15987         (thumb_final_prescan_insn): Rename...
15988         (thumb1_final_prescan_insn): ... to this.
15989         (thumb_expand_epilogue): Rename...
15990         (thumb1_expand_epilogue): ... to this.
15991         (arm_unwind_emit_stm): Rename...
15992         (arm_unwind_emit_sequence): ... to this.
15993         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
15994         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
15995         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
15996         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
15997         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
15998         thumb2_output_casesi): New functions.
15999         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
16000         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
16001         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
16002         THUMB2_WORK_REGS): Define.
16003         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
16004         arm_condexec_mask, arm_condexec_masklen)): New variables.
16005         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
16006         (arm_override_options): Check new CPU capabilities.
16007         Set new architecture flag variables.
16008         (arm_isr_value): Handle v7m interrupt functions.
16009         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
16010         Thumb-2.
16011         (const_ok_for_arm): Handle Thumb-2 constants.
16012         (arm_gen_constant): Ditto.  Use movw when available.
16013         (arm_function_ok_for_sibcall): Return false for v7m interrupt
16014         functions.
16015         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
16016         (thumb_find_work_register, arm_load_pic_register,
16017         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
16018         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
16019         print_multi_reg, output_mov_long_double_fpa_from_arm,
16020         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
16021         output_mov_double_fpa_from_arm, output_move_double,
16022         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
16023         output_return_instruction, arm_output_function_prologue,
16024         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
16025         arm_output_mi_thunk, thumb_set_return_address): Ditto.
16026         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
16027         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
16028         (arithmetic_instr, shift_op): Use arm_shift_nmem.
16029         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
16030         '!' and 'L'.
16031         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
16032         (thumb_expand_prologue): Use thumb_set_frame_pointer.
16033         (arm_file_start): Output directive for unified syntax.
16034         (arm_unwind_emit_set): Handle stack alignment instruction.
16035         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
16036         Add v6t2, v7, v7a, v7r and v7m.
16037         (RETLDM): Add Thumb-2 code.
16038         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
16039         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
16040         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
16041         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
16042         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
16043         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
16044         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
16045         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
16046         ADJUST_INSN_LENGTH): Define.
16047         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
16048         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
16049         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
16050         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
16051         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
16052         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
16053         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
16054         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
16055         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
16056         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
16057         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
16058         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
16059         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
16060         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
16061         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
16062         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
16063         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
16064         cortex-m3.
16065         * config/arm/arm-tune.md: Regenerate.
16066         * config/arm/arm-protos.h: Update prototypes.
16067         * config/arm/vfp.md: Enable patterns for Thumb-2.
16068         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
16069         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
16070         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
16071         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
16072         * config/arm/libunwind.S: Add Thumb-2 code.
16073         * config/arm/constraints.md: Update include Thumb-2.
16074         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
16075         * config/arm/ieee754-df.S: Ditto.
16076         * config/arm/bpabi.S: Ditto.
16077         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
16078         * config/arm/predicates.md (low_register_operand,
16079         low_reg_or_int_operand, thumb_16bit_operator): New.
16080         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
16081         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
16082         * config/arm/t-arm-elf: Add armv7 multilib.
16083         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
16084         Include thumb2.md.
16085         (UNSPEC_STACK_ALIGN, ce_count): New.
16086         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
16087         arm_zero_extendsidi2, arm_zero_extendqidi2): New
16088         insns/expanders.
16089         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
16090         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
16091         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
16092         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
16093         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
16094         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
16095         insns.
16096         * doc/extend.texi: Document ARMv7-M interrupt functions.
16097         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
16098
16099 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
16100
16101         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
16102         (struct _Unwind_Context): Rename args_size to flags, remove
16103         signal_frame field, add a new args_size field and version field.
16104         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
16105         _Unwind_IsExtendedContext): New inline functions.
16106         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
16107         Assume by_value array is only present if _Unwind_IsExtendedContext.
16108         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
16109         _Unwind_IsSignalFrame.
16110         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
16111         (uw_update_context_1): Use _Unwind_SetSignalFrame.
16112         (uw_init_context_1): Initialize context->flags to
16113         EXTENDED_CONTEXT_BIT.
16114         * config/rs6000/linux-unwind.h (frob_update_context): Use
16115         _Unwind_SetSignalFrame.
16116
16117 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16118
16119         PR middle-end/30353
16120         * gimplify.c (gimplify_modify_expr_complex_part): Move below
16121         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
16122         the value.
16123
16124 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
16125
16126         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
16127         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
16128         RET, AT_SP): Remove.
16129         * config/i386/i386.md (*sse_prologue_save_insn): Use return
16130         instead of RET.
16131
16132         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
16133         * cfgbuild.c (find_basic_blocks): Likewise.
16134         * cfgrtl.c (rtl_create_basic_block): Likewise.
16135         * function.c (temp_slots_at_level): Likewise.
16136         * reg-stack.c (stack_regs_mentioned): Likewise.
16137         * regclass.c (allocate_reg_info): Likewise.
16138         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
16139         set_bb_for_stmt, move_block_to_fn): Likewise.
16140         * tree-complex.c (tree_lower_complex): Likewise.
16141         * vec.h (VEC_safe_grow_cleared): New.
16142
16143         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
16144
16145 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
16146
16147         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
16148         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
16149         to loop_version.
16150         * cfgloopmanip.c (scale_loop_frequencies): Export.
16151         (loopify): Scale the frequencies by prescribed coefficients.
16152         (set_zero_probability): New function.
16153         (duplicate_loop_to_header_edge): Improve updating of frequencies.
16154         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
16155         and frequencies according to arguments.
16156         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
16157         correctly.
16158         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
16159         * modulo-sched.c (sms_schedule): Set probabilities for entering
16160         versioned loop correctly.
16161         * tree-vect-transform.c (vect_transform_loop): Ditto.
16162         * cfgloop.h (loopify, loop_version): Declaration changed.
16163         (scale_loop_frequencies): Declared.
16164
16165 2007-01-02  Jan Hubicka  <jh@suse.cz>
16166
16167         * cgraph.c: Include tree-flow.h
16168         (cgraph_add_new-function): Handle IPA_SSA mode; execute
16169         early_local_passes.
16170         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
16171         * tree-pass.h (pass_all_early_optimizations): Declare.
16172         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
16173         early_local_passes.
16174         (cgraph_analyze_function): Do early_local_passes.
16175         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
16176         Do not add referenced vars.
16177         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
16178         SSA form.
16179         (gate_all_early_local_passes): New gate.
16180         (pass_early_local_passes): Use new gate.
16181         (execute_early_local_optimizations): New functions.
16182         (gate_all_early_optimizations): New gate.
16183         (pass_all_early_optimizations): New pass.
16184         (execute_free_datastructures): Free SSA only when initialized.
16185         (gate_init_datastructures): Init only when optimizing.
16186         (tree_lowering_passes): Do early local passes when called late.
16187         * tree-profile.c (do_tree_profiling): Don't profile functions added
16188         late.
16189         (do_early_tree_profiling, pass_early_tree_profile): Kill.
16190         * tree-cfg.c (update_modified_stmts): Do not update when operands are
16191         not active.
16192         * passes.c (init_optimizations_passes): Reorder so we go into SSA
16193         during early_local_passes.
16194         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
16195
16196
16197 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
16198
16199         * Makefile.in: Update copyright year.
16200
16201 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
16202
16203         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
16204         in $(lang_checks) and check-consistency targets.
16205
16206 2007-01-02  Jan Hubicka  <jh@suse.cz>
16207
16208         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
16209         Do not add referenced vars.
16210         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
16211         are not active.
16212         * passes.c (init_optimization_passes): Put mudflap_2 after
16213         free_datastructures.
16214
16215 2007-01-02  Jan Hubicka  <jh@suse.cz>
16216
16217         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
16218         Set NOTHROW flag on call statements proved to be nothrow.
16219         Update statement of local calls so new pure/const functions are
16220         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
16221         goto receivers.
16222         (tree_rest_of_compilation): Register hooks and initialize bitmap
16223         early. Do not set after_inlining flag.
16224
16225 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
16226
16227         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
16228         HOST_BITS_PER_LONGLONG
16229
16230 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
16231
16232         PR c/19977
16233         * c-typeck.c (store_init_value): Don't emit pedantic overflow
16234         warning for non-static initializers.
16235
16236 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
16237
16238         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
16239         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
16240         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
16241         Always use set_unique_reg_note to add REG_EQUAL notes.
16242
16243 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
16244
16245         Revert:
16246         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
16247
16248         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
16249         * cfgbuild.c (find_basic_blocks): Likewise.
16250         * cfgrtl.c (rtl_create_basic_block): Likewise.
16251         * function.c (temp_slots_at_level): Likewise.
16252         * reg-stack.c (stack_regs_mentioned): Likewise.
16253         * regclass.c (allocate_reg_info): Likewise.
16254         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
16255         set_bb_for_stmt, move_block_to_fn): Likewise.
16256         * tree-complex.c (tree_lower_complex): Likewise.
16257         * vec.h (VEC_safe_grow_cleared): New.
16258
16259 2007-01-02  Ian Lance Taylor  <iant@google.com>
16260
16261         * c-common.c (c_common_truthvalue_conversion): When warning about
16262         using an assignment as a truth value, set TREE_NO_WARNING.
16263
16264 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16265
16266         PR middle-end/7651
16267         * c.opt (Wold-style-declaration): New.
16268         * doc/invoke.texi (C-only Warning Options): New.
16269         (Wold-style-declaration): Document it.
16270         (Wextra): Enabled by -Wextra.
16271         * c-opts.c (c_common_post_options): Enabled by -Wextra.
16272         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
16273         -Wold-style-declaration.
16274
16275 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
16276
16277         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
16278         * cfgbuild.c (find_basic_blocks): Likewise.
16279         * cfgrtl.c (rtl_create_basic_block): Likewise.
16280         * function.c (temp_slots_at_level): Likewise.
16281         * reg-stack.c (stack_regs_mentioned): Likewise.
16282         * regclass.c (allocate_reg_info): Likewise.
16283         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
16284         set_bb_for_stmt, move_block_to_fn): Likewise.
16285         * tree-complex.c (tree_lower_complex): Likewise.
16286         * vec.h (VEC_safe_grow_cleared): New.
16287
16288 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
16289
16290         * c-common.c (c_common_nodes_and_builtins): Since variants of
16291         void_type_node get built before it is given a name, we need to
16292         give those variants the name, too.
16293         (complete_array_type): We need to work with the canonical main
16294         type of the array, from which we will build the qualified version.
16295         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
16296         * print-tree.c (print_node): Display canonical type information
16297         for each type.
16298         * stor-layout.c (layout_type): When we don't know the
16299         alignment of a type for which we're building an array, we end up
16300         guessing wrong, so make the type require structural equality.
16301         * tree.c (make_node_stat): When we build a new type, it is its
16302         own canonical type.
16303         (build_type_attribute_qual_variant): When building an attribute
16304         variant, its canonical type is the non-attribute variant. However,
16305         if the attributes are target-dependent and they differ, we need to
16306         use structural equality checks for this type.
16307         (build_qualified_type): A qualified type is not equivalent to its
16308         unqualified variant; set the canonical type appropriately.
16309         (build_distinct_type_copy): When building a distinct type from
16310         another type, the new type is its own canonical type.
16311         (build_variant_type_copy): When building a new type variant, we
16312         assume that it is equivalent to the original type.
16313         (build_pointer_type_for_mode): When building a pointer type, also
16314         build a canonical type pointer.
16315         (build_reference_type_for_mode): When building a reference type,
16316         also build a canonical type reference.
16317         (build_index_type): When we can't hash an index type (e.g.,
16318         because its maximum value is negative), the index type requires
16319         structural equality tests.
16320         (build_array_type): Build the canonical form of an array type.
16321         (build_function_type): Function types require structural equality,
16322         because they contain default arguments, attributes, etc.
16323         (build_method_type_directly): Ditto for method types.
16324         (build_offset_type): Build the canonical offset type.
16325         (build_complex_type): Build the canonical vector type.
16326         (make_vector_type): Build the canonical vector type.
16327         * tree.h (TYPE_CANONICAL): New.
16328         (TYPE_STRUCTURAL_EQUALITY_P): New.
16329         (SET_TYPE_STRUCTURAL_EQUALITY): New.
16330         (struct tree_type): Added "canonical" field.
16331         * params.h (VERIFY_CANONICAL_TYPES): New.
16332         * doc/c-tree.texi (TYPE_CANONICAL): Document.
16333         (TYPE_STRUCTURAL_EQUALITY_P): Document.
16334         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
16335         * doc/invoke.texi (verify-canonical-types): Document --param
16336         parameter for verifying canonical types.
16337
16338 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
16339
16340         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
16341         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
16342         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
16343         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
16344         tm_file.
16345         * config/rs6000/e500.h: New.
16346         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
16347         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
16348         Remove.
16349         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
16350         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
16351         TARGET_E500_DOUBLE): Remove.
16352         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
16353         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
16354         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
16355         * config/rs6000/rs6000.c (rs6000_override_options): Use
16356         CHECK_E500_OPTIONS.
16357
16358 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
16359
16360         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
16361         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
16362         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
16363         rs6000_emit_cmove): Don't check TARGET_E500.
16364         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
16365         sordered): Don't check TARGET_E500.
16366
16367 2007-01-01  Eric Christopher  <echristo@apple.com>
16368
16369         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
16370         HARD_REGISTER_NUM_P.
16371
16372 2007-01-01  Roger Sayle  <roger@eyesopen.com>
16373
16374         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
16375         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
16376         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
16377         eq/ne Y".
16378
16379 2007-01-01  Mike Stump  <mrs@apple.com>
16380
16381         * configure.ac: Remove support for building with Apple's gcc-3.1.
16382
16383 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
16384
16385         PR middle-end/30311
16386         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
16387         REG is a hard register.  Do not modify REG before calling
16388         subreg_nregs.
16389         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
16390         multiple of the size of YMODE for certain lowpart cases.
16391
16392 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
16393
16394         PR middle-end/30253
16395         * gimplify (voidify_wrapper_expr): Update for
16396         GIMPLE_MODIFY_STMT.
16397
16398 2007-01-01  Andreas Schwab  <schwab@suse.de>
16399
16400         PR target/29166
16401         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
16402         save of BR0 in extra_spill_size instead of spill_size.
16403         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
16404         area.
16405         (ia64_expand_epilogue): Restore BR0 from its new location.
16406
16407 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
16408
16409         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
16410         Use a temporary variable if the left hand side is not a gimple
16411         register.
16412
16413 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
16414
16415         * gimplify.c (gimplify_return_expr): Make the temporary variable
16416         for the return expression, a gimple register variable.
16417
16418 2007-01-01  Jan Hubicka  <jh@suse.cz>
16419
16420         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
16421         INSN_LIST.
16422
16423 2007-01-01  Mike Stump  <mrs@apple.com>
16424
16425         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
16426         .literal16.
16427         * config/darwin.c (machopic_select_rtx_section): Use
16428         HAVE_GAS_LITERAL16.
16429         (darwin_mergeable_constant_section): Likewise.
16430         * configure: Regenerate.
16431         * config.in: Regenerate.
16432
16433 2007-01-01  Jan Hubicka  <jh@suse.cz>
16434             Andrew Pinski  <pinskia@gmail.com>
16435
16436         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
16437         before starting IPA passes.