OSDN Git Service

29b240a9783d78b4ec0b3649b5d982d6909050ae
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2
3         PR target/32341
4         * config/v850/v850.c: Include dataflow header file.
5         (substitute_ep_register): Fix typo.
6
7 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
8
9         * configure.ac: Fix earlier checkin.
10         * configure: Regenerated.
11
12 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
13
14         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
15         * aclocal.m4: Regenerate.
16         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
17         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
18         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
19         * configure: Regenerate.
20         * Makefile.in (LOOSE_WARN): Subst loose_warn.
21
22         * Makefile.in (quickstrap): Build libgcc too.
23
24 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
25
26         * configure.ac: Add --enable-checking=df.  Explicitly mention that
27         the variables are initialized as for "release".
28         * df-core.c: Use it.
29         * configure: Regenerate.
30         * config.in: Regenerate.
31
32 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
33
34         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
35         validate_replace_rtx instead of replace_rtx.
36         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
37
38 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
39
40         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
41         (DWARF2_UNWIND_INFO): Override default if configured with
42         SJLJ EH disabled.
43         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
44         (ENDFILE_SPEC): Add crtend.o.
45         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
46         (ENDFILE_SPEC): Add crtend.o.
47         (TARGET_USE_JCR_SECTION): Define.
48         (MD_UNWIND_SUPPORT): Define for 32-bit target.
49
50         * config/i386/cygming-crtbegin.c: New file.
51         * config/i386/cygming-crtend.c: New file.
52
53 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
54
55         * config/i386/w32-unwind.h: New file.
56
57 2007-06-13  Eric Christopher  <echristo@apple.com>
58
59         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
60         the user set a value below STACK_BOUNDARY.
61
62 2007-06-13  Thiemo Seufer  <ths@networkno.de>
63
64         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
65         imply -lpthread for -pthread.
66
67 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
68
69         * basic-block.h: Remove the prototype for
70         free_basic_block_vars.
71         * cfglayout.h: Remove the prototype for
72         insn_locators_initialize.
73         * tree.h: Remove the prototype for emit_line_note.
74
75         * tree-ssa-pre.c (mergephitemp): Remove.
76         (init_pre): Don't use mergephitemp.
77
78 2007-06-13  Eric Christopher  <echristo@apple.com>
79
80         * config/i386/i386.c (override_options): If we've specified
81         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
82
83 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
84
85         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
86         is defined.
87
88 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
89
90         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
91         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
92         (eh_store_handler): New pattern.
93         (eh_return): Emit it instead of a plain move.
94
95 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
96
97         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
98         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
99         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
100         def_builtin_const.
101
102 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
103
104         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
105         (find_next_insn_start, find_load): New functions.
106         (bfin_reorg): Use them to deal with the fact that parallel insns are
107         no longer represented as a SEQUENCE.
108
109 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
110
111         * config/sparc/sparc.c (sparc_override_options): Initialize
112         fpu mask correctly.
113
114 2007-06-13  Dave Korn  <dave.korn@artimi.com>
115
116         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
117         df_get_live_out.
118
119 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
120
121         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
122         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
123         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
124         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
125         tree-vect-transform.c: Fix comment typos.  Follow spelling
126         conventions.
127
128 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
129
130        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
131        to the exit block use set.
132        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
133        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
134
135 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
136
137         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
138         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
139         to indicate an error.
140         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
141         (dbg_cnt_process_opt): Print an error on a bad argument.
142         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
143         * common.opt (-fdbg-cnt-list): New.
144         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
145
146 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
147
148         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
149         flag on ref-all pointers.
150
151 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
152
153         PR middle-end/31579
154         * expr.c (expand_expr_addr_expr_1): Call expand_expr
155         for the offset with the modifier as EXPAND_INITIALIZER
156         if the modifier is EXPAND_INITIALIZER.
157         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
158         a register if we had an overflow.
159
160 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
161
162         * real.c (real_isfinite): New.
163         (real_sqrt): Use it.
164         * real.h (real_isfinite): New.
165         * builtins.c: Use it.
166
167 2007-06-12  Ian Lance Taylor  <iant@google.com>
168             Daniel Berlin  <dberlin@dberlin.org>
169
170         PR libstdc++/29286
171         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
172         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
173         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
174         (DECL_NO_TBAA_P): Define.
175         (struct tree_decl_common): Add no_tbaa_flag field.
176         * tree-ssa-structalias.c (struct variable_info): Add
177         no_tbaa_pruning field.
178         (new_var_info): Initialize no_tbaa_pruning field.
179         (unify_nodes): Copy no_tbaa_pruning field.
180         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
181         (dump_solution_for_var): Print no_tbaa_pruning flag.
182         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
183         callers.
184         (compute_tbaa_pruning): New static function.
185         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
186         Call compute_tbaa_pruning.
187         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
188         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
189         * gimple-low.c (lower_stmt): Likewise.
190         * tree-gimple.c (is_gimple_stmt): Likewise.
191         * tree-ssa-operands.c (get_expr_operands): Likewise.
192         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
193         * tree-inline.c (estimate_num_insns_1): Likewise.
194         (copy_result_decl_to_var): Likewise.
195         * expr.c (expand_expr_real_1): Likewise.
196         * tree-pretty-print.c (dump_generic_node): Likewise.
197         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
198         * omp-low.c (omp_copy_decl_2): Likewise.
199         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
200         * doc/c-tree.texi (Expression trees): Document
201         CHANGE_DYNAMIC_TYPE_EXPR.
202
203 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
204
205         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
206         with !HONOR_NANS and !HONOR_INFINITIES.
207         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
208
209 2007-06-12  Tristan Gingold  <gingold@adacore.com>
210
211         * gcov.c: Comments updated.
212         (source_info): Add file_time field.
213         (source_index): New variable.
214         (mutiple_files): New variable.
215         (generate_results): New function extracted from process_file.
216         (process_file): Save and restore chain of functions, generate
217         results and free structures only if not merging results.
218         (release_structures): File names are now freed in create_file_names
219         (create_file_names): Free previous file names.
220         (find_source): File date is now read here and modifications in
221         source files is checked here.
222         (read_graph_file): Only reverse order of functions for the current
223         object file.
224         (make_gcov_file_name): Do not generate long names if input_name is
225         NULL.
226         (output_lines): If merging results do not display graph, data and
227         runs informations.
228         Checking source file modification is done in find_source.
229
230         * doc/gcov.texi: Append an s to sourcefile.
231
232 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
233
234         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
235         (forced_nop): New pattern.
236         * config/bfin/bfin.c: Include "df.h".
237         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
238         (bfin_discover_loop): Use df_get_live_in instead of
239         global_live_at_start.
240         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
241         df_analyze when done.
242         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
243         the insns.  Use QImode for the final insn in a bundle.  Call
244         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
245         gen_nop.
246         (reorder_var_tracking_notes): New function.
247         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
248         update_life_info.  Call df_analyze after scheduling and bundle
249         generation.  Call reorder_var_tracking_notes if generating these notes.
250         Call df_finish_pass at the end.
251
252 2007-06-12  Dirk Mueller  <dmueller@suse.de>
253
254         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
255         a comparison, not an assignment.
256
257 2007-06-12  Olivier Hainque  <hainque@adacore.com>
258
259         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
260         Request walking the subtrees only, leaving the current is_lhs/val_only
261         untouched.
262         (convert_non_local_reference): Likewise.
263
264 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
265
266         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
267
268 2007-06-12  Richard Guenther  <rguenther@suse.de>
269
270         PR tree-optimization/15353
271         PR tree-optimization/31657
272         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
273         * timevar.def: Add TV_TREE_IFCOMBINE.
274         * tree-pass.h (pass_tree_ifcombine): Declare.
275         * tree-ssa-ifcombine.c: New file.
276         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
277         * tree-flow.h (blocks_in_phiopt_order): Declare.
278         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
279         (tree-ssa-ifcombine.o): New dependencies.
280
281 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
282
283         PR rtl-optimization/32293
284         * combine.c (simplify_if_then_else): Truncate return from
285         nonzero_bits() to correct mode.
286
287 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
288
289         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
290         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
291
292 2007-06-11  Diego Novillo  <dnovillo@google.com>
293
294         * Makefile.in (reload1.o-warn): Remove.
295
296 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
297
298         * combine.c (subst): Use reg_overlap_mentioned_p
299         instead of comparing register numbers directly.
300
301 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
302
303         * reload1.c (mark_home_live_1): Use the mode parameter.
304
305 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
306
307         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
308         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
309         word "deferred".
310         * df-core.c: Ditto.
311
312 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
313
314         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
315
316 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
317
318         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
319         from integer registers.
320         (FP mode splitters): Handle TFmode.
321
322 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
323
324         * tree-ssa-structalias.c (find_what_p_points_to): Return false
325         for ref-all pointers that point-to anything.
326
327 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
328
329         * config/arm/arm.c (arm_output_dwarf_dtprel,
330         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
331
332 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
333
334         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
335         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
336         to memory moves.
337
338 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
339
340         * gcc/tree.c (signed_or_unsigned_type_for): New.
341         (unsigned_type_for): Use signed_or_unsigned_type_for.
342         (signed_type_for): Use signed_or_unsigned_type_for.
343         * gcc/tree.h (signed_or_unsigned_type_for): New.
344         (get_signed_or_unsigned_type): Remove.
345         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
346         lang_hooks.types.signed_type
347         (size_diffop): Likewise.
348         (all_ones_mask_p): Likewise.
349         (build_range_check): Likewise.
350         (fold_cond_expr_with_comparison): Likewise.
351         (fold_cond_expr_with_comparison): Likewise.
352         (unextend): Likewise.
353         (extract_muldiv_1): Likewise.
354         (fold_single_bit_test_into_sign_test): Likewise.
355         (fold_binary): Likewise.
356         (fold_ternary): Likewise.
357         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
358         instead of get_signed_or_unsigned_type.
359         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
360         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
361         * gcc/expr.c (signed_or_unsigned_type_for): Use
362         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
363         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
364         (lhd_signed_or_unsigned_type): Remove.
365         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
366         signed_or_unsigned_type.
367         (lhd_signed_or_unsigned_type): Remove.
368         * gcc/expmed.c (make_tree): Use signed_type_for instead of
369         lang_hooks.types.signed_type.
370         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
371         c_common_signed_type instead of lang_hooks.types.signed_type.
372         (c_common_unsigned_type): New.
373         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
374         (shorten_compare): Use c_common_unsigned_type instead of
375         c_common_signed_or_unsigned_type.
376         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
377         unsigned_type_for.
378         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
379         lang_hooks.types.signed_type.
380         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
381         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
382         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
383         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
384         instead of unsigned_type_for.
385         * gcc/c-decl.c (groakdeclarator): Likewise.
386         * gcc/c-typeck.c (convert_for_assignment): Likewise.
387         * gcc/c-common.h (c_common_unsigned_type): New.
388
389 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
390
391         PR target/32280
392         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
393         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
394
395 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
396
397         PR middle-end/32279
398         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
399         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
400
401 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
402             Sebastian Pop  <sebpop@gmail.com>
403
404         * lambda-code.c (remove_iv): New.
405         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
406
407 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
408
409         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
410         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
411         * tree-ssa-loop-prefetch.c: Include optabs.h.
412         (FENCE_FOLLOWING_MOVNT): New macro.
413         (struct mem_ref): Add independent_p and storent_p fields.
414         (record_ref): Initalize the new fields.
415         (gather_memory_references_ref): Return true if the reference
416         could be analysed.
417         (gather_memory_references): Check whether all memory accesses
418         in loop were recorded.
419         (should_issue_prefetch_p): Return false for nontemporal stores.
420         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
421         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
422         (determine_loop_nest_reuse): Detect independent memory references.
423         (loop_prefetch_arrays): Call mark_nontemporal_stores.
424         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
425         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
426         * config/i386/i386.h (x86_mfence): Declare.
427         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
428         * config/i386/i386.c (x86_mfence): New variable.
429         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
430
431         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
432         * optabs.c (init_optabs): Initialize storent_optab.
433         * optabs.h (enum optab_index): Add OTI_storent.
434         (storent_optab): Declare.
435         * genopinit.c (optabs): Add initialization for storent_optab.
436         * tree.h (MOVE_NONTEMPORAL): New macro.
437         * expr.c (expand_assignment, store_expr, store_constructor_field,
438         store_constructor, store_field, expand_expr_real_1): Propagate
439         nontemporality of the expanded store.
440         (emit_storent_insn): New function.
441         * expr.h (expand_assignment, store_expr): Declaration changed.
442         * function.c (assign_parm_setup_reg): Pass false as nontemporality
443         to expand_assignment.
444         * stmt.c (expand_asm_expr): Ditto.
445         * calls.c (initialize_argument_information): Pass false as
446         nontemporality to store_expr.
447         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
448         storentsi): New.
449
450 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
451
452         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
453         parameter, use it.
454         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
455
456 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
457
458         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
459         and allow DECL_P here.
460
461 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
462
463         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
464         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
465         track of the size of the expression.
466         * cfghooks.c (merge_blocks): Remove block from loops structure only
467         after call of the merge_blocks hook.
468
469 2007-06-09  Tom Tromey  <tromey@redhat.com>
470
471         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
472         (deprecated_state): Removed.
473         (start_decl): Update.
474         (enum deprecated_states): Moved earlier.
475         (groktypename): Update.
476         (push_parm_decl): Likewise.
477         (grokfield): Likewise.
478         (start_function): Likewise.
479
480 2007-06-09  Ian Lance Taylor  <iant@google.com>
481
482         PR tree-optimization/32169
483         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
484         CONVERT_EXPR, check whether min and max both converted to an
485         overflow infinity representation.
486
487 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
488
489         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
490         not inserted on the edge.
491
492 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
493
494         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
495         instructions if they are supported.
496         (__divsi3, __umodsi3, __modsi3): Likewise.
497         (__ashldi3, __ashrdi3, __lshrdi3): New.
498         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
499
500 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
501             Tony Linthicum <tony.linthicum@amd.com>
502
503         * doc/extend.texi: Add fvect-cost-model flag.
504         * common.opt (fvect-cost-model): New flag.
505         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
506         cost fields in stmt_vec_info struct for STMT.
507         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
508         fields in stmt_vec_info struct and access functions for the same.
509         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
510         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
511         load, store and vector to scalar operation.
512         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
513         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
514         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
515         (TARG_VEC_STORE_COST): Define cost of vector store.
516         (vect_estimate_min_profitable_iters): Define new function.
517         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
518         check to evaluate if loop iterations are less than minimum profitable
519         iterations determined by cost model or minimum vect loop bound defined
520         by user, whichever is more conservative.
521         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
522         run-time check to evaluate if loop iterations are less than minimum
523         profitable iterations determined by cost model or minimum vect loop
524         bound defined by user, whichever is more conservative.
525         (vect_estimate_min_profitable_iterations): New function to estimate
526         mimimimum iterartions required for vector version of loop to be
527         profitable over scalar version.
528         (vect_model_reduction_cost): New function.
529         (vect_model_induction_cost): New function.
530         (vect_model_simple_cost): New function.
531         (vect_cost_strided_group_size): New function.
532         (vect_model_store_cost): New function.
533         (vect_model_load_cost): New function.
534         (vectorizable_reduction): Call vect_model_reduction_cost during
535         analysis phase.
536         (vectorizable_induction): Call vect_model_induction_cost during
537         analysis phase.
538         (vectorizable_load): Call vect_model_load_cost during analysis phase.
539         (vectorizable_store): Call vect_model_store_cost during analysis phase.
540         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
541         vectorizable_promotion, vectorizable_demotion): Call
542         vect_model_simple_cost during analysis phase.
543
544 2007-06-08  Simon Baldwin  <simonb@google.com>
545
546         * reg-stack.c (get_true_reg): Readability change.  Moved default case
547         label into direct switch statement scope.
548
549 2007-06-08  Simon Baldwin  <simonb@google.com>
550
551         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
552         in gcc_assert() with '==' comparison.
553
554 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
555
556         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
557         TARGET_ABM handling of x86_popcnt variable.
558
559 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
560
561         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
562         __builtin_copysignq and __builtin_infq built-in functions.
563
564 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
565
566         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
567         SSE4.2 section.  Correct built-in function names in SSE4A section.
568
569 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
570
571         PR tree-optimization/32243
572         * tree-vect-transform.c (vectorizable_type_promotion): Move check
573         for ncopies after ratio check between nunits_out and nunits_in.
574         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
575
576 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
577
578         PR tree-optimization/32224
579         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
580         vectorization upon a non GIMPLE_MODIFY_STMT.
581
582 2007-06-08  Christian Bruel  <christian.bruel@st.com>
583
584         PR target/29953
585         * config/sh/sh.md (doloop_end): New pattern and splitter.
586         * loop-iv.c (simple_rhs_p): Check for hardware registers.
587
588 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
589
590         PR middle-end/32209
591         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
592         functions.
593         (verify_dominators): Do not change dominance tree.
594
595 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
596
597         * config/sh/constraints.md: New file.
598         * config/sh/sh.c: Include tm-constrs.h.
599         (reg_class_from_letter): Remove.
600         (prepare_cbranch_operands): Use satisfies_constraint_*
601         function instead of macro.
602         (andcosts, broken_move, sh_secondary_reload): Likewise.
603         * config/sh/predicates.md (trapping_target_operand): Likewise.
604         (and_operand, arith_operand, arith_reg_or_0_operand,
605         cmp_operand, logical_operand, target_operand,
606         ua_address_operand, ua_offset, xor_operand): Likewise.
607         * config/sh/sh.md: Include constraints.md.
608         (*movsicc_t_false): Use satisfies_constraint_* function
609         instead of macro.
610         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
611         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
612         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
613         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
614         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
615         (REG_CLASS_FROM_CONSTRAINT): Remove.
616         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
617         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
618         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
619         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
620         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
621         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
622         function instead of macro.
623         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
624         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
625         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
626         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
627         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
628         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
629         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
630         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
631         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
632         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
633         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
634         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
635         EXTRA_CONSTRAINT_STR): Likewise.
636         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
637
638 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
639
640         * config/i386/darwin.h (STACK_BOUNDARY): Define.
641
642 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
643
644         PR c++/30759
645         * c-common.h (flag_cpp0x): Replaced by...
646         (cxx_dialect): ... this new variable specifying the C++ dialect that
647         is used.
648         * c-common.c (flag_cpp0x): Removed.
649         (cxx_dialect): Defined.
650         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
651         cxx_dialect.
652         * c-opts.c (c_common_post_options): Likewise.
653         (set_std_cxx98): Set cxx_dialect to cxx98.
654         (set_std_cxx0x): Set cxx_dialect to cxx0x.
655
656 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
657             Hui-May Chang <hm.chang@apple.com>
658
659         * doc/invoke.texi (Darwin Options): Update documentation for
660         -mmacosx-version-min.
661         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
662         * config/darwin-driver.c: New file.
663         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
664         * config/t-darwin (darwin-driver.o): New rule.
665
666         * config/darwin-c.c (version_as_macro): Ignore low digit.
667
668 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
669
670         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
671         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
672         (CSGNMODE): New mode macro.
673         (CSGNVMODE): New mode attribute.
674         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
675         expander using CSGNMODE mode macro.  Handle TFmode.
676         (copysign<mode>3_const): Rename from copysignsf3_const and
677         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
678         Handle TFmode.
679         (copysign<mode>3_var): Rename from copysignsf3_var and
680         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
681         Handle TFmode.
682         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
683         mode macro.  Handle TFmode.
684         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
685         (iortf3, *iortf3): Ditto.
686         (xortf3, *xortf3): Ditto.
687         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
688         TFmode and TImode masks.
689         (ix86_expand_copysign): Expand TFmode copysign insn.
690         (IX86_BUILTIN_INFQ): New.
691         (IX86_BUILTIN_FABSQ): Ditto.
692         (IX86_BUILTIN_COPYSIGNQ): Ditto.
693         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
694         [__builtin_fabsq]: Ditto.
695         [__builtin_copysignq]: Ditto.
696         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
697         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
698         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
699         ix86_expand_binop_builtin().
700
701 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
702
703         * config/xtensa/lib1funcs.asm: Clean up whitespace.
704
705 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
706
707         PR target/31850
708         * rtl.h (push_to_sequence2): New.
709         * emit-rtl.c (push_to_sequence2): New.
710         * function.c (assign_parm_data_all): Add new fields.
711         (assign_parm_setup_block): Call push_to_sequence2 instead of
712         push_to_sequence.
713         (assign_parm_setup_reg): Ditto.
714         (assign_parm_setup_stack): Ditto.
715         (assign_parms_unsplit_complex): Ditto.
716         (assign_parms): Change field name.
717
718 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
719
720         PR tree-optimization/32220
721         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
722         phi node is reached before defining statement.
723
724 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
725
726         PR tree-opt/32231
727         * tree-vect-transform.c (vectorizable_call): Call update_stmt
728         after changing the right hand side of the assignment.
729
730 2007-06-06  Eric Christopher  <echristo@apple.com>
731
732         * config.gcc (i?86-*-darwin*): Remove arch parameter.
733         (x86_64-*-darwin*): Ditto.
734         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
735         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
736
737 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
738
739         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
740         coding conventions.
741         (add_key): Likewise.
742         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
743         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
744         variable names.
745         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
746         (add_cost_one_coalesce): Likewise.
747         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
748         variable names. Rename orig to orig_name for consistency.
749         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
750         conventions.
751         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
752         (record_equivalences_from_stmt): Likewise.
753         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
754         the coding conventions.
755         (memory_ssa_name_same): Likewise.
756         (dse_optimize_stmt): Likewise.
757         (dse_record_phis): Likewise.
758         (dse_finalize_block): Likewise.
759         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
760         keywords as variable names.
761         (may_move_till): Cast according to the coding conventions.
762         (force_move_till_expr): Avoid using C++ keywords as variable names.
763         (force_move_till): Cast according to the coding conventions.
764         (memref_hash): Likewise.
765         (memref_eq): Likewise.
766         (gather_mem_refs_stmt): Likewise.
767         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
768         keywords as variable names.
769         (idx_find_step): Cast according to the coding conventions.
770         (idx_record_use): Likewise.
771         (find_depends): Likewise.
772         (prepare_decl_rtl): Likewise.
773         (mbc_entry_hash): Likewise.
774         (mbc_entry_eq): Likewise.
775         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
776         (simplify_replace_tree): Avoid using C++ keywords as variable names.
777         (idx_infer_loop_bounds): Cast according to the coding conventions.
778         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
779         * tree-ssa-math-opts.c (occ_new ): Likwise.
780         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
781         macros.
782         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
783         names.
784         (add_use_op): Likewise.
785         (add_vop): Likewise.
786         (add_vuse_op): Likewise.
787         (add_vdef_op): Likewise.
788         (get_expr_operands): Likewise.
789         (push_stmt_changes): Use type safe memory macros.
790         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
791         keywords as variable names.
792         (conditional_replacement): Likewise.
793         (minmax_replacement): Likewise.
794         (abs_replacement): Likewise.
795         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
796         coding conventions.
797         (insert_fake_stores): Avoid using C++ keywords as variable names.
798         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
799         conventions.
800         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
801         (heapvar_insert): Use type safe memory macros.
802         (new_var_info): Cast according to the coding conventions.
803         (new_constraint): Likewise.
804         (remove_preds_and_fake_succs): Use type safe memory macros.
805         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
806         conventions.
807         (thread_single_edge): Likewise.
808         (thread_through_loop_header): Likewise.
809
810 2007-06-06  Eric Christopher  <echristo@apple.com>
811
812         * config/i386/i386.c (override_options): Move handling
813         of TARGET_SUBTARGET* earlier.
814
815 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
816
817         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
818         use %n on printf.
819
820 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
821
822         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
823         emited outside of basic block.
824         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
825         the created blocks.
826         * rtl.h (delete_insn_chain): Declaration changed.
827         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
828         non-removed insns.
829         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
830         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
831         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
832         to delete_insn_chain.
833         (rtl_verify_flow_info_1): Verify that the insns in header and footer
834         do not have bb field set.
835         (rtl_verify_flow_info): Verify that insns between basic blocks do not
836         have bb field set.
837         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
838         * cfgcleanup.c (try_optimize_cfg): Ditto.
839
840 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
841
842         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
843         (lambda_body_vector_new): Use type safe memory macros.
844         (lambda_linear_expression_new): Likewise.
845         (lambda_loopnest_new): Likewise.
846         (lambda_lattice_new): Likewise.
847         (replace_uses_equiv_to_x_with_y): Cast according to the coding
848         conventions. Use type safe memory macros.
849         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
850         (lambda_body_vector_s): Likewise.
851         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
852         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
853
854 2007-06-06  Richard Guenther  <rguenther@suse.de>
855
856         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
857         if we need to schedule cfg_cleanup.
858         (tree_ssa_forward_propagate_single_use_vars): Do so.
859
860 2007-06-06  Ian Lance Taylor  <iant@google.com>
861
862         * fold-const.c (merge_ranges): If range_successor or
863         range_predecessor fail, just return 0.
864
865 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
866
867         PR tree-optimization/32216
868         * tree-vectorizer.c (supportable_widening_operation): Determine
869         signedness of FIX_TRUNC_EXPR from output operand.
870         (supportable_narrowing_operation): Ditto.
871         * tree-vect-generic.c (expand_vector_operations_1): Determine
872         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
873         from input operand.
874
875 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
876
877         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
878         (struct pta): ...from here. Change flags to unsigned to avoid
879         excessive casting (as it is used as a bit mask).
880         (override_options): Add casts according to the coding convenventions.
881         (x86_64_elf_unique_section): Likewise.
882         (examine_argument): Avoid using C++ keywords as variable names.
883         (construct_container): Likewise.
884         (legitimize_pic_address): Likewise.
885         (get_dllimport_decl): Cast according to the coding conventions. Use
886         type safe memory macros.
887         (legitimize_address): Cast according to the coding conventions.
888         (emit_i387_cw_initialization): Corrected the type of slot to enum
889         ix86_stack_slot.
890         (ix86_init_machine_status): Use type safe memory macros.
891         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
892         (bdesc_pcmpistr): Likewise.
893         (bdesc_crc32): Likewise.
894         (bdesc_sse_3arg): Likewise.
895         (bdesc_2arg): Likewise.
896         (bdesc_1arg): Likewise.
897         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
898         (ix86_expand_sse_pcmpistr): Likewise.
899         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
900         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
901         int to match the langhook definition.
902         (ix86_builtin_conversion): Change the type of code to unsigned init to
903         match the langhook definition.
904         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
905         names.
906         (ix86_preferred_output_reload_class): Likewise.
907         (ix86_cannot_change_mode_class): Likewise.
908         (ix86_memory_move_cost): Likewise.
909         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
910         avoid excessive casting later on.
911         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
912
913 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
914
915         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
916         as flags setting insn.
917         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
918
919 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
920
921         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
922         (UNSPEC_ROUND): New.
923         ("sse4_1_round<mode>2"): New insn pattern.
924         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
925         SSE4.1 targets.
926         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
927         expander using SSEMODEF mode macro.  Expand using
928         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
929         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
930         expander using SSEMODEF mode macro.  Expand using
931         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
932         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
933         expander using SSEMODEF mode macro.  Expand using
934         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
935         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
936         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
937         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
938         UNSPEC_ROUNDS.
939
940 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
941             Sebastian Pop  <sebpop@gmail.com>
942
943         * lambda.h (build_linear_expr): New.
944         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
945         Use build_linear_expr, call fold and force_gimple_operand.
946         (lambda_loopnest_to_gcc_loopnest): Check that there is
947         something to insert.
948         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
949
950 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
951
952         PR preprocessor/23479
953         * doc/extend.texi: Document the 0b-prefixed binary integer
954         constant extension.
955
956 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
957
958         PR tree-optimization/32215
959         * tree-vectorizer.c (supportable_widening_operation): Return false
960         for unsupported FIX_TRUNC_EXPR tree code.
961         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
962
963 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
964
965         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
966         register on SPE targets.  Change documentation to reflect
967         reality.
968         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
969         Change FIXED_SCRATCH to 14 and document why we're keeping r14
970         out of the register allocation pool.
971         (rs6000_reg_live_or_pic_offset_p): New function.
972         (rs6000_emit_prologue): Move the actual saving of LR up to free
973         r0 for holding r11.  Split saving of SPE 64-bit registers into
974         its own case.  Ensure that offsets will always be in-range for
975         'evstdd' by using r11 as a scratch register to point at the start
976         of the SPE save area.  Save r11 if necessary, as it is the static
977         chain register.
978         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
979         into its own case.  Ensure that offsets will always be in-range
980         for 'evldd' by using r11 as a scratch register to point at the
981         start of the SPE save area.  Also adjust r11 when restoring
982         the stack pointer to compensate for pre-loading r11.
983
984 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
985
986         * cfg.c (init_flow): Use type safe memory macros.
987         (alloc_block): Likewise.
988         (unchecked_make_edge): Likewise.
989         (dump_flow_info): Avoid using C++ keywords as variable names.
990         (copy_original_table_clear): Cast according to the coding conventions.
991         (copy_original_table_set): Likewise.
992         * cfgexpand (label_rtx_for_bb): Likewise.
993         (expand_gimple_basic_block): Likewise.
994         * cfghooks.c (dump_bb): Likewise.
995         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
996         variable names.
997         (lv_add_condition_to_bb): Likewise.
998         * cfglayout (relink_block_chain): Cast according to the coding
999         conventions.
1000         (fixup_reorder_chain): Likewise.
1001         (fixup_fallthru_exit_predecessor): Likewise.
1002         * cfgloop.c (glb_enum_p): Likewise.
1003         (get_exit_description): Likewise.
1004         (dump_recorded_exit): Likewise.
1005         * cfgloop.h (enum loop_estimation): Move out of struct scope...
1006         (struct loop): ... from here.
1007         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
1008         conventions.
1009         * cfgrtl.c (rtl_create_basic_block): Likewise.
1010         (rtl_split_block): Likewise.
1011         (rtl_dump_bb): Likewise.
1012         (cfg_layout_split_block): Likewise.
1013         (init_rtl_bb_info): Use typesafe memory macros.
1014
1015         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
1016         * graphds.h: Updated all usages of edge to graph_edge.
1017         * graphds.c: Likewise.
1018         * cfgloopanal.c: Likewise.
1019
1020 2007-06-05  Ian Lance Taylor  <iant@google.com>
1021
1022         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
1023         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
1024         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
1025         expression.
1026         (test_for_singularity): Likewise.
1027
1028 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1029
1030         * config/i386/constraints.md ("Y2"): Replaced by ...
1031         ("Yt"): This.
1032         * config/i386/i386.md: Likewise.
1033         * config/i386/mmx.md: Likewise.
1034         * config/i386/sse.md: Likewise.
1035
1036 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1037
1038         * config/i386/constraints.md ("z"): Replaced by ...
1039         ("Y0"): This.
1040         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
1041         (sse4_1_blendvps): Likewise.
1042         (sse4_1_pblendvb): Likewise.
1043         (sse4_2_pcmpestr): Likewise.
1044         (sse4_2_pcmpestrm): Likewise.
1045         (sse4_2_pcmpestr_cconly): Likewise.
1046         (sse4_2_pcmpistr): Likewise.
1047         (sse4_2_pcmpistrm): Likewise.
1048         (sse4_2_pcmpistr_cconly): Likewise.
1049
1050 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
1051
1052         * matrix-reorg.c (transform_access_sites): Fix computation.
1053         (transform_allocation_sites): Same.
1054
1055 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1056
1057         * config/i386/i386.c (override_options): Use
1058         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
1059
1060 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1061
1062         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
1063         (nonimm_not_xmm0_operand): Ditto.
1064         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
1065         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
1066         as operand[2] predicate.  Require "z" class XMM register for
1067         operand[3].  Adjust asm template.
1068         ("sse4_1_blendvpd"): Ditto.
1069         ("sse4_1_pblendvb"): Ditto.
1070         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
1071         force op2 into xmm0 register for variable blend instructions.
1072
1073 2007-06-04  Tom Tromey  <tromey@redhat.com>
1074
1075         * c-tree.h (start_enum): Update.
1076         (build_enumerator): Likewise.
1077         * c-decl.c (enum_next_value): Removed.
1078         (enum_overflow): Likewise.
1079         (start_enum): Add c_enum_contents argument.  Don't use globals.
1080         (build_enumerator): Likewise.
1081         * c-tree.h (struct c_enum_contents): New struct.
1082
1083 2007-06-04  Tom Tromey  <tromey@redhat.com>
1084
1085         * c-common.c (c_common_get_alias_set): Fix indentation.
1086
1087 2007-06-04  Ian Lance Taylor  <iant@google.com>
1088
1089         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
1090         to overflow, reduce overflow infinity to regular infinity.
1091         (vrp_var_may_overflow): New static function.
1092         (vrp_visit_phi_node): Check vrp_var_may_overflow.
1093
1094 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
1095
1096         * stor-layout.c (layout_type): Remove duplicate code.
1097
1098 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
1099
1100         PR c/32191
1101         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
1102         before build_common_builtin_nodes ().
1103
1104 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
1105
1106         PR target/31733
1107         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
1108
1109 2007-06-04  Jan Hubicka  <jh@suse.cz>
1110
1111         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
1112         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
1113         instead of _stat version.
1114
1115 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1116
1117         PR tree-optimization/32194
1118         * tree-predcom.c (determine_offset): Check that both references have
1119         the same type.
1120
1121 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1122
1123         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
1124         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
1125         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
1126         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
1127         Add argument to iterate_fix_dominators call.
1128         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
1129         * gcse.c (hoist_code): Change domby to vector.
1130         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
1131         Add argument to iterate_fix_dominators call.
1132         * loop-doloop.c (doloop_modify): Changed recount_dominator to
1133         recompute_dominator.
1134         * lambda-code.c (perfect_nestify): Ditto.
1135         * cfgloopanal.c: Include graphds.h.
1136         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
1137         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
1138         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
1139         add_edge call.
1140         * graphds.c: New file.
1141         * graphds.h: New file.
1142         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
1143         (get_dominated_by, get_dominated_by_region): Change return type to
1144         vector.
1145         (verify_dominators): Recompute all dominators and compare the results.
1146         (recount_dominator): Renamed to ...
1147         (recompute_dominator): ... this.  Do not check that the block is
1148         dominated by entry.
1149         (iterate_fix_dominators): Reimplemented.
1150         (prune_bbs_to_update_dominators, root_of_dom_tree,
1151         determine_dominators_for_sons): New functions.
1152         * et-forest.c (et_root): New function.
1153         * et-forest.h (et_root): Declare.
1154         * Makefile.in (graphds.o): Add.
1155         (cfgloopanal.o): Add graphds.h dependency.
1156         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
1157         * basic-block.h (get_dominated_by, get_dominated_by_region,
1158         iterate_fix_dominators): Declaration changed.
1159         (recount_dominator): Renamed to ...
1160         (recompute_dominator): ... this.
1161         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
1162         (thread_through_all_blocks): Do not free dominance info.
1163
1164 2007-06-03  Andreas Schwab  <schwab@suse.de>
1165
1166         * config/m68k/m68k.c (override_options): Don't override
1167         REAL_MODE_FORMAT.
1168         * config/m68k/m68k-modes.def (SF, DF): Define to use
1169         motorola_single_format and motorola_double_format, resp.
1170         * real.c (motorola_single_format): Renamed from
1171         coldfire_single_format.
1172         (motorola_double_format): Renamed from coldfire_double_format.
1173         (encode_ieee_extended): Generate a proper canonical NaN image
1174         respecting canonical_nan_lsbs_set.
1175         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
1176         true.
1177         * real.h: Adjust declarations.
1178
1179 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1180
1181         PR target/32163
1182         * config/sh/sh.md (symGOT_load): Don't schedule insns when
1183         the symbol is generated with the stack protector.
1184
1185 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
1186
1187         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
1188         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
1189         "interrupt".
1190         * doc/extend.texi (interrupt): Mention m68k.
1191
1192 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
1193
1194         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
1195         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
1196         (ix86_expand_sse_pcmpestr): Do not check operands for
1197         "register_operand", when insn operand predicate is "register_operand".
1198         (ix86_expand_sse_pcmpistr): Ditto.
1199
1200 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
1201             Uros Bizjak  <ubizjak@gmail.com>
1202
1203         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
1204         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
1205         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
1206         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
1207         * config/i386/constraints.md ("z"): New register constraint
1208         for members of SSE_FIRST_REG class.
1209         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
1210         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
1211         SSE_FIRST_REG class.
1212         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
1213         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
1214         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
1215         (IX86_BUILTIN_PCMPESTRM128): Likewise.
1216         (IX86_BUILTIN_PCMPESTRA128): Likewise.
1217         (IX86_BUILTIN_PCMPESTRC128): Likewise.
1218         (IX86_BUILTIN_PCMPESTRO128): Likewise.
1219         (IX86_BUILTIN_PCMPESTRS128): Likewise.
1220         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
1221         (IX86_BUILTIN_PCMPISTRI128): Likewise.
1222         (IX86_BUILTIN_PCMPISTRM128): Likewise.
1223         (IX86_BUILTIN_PCMPISTRA128): Likewise.
1224         (IX86_BUILTIN_PCMPISTRC128): Likewise.
1225         (IX86_BUILTIN_PCMPISTRO128): Likewise.
1226         (IX86_BUILTIN_PCMPISTRS128): Likewise.
1227         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
1228         (struct builtin_description): Change "flag" field to unsigned.
1229         (bdesc_pcmpestr): New builtin description table.
1230         (bdesc_pcmpistr): Likewise.
1231         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
1232         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
1233         Initialize pcmp[ei]str[im] insns for SSE4.2.
1234         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
1235         (ix86_expand_sse_pcmpistr): Likewise.
1236         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
1237         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
1238         (UNSPEC_PCMPISTR): Likewise.
1239         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
1240         (sse4_2_pcmpestri):New isns pattern.
1241         (sse4_2_pcmpestrm): Likewise.
1242         (sse4_2_pcmpestr_cconly): Likewise.
1243         (sse4_2_pcmpistr): New insn patern and splitter.
1244         (sse4_2_pcmpistri):New isns pattern.
1245         (sse4_2_pcmpistrm): Likewise.
1246         (sse4_2_pcmpistr_cconly): Likewise.
1247         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
1248         in SSE4.2.
1249
1250 2007-06-01  David Daney  <ddaney@avtrex.com>
1251
1252         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
1253         LOADGP_ABSOLUTE and not binds_local_p.
1254
1255 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
1256
1257         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
1258
1259 2007-06-01  Ian Lance Taylor  <iant@google.com>
1260
1261         * tree-vrp.c (compare_name_with_value): Always set
1262         used_strict_overflow if we get a result from the variable itself.
1263
1264 2007-06-01  Ian Lance Taylor  <iant@google.com>
1265
1266         PR rtl-optimization/31455
1267         * lower-subreg.c (find_decomposable_subregs): Don't decompose
1268         subregs which have a cast between modes which are not tieable.
1269
1270 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
1271
1272         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
1273         breaks after return statements.
1274
1275 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
1276
1277         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
1278         only after no_new_pseudos.
1279
1280 2007-05-31  Eric Christopher  <echristo@apple.com>
1281
1282         * expr.c (convert_move): Assert that we don't have a BLKmode
1283         operand.
1284         (store_expr): Handle BLKmode moves by calling emit_block_move.
1285
1286 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
1287
1288         * c-typeck.c (build_indirect_ref): Include type in error message.
1289         (build_binary_op): Pass types to binary_op_error.
1290         * c-common.c (binary_op_error): Take two type arguments, print out
1291         types with error.
1292         * c-common.h (binary_op_error): Update prototype.
1293
1294 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1295
1296         * config/i386/i386.c: Correct coments on -mno-sse4.
1297
1298 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1299
1300         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
1301         (x86_64-*-*): Likewise.
1302         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
1303         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
1304         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
1305         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
1306         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
1307         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
1308         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
1309         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
1310         (OPTION_MASK_ISA_SSE4): Likewise.
1311         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
1312         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
1313         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
1314         (override_options): Support SSE4.2.
1315         (ix86_build_const_vector): Support SImode and DImode.
1316         (ix86_build_signbit_mask): Likewise.
1317         (ix86_expand_int_vcond): Support V2DImode.
1318         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
1319         (IX86_BUILTIN_CRC32HI): Likewise.
1320         (IX86_BUILTIN_CRC32SI): Likewise.
1321         (IX86_BUILTIN_CRC32DI): Likewise.
1322         (IX86_BUILTIN_PCMPGTQ): Likewise.
1323         (bdesc_crc32): Likewise.
1324         (bdesc_sse_3arg): Likewise.
1325         (ix86_expand_crc32): Likewise.
1326         (ix86_init_mmx_sse_builtins): Support SSE4.2.
1327         (ix86_expand_builtin): Likewise.
1328         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
1329         __SSE4_2__ for -msse4.2.
1330         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
1331         (CRC32MODE): Likewise.
1332         (crc32modesuffix): Likewise.
1333         (crc32modeconstraint): Likewise.
1334         (sse4_2_crc32<mode>): Likewise.
1335         (sse4_2_crc32di): Likewise.
1336         * config/i386/i386.opt (msse4.2): New for SSE4.2.
1337         (msse4): Likewise.
1338         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
1339         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
1340         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
1341         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
1342         (vcondu<mode>): Likewise.
1343         * doc/extend.texi: Document SSE4.2 built-in functions.
1344         * doc/invoke.texi: Document -msse4.2/-msse4.
1345
1346 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
1347
1348         PR tree-optimization/32160
1349         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
1350         variable as gimple reg.
1351         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
1352
1353 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
1354
1355         * gcc.c (main): Don't consider linker options when issuing the
1356         warning about a linker input file not being used.
1357
1358 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1359
1360         * tree-vrp.c (compare_names): Initialize sop.
1361
1362 2007-05-30  Dirk Mueller  <dmueller@suse.de>
1363
1364         * cgraphunit.c (cgraph_analyze_function): Remove
1365         computation of inline parameters.
1366
1367 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
1368
1369         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
1370
1371 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
1372
1373         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
1374         Add vx-common.h.  Include vxworks.h between vx-common.h and
1375         arm/vxworks.h.
1376         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
1377         redefining.
1378         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
1379         (TARGET_ASM_DESTRUCTOR): Likewise.
1380         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
1381         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
1382         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
1383         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
1384         (VXWORKS_ENDIAN_SPEC): Define.
1385         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
1386         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
1387         VXWORKS_* equivalents.
1388         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
1389         (ASM_FILE_START): Delete.
1390         (TARGET_VERSION): Reformat.
1391         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
1392         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
1393         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
1394         (FPBIT, DPBIT): Define.
1395         (fp-bit.c, dp-bit.c): New rules.
1396         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
1397         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
1398         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
1399         * config/arm/arm.h: Include vxworks-dummy.h.
1400         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
1401         Mark with ATTRIBUTE_UNUSED.
1402         (arm_override_options): Do not allow VxWorks RTP PIC to be used
1403         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
1404         make it incompatible with -msingle-pic-base.
1405         (arm_function_ok_for_sibcall): Return false for calls that might
1406         go through a VxWorks PIC PLT entry.
1407         (require_pic_register): New function, split out from...
1408         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
1409         for VxWorks RTPs.
1410         (arm_load_pic_register): Handle the VxWorks RTP initialization
1411         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
1412         (arm_emit_call_insn): New function.
1413         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
1414         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
1415         (pic_offset_arm): New pattern.
1416         (call, call_value): Use arm_emit_call_insn.
1417         (call_internal, call_value_internal): New expanders.
1418         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
1419         VxWorks unless __PIC__.
1420
1421 2007-05-30  Eric Christopher  <echristo@gmail.com>
1422
1423         * genrecog.c: Include regs.h in generated file.
1424         * genemit.c: Ditto. Fix up formatting.
1425         * config/mn10300/constraints.md: New.
1426         * config/mn10300/mn10300.md: Include.
1427         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
1428         Fix up for removed macro.
1429         * config/mn10300/predicates.md (call_address_operand):  Ditto.
1430         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
1431         (CONST_OK_FOR_I): Ditto.
1432         (CONST_OK_FOR_J): Ditto.
1433         (CONST_OK_FOR_K): Ditto.
1434         (CONST_OK_FOR_L): Ditto.
1435         (CONST_OK_FOR_M): Ditto.
1436         (CONST_OK_FOR_N): Ditto.
1437         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
1438         (OK_FOR_Q): Ditto.
1439         (OK_FOR_R): Ditto.
1440         (OK_FOR_T): Ditto.
1441         (EXTRA_CONSTRAINT): Ditto.
1442
1443 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
1444
1445         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
1446         Remove defines.
1447         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
1448         OPTION_MASK_ISA_64BIT.
1449         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
1450
1451 2007-05-30  Richard Guenther  <rguenther@suse.de>
1452
1453         PR middle-end/32152
1454         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
1455         types for comparison.
1456         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
1457         with original typed arguments.
1458         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
1459
1460 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
1461
1462         PR tree-optimization/31769
1463         * except.c (duplicate_eh_regions): Clear prev_try if
1464         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
1465
1466 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
1467
1468         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
1469         * tree-ssa-sink.c (statement_sink_location): Return basic block and
1470         bsi of the location where statements should be inserted.
1471         (sink_code_in_bb): Take bsi from statement_sink_location.
1472         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
1473         instead of bsi_start.
1474         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
1475         bsi_insert_after.
1476         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
1477         (bsi_move_before): Document inconsistency with bsi_move_after.
1478         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
1479
1480 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
1481
1482         * config/i386/i386.h (TARGET_ABM): New define.
1483         (TARGET_POPCNT): Ditto.
1484         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
1485         New temporary defines to redefine from OPTION_ISA_* defines.
1486         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
1487         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
1488         (ix86_isa_flags): New extern int declaration.
1489         (TARGET_SUBTARGET_DEFAULT): New define.
1490         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
1491         (TARGET_SUBTARGET32_DEFAULT): Ditto.
1492         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
1493         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
1494         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
1495         * config/i386/darwin.h: Change TARGET_64BIT define to
1496         OPTION_ISA_64BIT.
1497
1498         * config/i386/i386.opt (m3dnowa): Define as undocumented option
1499         using existing "ix86_isa_flags" varible.
1500         (m32, m64): Use existing "ix86_isa_flags" variable.
1501         (mmmx, m3dnow): Ditto.
1502         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
1503         (mabm): Define as non-negative option using "x86_abm" variable.
1504         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
1505
1506         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
1507         Rewrite feature test bitmap.
1508         (ix86_isa_flags): New initialized global int varible.
1509         (ix86_isa_flags_explicit): New static int variable.
1510         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
1511         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
1512         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
1513         target_flags_explicit.
1514         (override_options): Remove "target_enable" and "target_disable" fields
1515         from "struct ptt". Update processor_target_table accordingly. Remove
1516         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
1517         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
1518         "target_flags" and "ix86_isa_flags_explicit" instead of
1519         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
1520         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
1521         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
1522         to true when either of PTA_POPCNT or PTA_ABM is set in
1523         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
1524         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
1525         processor_alias_table flags entry.  Remove handling of
1526         "target_enable" and "target_disable" fields of processor_target_table.
1527         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
1528         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
1529         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
1530         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
1531         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
1532         "target_flags".
1533         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
1534
1535 2007-05-29  David Daney  <ddaney@avtrex.com>
1536
1537         PR gcc/31975
1538         * config/mips/mips.c (mips_output_mi_thunk): Emit
1539         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
1540
1541 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
1542         * config/i386/i386.c (ix86_function_regparm): Added checking of
1543         ix86_force_align_arg_pointer to determine the number of
1544         register parameters.
1545
1546 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
1547
1548         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
1549         (SET_DR_MISALIGNMENT): New.
1550         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
1551         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
1552         Use SET_DR_MISALIGNMENT.
1553         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
1554         pointer.
1555         * tree-data-ref.c (create_data_ref, compute_all_dependences,
1556         find_loop_nest): Export.
1557         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
1558         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
1559         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
1560         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
1561         New macros.
1562         (struct mem_ref): Add field reuse_distance.
1563         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
1564         Initialize reuse_distance field.
1565         (issue_prefetch_ref): Select temporality of prefetch according to
1566         reuse_distance.
1567         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
1568         self_reuse_distance, determine_loop_nest_reuse): New functions.
1569         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
1570         (tree_ssa_prefetch_arrays): Dump L2 cache size.
1571         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
1572         dependency.
1573
1574 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
1575
1576         * tree-ssa-alias.c: Add aliasing overview.
1577
1578 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
1579             Danny Smith  <dannysmith@users.sourceforge.net>
1580
1581         PR target/29498
1582         * config/i386/t-crtfm: Compile crtfastmath.o with
1583         -minline-all-stringops.
1584         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
1585         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
1586
1587 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1588
1589         * doc/md.texi: Document constraints on HP PA-RISC.
1590
1591         * pa/constraints.md: New file.
1592         * pa.md: Include constraints.md.
1593         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
1594         (integer_store_memory_operand, ldil_cint_p): New functions.
1595         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
1596         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
1597         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
1598         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
1599         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
1600
1601 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
1602
1603         PR c/31339
1604         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
1605         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
1606         case POSTDECREMENT_EXPR>): Return the error_mark_node
1607         if either the real or imaginary parts would an
1608         error_mark_node.
1609
1610 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
1611
1612         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
1613         name when we remove it from a call.
1614
1615 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
1616
1617         * targhooks.c (default_narrow_bitfield): Remove.
1618         * targhooks.h: Remove the prototype for
1619         default_narrow_bitfield.
1620
1621         * langhooks-def.h: Remove the prototype for
1622         hook_get_alias_set_0.
1623         * langhooks.c (hook_get_alias_set_0): Remove.
1624
1625         * global.c (EXECUTE_IF_CONFLICT): Remove.
1626
1627 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1628
1629         PR tree-opt/32100
1630         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
1631         return true when truth_value_p is true and the type
1632         is of signed:1.
1633
1634 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
1635
1636         * doc/install.texi (Prerequisites): We no longer require Autoconf
1637         2.13 for the top-level.
1638
1639 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
1640
1641         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
1642         memory access via x86_expand_vector_move_misalign() only for
1643         TImode values on 32-bit targets.
1644
1645 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
1646
1647         * matrix-reorg.c: New file. Implement matrix flattening and
1648         transposing optimization.
1649         * tree-pass.h: Add matrix reorg pass.
1650         * common.opt: Add fipa-mreorg flag.
1651         * Makefile.in: Add matrix-reorg.c.
1652         * passes.c: Add matrix reorg pass.
1653         * varpool.c (add_new_static_var): New function.
1654         * cgraph.h (add_new_static_var): Declare.
1655
1656 2007-05-27  Eric Christopher  <echristo@apple.com>
1657
1658         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
1659         sp_offset depending on stack size. Save r12 depending
1660         on registers we're saving later.
1661         (rs6000_emit_epilogue): Update sp_offset depending only
1662         on stack size.
1663
1664 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
1665
1666         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
1667         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
1668         * ifcvt.c (if_convert): Ditto.
1669         * tree-ssa-threadupdate.c (thread_block): Ditto.
1670         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
1671         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
1672         verify_loop_closed_ssa): Check number_of_loops instead of
1673         current_loops.
1674         * predict.c (tree_estimate_probability): Ditto.
1675         * tree-if-conv.c (main_tree_if_conversion): Ditto.
1676         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
1677         * modulo-sched.c (sms_schedule): Ditto.
1678         * tree-scalar-evolution.c (scev_const_prop): Ditto.
1679         (scev_finalize): Do not do anything if scev analysis was not
1680         initialized.
1681         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
1682         current_loops == NULL.
1683         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
1684         * loop-init.c (loop_optimizer_init): Do not free current_loops when
1685         there are no loops.
1686         (loop_optimizer_finalize): Assert that loops were analyzed.
1687         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
1688         rtl_doloop): Check number_of_loops instead of current_loops.
1689         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
1690         current_loops == NULL.
1691         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
1692         gate_tree_vectorize tree_linear_transform, check_data_deps,
1693         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
1694         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
1695         Check number_of_loops instead of current_loops.
1696         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
1697         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
1698         free loops if available.
1699         (execute_pre): Do not pass do_fre to fini_pre.
1700
1701 2007-05-27  Tobias Burnus  <burnus@net-b.de>
1702
1703         PR middle-end/32083
1704         * real.c (mpfr_from_real): Fix sign of -Inf.
1705
1706 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
1707
1708         * tree-vect-transform.c (vectorizable_conversion): Initialize
1709         tree_code variables to ERROR_MARK.
1710         (vectorizable_type_demotion): Likewise.
1711         (vectorizable_type_promotion): Likewise.
1712
1713 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
1714
1715         PR target/32065
1716         * config/i386/i386.md (movti): Handle push operands via
1717         ix86_expand_push().
1718
1719 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
1720
1721         * basic-block.h: Remove the prototype for merge_seq_blocks.
1722         * cfgcleanup.c (merge_seq_blocks): Remove.
1723
1724         * tree-flow.h: Remove the prototype for is_aliased_with.
1725         * tree-ssa-alias.c (is_aliased_with): Remove.
1726
1727 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
1728
1729         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
1730
1731         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
1732
1733         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
1734         ix86_expand_sse4_unpack if SSE4.1 is enabled.
1735         (vec_unpacks_hi_v16qi): Likewise.
1736         (vec_unpacku_lo_v16qi): Likewise.
1737         (vec_unpacks_lo_v16qi): Likewise.
1738         (vec_unpacku_hi_v8hi): Likewise.
1739         (vec_unpacks_hi_v8hi): Likewise.
1740         (vec_unpacku_lo_v8hi): Likewise.
1741         (vec_unpacks_lo_v8hi): Likewise.
1742         (vec_unpacku_hi_v4si): Likewise.
1743         (vec_unpacks_hi_v4si): Likewise.
1744         (vec_unpacku_lo_v4si): Likewise.
1745         (vec_unpacks_lo_v4si): Likewise.
1746
1747 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
1748
1749         * c-typeck.c, config/arm/arm.c, config/darwin.c,
1750         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
1751         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
1752         follow spelling conventions in various
1753         warning/error/diagnostic messages.
1754
1755         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
1756         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
1757         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
1758         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
1759         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
1760         * doc/tm.texi: Follow spelling conventions.
1761
1762 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1763
1764         PR tree-opt/32090
1765         * tree-ssa-forwprop.c
1766         (forward_propagate_addr_into_variable_array_index): Remove
1767         the lhs argument.  Use the type of def_rhs instead of lhs.
1768         (forward_propagate_addr_expr_1): Update use of
1769         forward_propagate_addr_into_variable_array_index.
1770
1771 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
1772             Nigel Stephens  <nigel@mips.com>
1773
1774         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
1775         function attributes, "far" being an alias for "long_call".
1776         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
1777         (mips_near_type_p, mips_far_type_p): New.
1778         (mips_comp_type_attributes): New function to check that attributes
1779         attached to a function type are compatible.
1780         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
1781         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
1782         to the target function of the thunk.
1783         (mips_encode_section_info): Check for "near" and "far" function
1784         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
1785
1786         * config/mips/predicates.md (const_call_insn_operand): Test only
1787         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
1788
1789         * doc/extend.texi (Function Attributes): Document MIPS "near" and
1790         "far" attributes.
1791
1792         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
1793         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
1794         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
1795         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
1796
1797 2007-05-25  Eric Christopher  <echristo@apple.com>
1798
1799         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
1800         to x86-darwin configurations.
1801         * config/i386/t-darwin: Add softfp support.
1802         * config/i386/t-darwin64: Ditto.
1803         * config/i386/sfp-machine.h: If mach then don't use
1804         aliasing, emit a stub to call.
1805
1806 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
1807
1808         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
1809         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
1810         tree-predcom.c, tree-ssa-alias-warnings.c,
1811         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
1812         comment typos.  Follow spelling conventions.
1813         * doc/cpp.texi, doc/invoke.texi: Fix typos.
1814
1815 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
1816
1817         PR target/32065
1818         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
1819         constants into memory.  Expand unaligned memory references for
1820         SSE modes via x86_expand_vector_move_misalign() function.
1821
1822 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
1823
1824         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
1825         "memory" attribute for "sseishft" type insn without operands[2].
1826
1827 2007-05-25  Dirk Mueller  <dmueller@suse.de>
1828             Marcus Meissner <meissner@suse.de>
1829
1830         * doc/extend.texi (alloc_size): New attribute.
1831         * c-common.c (handle_alloc_size_attribute): New.
1832         * tree-object-size.c (alloc_object_size): Use alloc_size
1833         attribute, if available.
1834
1835 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
1836
1837         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
1838         with MASK_SSE2.
1839         (__builtin_ia32_vec_ext_v2di): Likewise.
1840         (__builtin_ia32_vec_ext_v4si): Likewise.
1841         (__builtin_ia32_vec_ext_v8hi): Likewise.
1842         (__builtin_ia32_vec_ext_v16qi): Likewise.
1843         (__builtin_ia32_vec_set_v8hi): Likewise.
1844
1845 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
1846
1847         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
1848
1849 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
1850
1851         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
1852         (arm_is_longcall_p): Rename to...
1853         (arm_is_long_call_p): ...this.  Take a single tree argument and
1854         return a bool.
1855         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
1856         (CUMULATIVE_ARGS): Remove call_cookie.
1857         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
1858         (ENCODED_LONG_CALL_ATTR_P): Delete.
1859         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
1860         LONG_CALL_FLAG_CHAR cases.
1861         (ARM_DECLARE_FUNCTION_SIZE): Delete.
1862         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
1863         ARM_DECLARE_FUNCTION_SIZE.
1864         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
1865         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
1866         (arm_encode_call_attribute, current_file_function_operand): Delete.
1867         (arm_function_in_section_p): New function.
1868         (arm_is_longcall_p): Rename to...
1869         (arm_is_long_call_p): ...this.  Take the target function as a single
1870         argument and return a bool.  Do not rely on call cookies.  Check
1871         whether the target symbol is in the same section as the current
1872         function, not just the same compilation unit.
1873         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
1874         (arm_encode_section_info): Don't encode a call type.
1875         * config/arm/arm.md (call, call_value): Update calls to
1876         arm_is_long(_)call_p.  Simplify logic.
1877         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
1878         Update calls to arm_is_long(_)call_p.
1879
1880 2007-05-25  Richard Guenther  <rguenther@suse.de>
1881
1882         PR tree-optimization/31982
1883         * tree-ssa-forwprop.c
1884         (forward_propagate_addr_into_variable_array_index): Handle arrays
1885         with element size one.
1886
1887 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1888
1889         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
1890         (umulsi3_highpart): Likewise.
1891
1892 2007-05-24  Ian Lance Taylor  <iant@google.com>
1893
1894         PR rtl-optimization/32069
1895         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
1896         is NULL.
1897
1898 2007-05-24  Ollie Wild  <aaw@google.com>
1899
1900         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
1901         description.
1902
1903 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1904
1905         * postreload-gcse.c (reg_changed_after_insn_p): New function.
1906         (oprs_unchanged_p): Use it to check all registers in a REG.
1907         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
1908         (reg_set_between_after_reload_p): Delete.
1909         (reg_used_between_after_reload_p): Likewise.
1910         (reg_set_or_used_since_bb_start): Likewise.
1911         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
1912         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
1913         Use reg_set_between_p instead of reg_set_between_after_reload_p.
1914         * rtlanal.c (reg_set_p): Check whether REG overlaps
1915         regs_invalidated_by_call, rather than just checking the
1916         membership of REGNO (REG).
1917
1918 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
1919
1920         * doc/passes.texi: Document predictive commoning.
1921         * doc/invoke.texi (-fpredictive-commoning): Document.
1922         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
1923         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
1924         adding indices to the generated name.
1925         (schedule_sm): Pass 0 to get_lsm_tmp_name.
1926         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
1927         * tree-pretty-print.c (op_symbol_1): Renamed to ...
1928         (op_symbol_code): ... and exported.
1929         (dump_omp_clause, op_symbol): Use op_symbol_code
1930         instead of op_symbol_1.
1931         * tree-pass.h (pass_predcom): Declare.
1932         * timevar.def (TV_PREDCOM): New timevar.
1933         * tree-ssa-loop.c (run_tree_predictive_commoning,
1934         gate_tree_predictive_commoning, pass_predcom): New.
1935         * tree-data-ref.c (find_data_references_in_loop): Find the
1936         references in dominance order.
1937         (canonicalize_base_object_address): Ensure that the result has
1938         pointer type.
1939         (dr_analyze_innermost): Export.
1940         (create_data_ref): Code to fail for references with invariant
1941         address moved ...
1942         (find_data_references_in_stmt): ... here.
1943         * tree-data-ref.h (dr_analyze_innermost): Declare.
1944         * tree-affine.c: Include tree-gimple.h and hashtab.h.
1945         (aff_combination_find_elt, name_expansion_hash,
1946         name_expansion_eq, tree_to_aff_combination_expand,
1947         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
1948         New functions.
1949         * tree-affine.h (aff_combination_constant_multiple_p,
1950         tree_to_aff_combination_expand): Declare.
1951         * tree-predcom.c: New file.
1952         * common.opt (fpredictive-commoning): New option.
1953         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
1954         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
1955         * Makefile.in (tree-predcom.o): Add.
1956         (tree-affine.o): Add TREE_GIMPLE_H dependency.
1957         * passes.c (init_optimization_passes):  Add dceloop after
1958         copy propagation in loop optimizer.  Add predictive commoning
1959         to loop optimizer passes.
1960
1961 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1962
1963         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
1964         default hook.
1965
1966 2007-05-24  Jan Hubicka  <jh@suse.cz>
1967
1968         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
1969         statistics.
1970         (genheader): Include statistics.h.
1971
1972         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
1973         notes are gone.
1974         * print-rtl.c (flag_dump_unnumbered): Update comments.
1975         (print_rtl): Fix my previous change.
1976         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
1977         specific data.
1978
1979 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
1980
1981         PR middle-end/32018
1982         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
1983         set_loop_copy.
1984         (thread_through_all_blocks): Call initialize_original_copy_tables
1985         and free_original_copy_tables.
1986         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
1987         Use set_loop_copy.
1988         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
1989         * cfghooks.c (duplicate_block): Use get_loop_copy.
1990         * cfg.c: Include cfgloop.h.
1991         (loop_copy): New hash table.
1992         (initialize_original_copy_tables): Initialize loop_copy table.
1993         (free_original_copy_tables): Free loop_copy table.
1994         (copy_original_table_clear, copy_original_table_set,
1995         set_loop_copy, get_loop_copy): New functions.
1996         (set_bb_original, set_bb_copy): Use copy_original_table_set.
1997         * cfgloop.h (struct loop): Remove copy field.
1998         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
1999         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
2000
2001 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2002
2003         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
2004         -msse/-msse2/-msse3.
2005
2006 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2007
2008         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
2009         __builtin_ia32_vec_set_v2di with MASK_64BIT.
2010
2011 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
2012
2013         PR target/27067
2014         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
2015         * targhooks.h (default_mangle_decl_assembler_name): Declare
2016         default hook.
2017         * targhooks.c (default_mangle_decl_assembler_name): Define
2018         default hook.
2019         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
2020         default hook.
2021         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
2022         * langhooks.c (lhd_set_decl_assembler_name): Call
2023         targetm.mangle_decl_assembler_name for names with global scope.
2024
2025         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
2026         default.
2027         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
2028         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
2029         Declare.
2030         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
2031         New. Factored out of i386_pe_encode_section_info.
2032         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
2033         Move check for prior decoration of stdcall
2034         symbols to i386_pe_encode_section_info.
2035         (i386_pe_encode_section_info): Adjust call to
2036         gen_stdcall_or_fastcall_suffix.  Use
2037         i386_pe_maybe_mangle_decl_assembler_name, if needed.
2038         (i386_pe_mangle_decl_assembler_name): New. Wrap
2039         i386_pe_maybe_mangle_decl_assembler_name.
2040
2041 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
2042
2043         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
2044         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
2045         * langhooks.c (get_signed_or_unsigned_type): Don't check for
2046         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
2047         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
2048         TYPE_UNSIGNED.
2049
2050 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
2051             Nigel Stephens  <nigel@mips.com>
2052             Richard Sandiford  <richard@codesourcery.com>
2053
2054         Fix up MIPS16 hard float and add support for complex.
2055
2056         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
2057         (TARGET_SOFT_FLOAT_ABI): New.
2058         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
2059         __mips_soft_float to reflect the ABI in use, not whether the
2060         FPU is directly accessible (e.g., in MIPS16 mode).
2061         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
2062         (UNITS_PER_FPVALUE): Likewise.
2063
2064         * config/mips/mips.c (mips_expand_call): Remove redundant
2065         TARGET_MIPS16 check.
2066         (mips_arg_regno): New.
2067         (function_arg_advance): When setting bits in cum->fp_code for
2068         MIPS16, don't subtract 1 from cum->arg_number, since it is now
2069         zero-based.
2070         (function_arg): Use mips_arg_regno.
2071         (mips_return_mode_in_fpr_p): New.
2072         (mips16_call_stub_mode_suffix): New.
2073         (mips16_cfun_returns_in_fpr_p): New.
2074         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
2075         (mips_output_function_prologue): Test mips16_hard_float, not
2076         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
2077         (mips_expand_epilogue): Call MIPS16 helper routines to copy
2078         return value into a floating-point register.
2079         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
2080         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
2081         (mips16_fp_args): Handle MIPS32r2 ISA which supports
2082         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
2083         word of double arguments from or to the high bits of 64-bit
2084         floating point registers.
2085         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
2086         (mips16_fpret_double): New helper function.
2087         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
2088         support for complex modes.  Fill in DECL_RESULT for stubdecl.
2089         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
2090
2091         * config/mips/mips16.S
2092         (RET, ARG1, ARG2): New.
2093         (MERGE_GPRf, MERGE_GPRt): New.
2094         (DELAYt, DELAYf): New.
2095         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
2096         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
2097         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
2098         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
2099         (SFOP): Renamed to...
2100         (OPSF3): This, and macro-ified.  Updated all uses.
2101         (SFOP2): Renamed to...
2102         (OPSF2): This, and macro-ified.  Updated all uses.
2103         (SFCMP): Renamed to...
2104         (CMPSF): This, and macro-ified.  Updated all uses.
2105         (SFREVCMP): Renamed to...
2106         (REVCMPSF): This, and macro-ified.  Updated all uses.
2107         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
2108         (LDDBL1, LDDBL2, RETDBL): Deleted.
2109         (DFOP): Renamed to...
2110         (OPDF3): This, and macro-ified.  Updated all uses.
2111         (DFOP2): Renamed to...
2112         (OPDF2): This, and macro-ified.  Updated all uses.
2113         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
2114         (DFCMP): Renamed to...
2115         (CMPDF): This, and macro-ified.  Updated all uses.
2116         (DFREVCMP): Renamed to...
2117         (REVCMPDF): This, and macro-ified.  Updated all uses.
2118         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
2119         (RET_FUNCTION): New.
2120         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
2121         (__mips16_ret_sc, __mips16_ret_dc): New.
2122         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
2123         STUB_ARGS_6, STUB_ARGS_10): New.
2124         (CALL_STUB_NO_RET): New.
2125         (__mips16_call_stub_1): Macro-ified.
2126         (__mips16_call_stub_5): Macro-ified.
2127         (__mips16_call_stub_2): Macro-ified.
2128         (__mips16_call_stub_6): Macro-ified.
2129         (__mips16_call_stub_9): Macro-ified.
2130         (__mips16_call_stub_10): Macro-ified.
2131         (CALL_STUB_RET): New.
2132         (__mips16_call_stub_sf_0): Macro-ified.
2133         (__mips16_call_stub_sf_1): Macro-ified.
2134         (__mips16_call_stub_sf_5): Macro-ified.
2135         (__mips16_call_stub_sf_2): Macro-ified.
2136         (__mips16_call_stub_sf_6): Macro-ified.
2137         (__mips16_call_stub_sf_9): Macro-ified.
2138         (__mips16_call_stub_sf_10): Macro-ified.
2139         (__mips16_call_stub_df_0): Macro-ified.
2140         (__mips16_call_stub_df_1): Macro-ified.
2141         (__mips16_call_stub_df_5): Macro-ified.
2142         (__mips16_call_stub_df_2): Macro-ified.
2143         (__mips16_call_stub_df_6): Macro-ified.
2144         (__mips16_call_stub_df_9): Macro-ified.
2145         (__mips16_call_stub_df_10): Macro-ified.
2146         (__mips16_call_stub_sc_0): New.
2147         (__mips16_call_stub_sc_1): New.
2148         (__mips16_call_stub_sc_5): New.
2149         (__mips16_call_stub_sc_2): New.
2150         (__mips16_call_stub_sc_6): New.
2151         (__mips16_call_stub_sc_9): New.
2152         (__mips16_call_stub_sc_10): New.
2153         (__mips16_call_stub_dc_0): New.
2154         (__mips16_call_stub_dc_1): New.
2155         (__mips16_call_stub_dc_5): New.
2156         (__mips16_call_stub_dc_2): New.
2157         (__mips16_call_stub_dc_6): New.
2158         (__mips16_call_stub_dc_9): New.
2159         (__mips16_call_stub_dc_10): New.
2160
2161         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
2162         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
2163         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
2164
2165 2007-05-23  Ian Lance Taylor  <iant@google.com>
2166
2167         * doc/invoke.texi (Invoking GCC): Document that the order of the
2168         -l option matters.
2169
2170 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
2171
2172         PR target/30987
2173         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
2174         * config/score/predicate.md (const_pow2, const_npow2): Remove.
2175         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
2176         undef.
2177
2178         PR target/30474
2179         * config/score/score.c (score_print_operand): Make sure that only
2180         lower bits are used.
2181
2182 2007-05-22  Ian Lance Taylor  <iant@google.com>
2183
2184         * tree-vrp.c (avoid_overflow_infinity): New static function,
2185         broken out of set_value_range_to_value.
2186         (set_value_range_to_value): Call avoid_overflow_infinity.
2187         (extract_range_from_assert): Likewise.
2188
2189 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2190
2191         PR middle-end/31095
2192          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
2193         change the type before looking for a COMPOUND_EXPR.
2194
2195 2007-05-22  Ian Lance Taylor  <iant@google.com>
2196
2197         * lower-subreg.c (decompose_multiword_subregs): If we change an
2198         insn, call remove_retval_note on it.
2199
2200 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2201
2202         * regs.h (end_hard_regno): New function.
2203         (END_HARD_REGNO, END_REGNO): New macros.
2204         (add_to_hard_reg_set): New function.
2205         (remove_from_hard_reg_set): Likewise.
2206         (in_hard_reg_set_p): Likewise.
2207         (overlaps_hard_reg_set_p): Likewise.
2208         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
2209         (note_btr_set): Use END_HARD_REGNO.
2210         * caller-save.c (setup_save_areas): Use end_hard_regno.
2211         (mark_set_regs): Use END_HARD_REGNO.
2212         (add_stored_regs): Use end_hard_regno.
2213         (mark_referenced_regs): Use add_to_hard_reg_set.
2214         * combine.c (update_table_tick): Use END_REGNO.
2215         (record_value_for_reg): Likewise.
2216         (record_dead_and_set_regs): Likewise.
2217         (get_last_value_validate): Likewise.
2218         (use_crosses_set_p): Likewise.
2219         (reg_dead_at_p_1): Likewise.
2220         (reg_dead_at_p): Likewise.
2221         (mark_used_regs_combine): Use add_to_hard_reg_set.
2222         (move_deaths): Use END_HARD_REGNO.
2223         (reg_bitfield_target_p): Use end_hard_regno.
2224         (distribute_notes): Use END_HARD_REGNO.
2225         * cse.c (mention_regs): Use END_REGNO.
2226         (insert): Use add_to_hard_reg_set.
2227         (invalidate): Use END_HARD_REGNO.
2228         (invalidate_for_call): Likewise.
2229         (exp_equiv_p): Use END_REGNO.
2230         (cse_insn): Likewise.
2231         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
2232         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
2233         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
2234         * function.c (keep_stack_depressed): Use end_hard_regno.
2235         * global.c (global_alloc): Use end_hard_regno.
2236         (global_conflicts): Use add_to_hard_reg_set instead of
2237         mark_reg_live_nc.
2238         (find_reg): Likewise.
2239         (mark_reg_store): Likewise.
2240         (mark_reg_conflicts): Likewise.
2241         (mark_reg_death): Use remove_from_hard_reg_set.
2242         (mark_reg_live_nc): Delete.
2243         (set_preference): Use end_hard_regno.
2244         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
2245         remove_from_hard_reg_set.
2246         (post_mark_life): Use add_to_hard_reg_set.
2247         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
2248         (reg_becomes_live): Use add_to_hard_reg_set.
2249         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
2250         (peep2_find_free_register): Use add_to_hard_reg_set.
2251         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
2252         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
2253         * regrename.c (note_sets): Use add_to_hard_reg_set.
2254         (clear_dead_regs): Use remove_from_hard_reg_set.
2255         (regrename_optimize): Use add_to_hard_reg_set.
2256         (find_oldest_value_reg): Use in_hard_reg_set_p.
2257         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
2258         (hard_reg_set_here_p): Use end_hard_regno.
2259         (decompose): Likewise.
2260         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
2261         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
2262         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
2263         (mark_home_live): Use end_hard_regno.
2264         (spill_hard_reg): Likewise.
2265         (clear_reload_reg_in_use): Likewise.
2266         * reorg.c (delete_prior_computation): Use END_REGNO.
2267         * resource.c (update_live_status): Use END_HARD_REGNO.
2268         (mark_referenced_resources): Use add_to_hard_reg_set.
2269         (mark_set_resources): Likewise.
2270         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
2271         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
2272         (reg_overlap_mentioned_p): Likewise.
2273         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
2274         (covers_regno_no_parallel_p): Use END_REGNO.
2275         (find_regno_note): Likewise.
2276         (find_reg_fusage): Use END_HARD_REGNO.
2277         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
2278         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
2279
2280 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
2281
2282         * mode-switching.c (reg_dies): Change type of second argument to
2283         "HARD_REG_SET *".
2284         (optimize_mode_switching): Update accordingly.
2285
2286 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
2287
2288         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
2289         in favor of...
2290         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
2291         (hard_reg_set_empty_p): ...these new functions.
2292         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
2293         GO_IF_HARD_REG_SUBSET.
2294         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
2295         instead of GO_IF_HARD_REG_EQUAL.
2296         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
2297         instead of GO_IF_HARD_REG_EQUAL.
2298         * global.c (find_reg): Use hard_reg_set_empty_p instead of
2299         GO_IF_HARD_REG_SUBSET.
2300         (modify_reg_pav): Use hard_reg_set_empty_p instead of
2301         GO_IF_HARD_REG_EQUAL.
2302         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
2303         of GO_IF_HARD_REG_SUBSET.
2304         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
2305         instead of GO_IF_HARD_REG_EQUAL.
2306         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
2307         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
2308         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
2309         of GO_IF_HARD_REG_SUBSET,
2310         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
2311         GO_IF_HARD_REG_SUBSET.
2312         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
2313         instead of GO_IF_HARD_REG_EQUAL.
2314         * config/sh/sh.c (push_regs, calc_live_regs): Use
2315         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
2316         (hard_regs_intersect_p): Delete.
2317
2318 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
2319
2320         * doc/sourcebuild.texi (Test Directives) Add dg-message.
2321
2322 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
2323             Richard Henderson  <rth@redhat.com>
2324
2325         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
2326         extra_headers.
2327         (x86_64-*-*): Likewise.
2328
2329         * i386/i386-modes.def (V2QI): New.
2330
2331         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
2332         SSE4A.
2333         (override_options): Support SSE4.1.
2334         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
2335         (IX86_BUILTIN_BLENDPS): Likewise.
2336         (IX86_BUILTIN_BLENDVPD): Likewise.
2337         (IX86_BUILTIN_BLENDVPS): Likewise.
2338         (IX86_BUILTIN_PBLENDVB128): Likewise.
2339         (IX86_BUILTIN_PBLENDW128): Likewise.
2340         (IX86_BUILTIN_DPPD): Likewise.
2341         (IX86_BUILTIN_DPPS): Likewise.
2342         (IX86_BUILTIN_INSERTPS128): Likewise.
2343         (IX86_BUILTIN_MOVNTDQA): Likewise.
2344         (IX86_BUILTIN_MPSADBW128): Likewise.
2345         (IX86_BUILTIN_PACKUSDW128): Likewise.
2346         (IX86_BUILTIN_PCMPEQQ): Likewise.
2347         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
2348         (IX86_BUILTIN_PMAXSB128): Likewise.
2349         (IX86_BUILTIN_PMAXSD128): Likewise.
2350         (IX86_BUILTIN_PMAXUD128): Likewise.
2351         (IX86_BUILTIN_PMAXUW128): Likewise.
2352         (IX86_BUILTIN_PMINSB128): Likewise.
2353         (IX86_BUILTIN_PMINSD128): Likewise.
2354         (IX86_BUILTIN_PMINUD128): Likewise.
2355         (IX86_BUILTIN_PMINUW128): Likewise.
2356         (IX86_BUILTIN_PMOVSXBW128): Likewise.
2357         (IX86_BUILTIN_PMOVSXBD128): Likewise.
2358         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
2359         (IX86_BUILTIN_PMOVSXWD128): Likewise.
2360         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
2361         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
2362         (IX86_BUILTIN_PMOVZXBW128): Likewise.
2363         (IX86_BUILTIN_PMOVZXBD128): Likewise.
2364         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
2365         (IX86_BUILTIN_PMOVZXWD128): Likewise.
2366         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
2367         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
2368         (IX86_BUILTIN_PMULDQ128): Likewise.
2369         (IX86_BUILTIN_PMULLD128): Likewise.
2370         (IX86_BUILTIN_ROUNDPD): Likewise.
2371         (IX86_BUILTIN_ROUNDPS): Likewise.
2372         (IX86_BUILTIN_ROUNDSD): Likewise.
2373         (IX86_BUILTIN_ROUNDSS): Likewise.
2374         (IX86_BUILTIN_PTESTZ): Likewise.
2375         (IX86_BUILTIN_PTESTC): Likewise.
2376         (IX86_BUILTIN_PTESTNZC): Likewise.
2377         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
2378         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
2379         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
2380         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
2381         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
2382         (bdesc_ptest): New.
2383         (bdesc_sse_3arg): Likewise.
2384         (bdesc_2arg): Likewise.
2385         (bdesc_1arg): Likewise.
2386         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
2387         with 3 args.
2388         (ix86_expand_sse_4_operands_builtin): New.
2389         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
2390         smaller than 8 bits as the 2nd arg.
2391         (ix86_expand_sse_ptest): New.
2392         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
2393         (ix86_expand_vector_set): Support SSE4.1.
2394         (ix86_expand_vector_extract): Likewise.
2395
2396         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2397         __SSE4_1__ for -msse4.1.
2398
2399         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
2400         (UNSPEC_INSERTPS): Likewise.
2401         (UNSPEC_DP): Likewise.
2402         (UNSPEC_MOVNTDQA): Likewise.
2403         (UNSPEC_MPSADBW): Likewise.
2404         (UNSPEC_PHMINPOSUW): Likewise.
2405         (UNSPEC_PTEST): Likewise.
2406         (UNSPEC_ROUNDP): Likewise.
2407         (UNSPEC_ROUNDS): Likewise.
2408
2409         * config/i386/i386.opt (msse4.1): New for SSE4.1.
2410
2411         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
2412         (const_pow2_1_to_32768_operand): Likewise.
2413
2414         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
2415         file.
2416
2417         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
2418         SSE4.1.
2419         (sse4_1_insertps): Likewise.
2420         (*sse4_1_extractps): Likewise.
2421         (sse4_1_ptest): Likewise.
2422         (sse4_1_mulv2siv2di3): Likewise.
2423         (*sse4_1_mulv4si3): Likewise.
2424         (*sse4_1_smax<mode>3): Likewise.
2425         (*sse4_1_umax<mode>3): Likewise.
2426         (*sse4_1_smin<mode>3): Likewise.
2427         (*sse4_1_umin<mode>3): Likewise.
2428         (sse4_1_eqv2di3): Likewise.
2429         (*sse4_1_pinsrb): Likewise.
2430         (*sse4_1_pinsrd): Likewise.
2431         (*sse4_1_pinsrq): Likewise.
2432         (*sse4_1_pextrb): Likewise.
2433         (*sse4_1_pextrb_memory): Likewise.
2434         (*sse4_1_pextrw_memory): Likewise.
2435         (*sse4_1_pextrq): Likewise.
2436         (sse4_1_blendpd): Likewise.
2437         (sse4_1_blendps): Likewise.
2438         (sse4_1_blendvpd): Likewise.
2439         (sse4_1_blendvps): Likewise.
2440         (sse4_1_dppd): Likewise.
2441         (sse4_1_dpps): Likewise.
2442         (sse4_1_movntdqa): Likewise.
2443         (sse4_1_mpsadbw): Likewise.
2444         (sse4_1_packusdw): Likewise.
2445         (sse4_1_pblendvb): Likewise.
2446         (sse4_1_pblendw): Likewise.
2447         (sse4_1_phminposuw): Likewise.
2448         (sse4_1_extendv8qiv8hi2): Likewise.
2449         (*sse4_1_extendv8qiv8hi2): Likewise.
2450         (sse4_1_extendv4qiv4si2): Likewise.
2451         (*sse4_1_extendv4qiv4si2): Likewise.
2452         (sse4_1_extendv2qiv2di2): Likewise.
2453         (*sse4_1_extendv2qiv2di2): Likewise.
2454         (sse4_1_extendv4hiv4si2): Likewise.
2455         (*sse4_1_extendv4hiv4si2): Likewise.
2456         (sse4_1_extendv2hiv2di2): Likewise.
2457         (*sse4_1_extendv2hiv2di2): Likewise.
2458         (sse4_1_extendv2siv2di2): Likewise.
2459         (*sse4_1_extendv2siv2di2): Likewise.
2460         (sse4_1_zero_extendv8qiv8hi2): Likewise.
2461         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
2462         (sse4_1_zero_extendv4qiv4si2): Likewise.
2463         (*sse4_1_zero_extendv4qiv4si2): Likewise.
2464         (sse4_1_zero_extendv2qiv2di2): Likewise.
2465         (*sse4_1_zero_extendv2qiv2di2): Likewise.
2466         (sse4_1_zero_extendv4hiv4si2): Likewise.
2467         (*sse4_1_zero_extendv4hiv4si2): Likewise.
2468         (sse4_1_zero_extendv2hiv2di2): Likewise.
2469         (*sse4_1_zero_extendv2hiv2di2): Likewise.
2470         (sse4_1_zero_extendv2siv2di2): Likewise.
2471         (*sse4_1_zero_extendv2siv2di2): Likewise.
2472         (sse4_1_roundpd): Likewise.
2473         (sse4_1_roundps): Likewise.
2474         (sse4_1_roundsd): Likewise.
2475         (sse4_1_roundss): Likewise.
2476         (mulv4si3): Don't expand for SSE4.1.
2477         (smax<mode>3): Likewise.
2478         (umaxv4si3): Likewise.
2479         (uminv16qi3): Likewise.
2480         (umin<mode>3): Likewise.
2481         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
2482
2483         * doc/extend.texi: Document SSE4.1 built-in functions.
2484
2485         * doc/invoke.texi: Document -msse4.1.
2486
2487 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
2488
2489         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
2490         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
2491         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
2492         (ASM_SPEC): Add asm_pcrel_spec.
2493         (EXTRA_SPECS): Add asm_pcrel_spec.
2494
2495 2007-05-21  David Daney  <ddaney@avtrex.com>
2496
2497         * doc/install.texi (Building a cross compiler): Add requirements
2498         for Java cross compiler.
2499
2500 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2501
2502         PR middle-end/31995
2503         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
2504         Add loopno argument.  Use evolution_function_is_invariant_rec_p
2505         instead of evolution_function_is_constant_p.
2506         Update calls to evolution_function_is_affine_multivariate_p.
2507         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
2508         Add loopno argument.
2509         * tree-scalar-evolution.c (gather_chrec_stats): Call
2510         evolution_function_is_affine_multivariate_p with a loop
2511         number of 0.
2512         * tree-data-ref.c (analyze_miv_subscript): Likewise.
2513         (analyze_overlapping_iterations): Likewise.
2514         (access_functions_are_affine_or_constant_p): Likewise.
2515         (build_classic_dist_vector_1): If the access functions
2516         are equal, don't do anything.
2517
2518 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
2519             Paolo Carlini  <pcarlini@suse.de>
2520             Uros Bizjak  <ubizjak@gmail.com>
2521
2522         * c-cppbuiltin.c (c_cpp_builtins): Define
2523         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
2524         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
2525         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
2526         * doc/cpp.texi ([Standard Predefined Macros]): Document.
2527
2528 2007-05-21  Mike Stump  <mrs@apple.com>
2529
2530         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
2531         handling as well.
2532         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
2533
2534 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
2535
2536         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
2537         implementation if __OPTIMIZE__ is not defined.
2538         (_mm_alignr_pi8): Ditto.
2539         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
2540         (_mm_inserti_si64): Ditto.
2541         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
2542         (_mm_slli_epi16): Ditto.
2543         (_mm_slli_epi32): Ditto.
2544         (_mm_slli_epi64): Ditto.
2545         (_mm_srai_epi16): Ditto.
2546         (_mm_srai_epi32): Ditto.
2547         (_mm_srli_si128): Ditto.
2548         (_mm_slli_si128): Ditto.
2549         (_mm_srli_epi16): Ditto.
2550         (_mm_srli_epi32): Ditto.
2551         (_mm_srli_epi64): Ditto.
2552         (_mm_extract_epi16): Ditto.
2553         (_mm_insert_epi16): Ditto.
2554         (_mm_shufflehi_epi16): Ditto.
2555         (_mm_shufflelo_epi16): Ditto.
2556         (_mm_shuffle_epi32): Ditto.
2557         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
2558         (_m_pextrw): Ditto.
2559         (_mm_insert_pi16): Ditto.
2560         (_m_pinsrw): Ditto.
2561         (_mm_shuffle_pi16): Ditto.
2562         (_m_pshufw): Ditto.
2563         (_mm_shufle_ps): Ditto.
2564         (_mm_prefetch): Ditto.
2565
2566 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
2567
2568         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
2569         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
2570         * real.c (encode_i370_single, decode_i370_single,
2571         encode_i370_double, decode_i370_double): Functions removed.
2572         (i370_single_format, i370_double_format): Initializations removed.
2573         (real_maxval, round_for_format, exact_real_truncate, significand_size):
2574         Consider the log2_b field to always be one.
2575         (ieee_single_format, mips_single_format, coldfire_single_format,
2576         ieee_double_format, mips_double_format, coldfire_double_format,
2577         ieee_extended_motorola_format, ieee_extended_intel_96_format,
2578         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
2579         ibm_extended_format, mips_extended_format, ieee_quad_format,
2580         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
2581         decimal_single_format, decimal_double_format, decimal_quad_format,
2582         c4x_single_format, c4x_extended_format, real_internal_format): Remove
2583         initialization of log2_b.
2584         * real.h (i370_single_format, i370_double_format): Declarations removed.
2585         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
2586         field to always be one.
2587
2588 2007-05-21  Andreas Schwab  <schwab@suse.de>
2589
2590         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
2591         NOTE_INSN_BASIC_BLOCK_P.
2592         (process_for_unwind_directive): Likewise.
2593
2594 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
2595
2596         * builtins.c (expand_builtin_setjmp_setup): Update comment.
2597         * function.h (struct function): Move va_list_gpr_size,
2598         va_list_fpr_size, function_frequency to front of bitfields.  Add
2599         calls_unwind_init.
2600         (current_function_calls_unwind_init): New.
2601         * except.c (expand_builtin_unwind_init): Set
2602         current_function_calls_unwind_init not
2603         current_function_has_nonlocal_label.
2604         * reload1.c (has_nonexceptional_receiver): New.
2605         (reload): Use it and current_function_calls_unwind_init to
2606         determine whether call-saved regs must be saved.
2607
2608 2007-05-20  Jan Hubicka  <jh@suse.cz>
2609
2610         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
2611         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
2612         * ddg.c (create_ddg): LIkewise.
2613         * final.c (final): Remove hunk moving line numbernotes around since
2614         they are no longer present at this stage.
2615         (final_scan_insn): Use NOTE_KIND instead of
2616         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
2617         (output_asm_label): Likewise.
2618         * reorg.c (dbr_schedule): Likewise.
2619         * haifa-sched.c (unlink_other_notes): Likewise.
2620         * mode-switching.c (optimize_mode_switching): Likewise.
2621         * graph.c (start_bb): Likewise.
2622         * rtl.def (NOTE): Update description.
2623         * jump.c (squeeze_notes): Delete.
2624         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
2625         NOTE_INSN_BASIC_BLOCK_P when possible.
2626         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
2627         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
2628         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
2629         (dwarf2out_var_location): Likewise.
2630         * cfgbuild.c (make_edges): Likewise.
2631         (find_basic_blocks_1): Likewise.
2632         * function.c (reorder_blocks_1): Likewise.
2633         (epilogue_done): Likewise.
2634         (reposition_prologue_and_epilogue_notes): Likewise.
2635         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
2636         notes.
2637         (print_rtl): Likewise.
2638         (print_rtl_single): Likewise.
2639         * gcse.c (insert_insn_start_bb): Likewise.
2640         * alias.c (init_alias_analysis): Likewise.
2641         * calls.c (fixup_tail_calls): Likewise.
2642         * except.c (sjlj_emit_function_enter): Likewise.
2643         * emit-rtl.c (add_insn_after): Likeiwse.
2644         (emit_label_before): Likewise.
2645         (emit_label_after): Likewise.
2646         (emit_note_before, emit_note_after, emit_note): Update
2647         parameter to be enum insn_note; do not deal with source
2648         files.
2649         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
2650         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
2651         when possible.
2652         (merge_blocks_move_successor_nojumps): Simplify now when
2653         we don't have BLOCK notes.
2654         (try_optimize_cfg): Likewise.
2655         * cfglayout.c (skip_insns_after_block): Likewise.
2656         (record_effective_endpoints): Likewise.
2657         (duplicate_insn_chain): Likewise.
2658         * varasm.c (output_constant_pool_1): Likewise.
2659         * sched-deps.c (sched_analyze): Likewise.
2660         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
2661         Exterminate.
2662         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
2663         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
2664         (SET_INSN_DELETED): Simplify.
2665         (NOTE_LINE_NUMBER): Exterminate.
2666         (NOTE_LINE_KIND): New.
2667         (NOTE_INSN_BASIC_BLOCK_P): Update.
2668         (enum insn_note): Simplify.
2669         (GET_NOTE_INSN_NAME) Simplify.
2670         (emit_note_before, emit_note_after, emit_note): Update prototype.
2671         (squeeze_notes): Remove.
2672         * sched-int.h (NOTE_NOT_BB_P): Update.
2673         * resource.c (mark_target_live_regs): Update.
2674         * sched-rgn.c (debug_dependencies): Update.
2675         * sched-vis.c (print_insn): Update.
2676         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
2677         * config/i386/i386.c (ix86_output_function_epilogue): Update.
2678         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
2679         (TARGET_ADJUST_UNROLL_MAX): Likewise.
2680         (split_branches): Update.
2681         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
2682         4.0.0.
2683         (sh_adjust_unroll_max): Exterminate.
2684         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
2685         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
2686         (m68hc11_reorg): Likewise.
2687         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
2688         (emit_predicate_relation_info): Update.
2689         (process_for_unwind_directive): Update.
2690         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
2691         (output_call): Update.
2692         * config/pa/pa.c (output_lbranch): Update.
2693         (output_millicode_call): Update.
2694         (output_call): Update.
2695         (pa_combine_instructions): Update.
2696         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
2697         * config/bfin/bfin.c (gen_one_bundle): Update.
2698         * cfgrtl.c (can_delete_note_p): Update.
2699         (delete_insn): Update.
2700         (rtl_merge_blocks): Update.
2701         (commit_one_edge_insertion): Update.
2702         (rtl_verify_flow_info): Update.
2703         * stmt.c (expand_case): Do not call squeeze_notes.
2704
2705 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2706
2707         PR middle-end/7651
2708         PR c++/11856
2709         PR c/12963
2710         PR c/23587
2711         PR other/29694
2712         * c.opt (Wtype-limits): New.
2713         * doc/invoke.texi (Wtype-limits): Document it.
2714         (Wextra): Enabled by -Wextra.
2715         * c-opts.c (c_common_post_options): Enabled by -Wextra.
2716         * c-common.c (shorten_compare): Warn with Wtype-limits.
2717
2718 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
2719
2720         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
2721         inlined function, not as a macro.
2722         (_mm_alignr_pi8): Ditto.
2723         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
2724         (_mm_inserti_si64): Ditto.
2725         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
2726         (_mm_extract_epi16): Ditto.
2727         (_mm_insert_epi16): Ditto.
2728         (_mm_shufflehi_epi16): Ditto.
2729         (_mm_shufflelo_epi16): Ditto.
2730         (_mm_shuffle_epi32): Ditto.
2731         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
2732         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
2733         all functions.
2734         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
2735         float constant.
2736         (_m_to_float): Use C89 compatible assignment.
2737
2738 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
2739
2740         PR target/32007
2741         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
2742
2743 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2744
2745         PR middle-end/7651
2746         * doc/invoke.texi (Wreturn-type): Complete description.
2747         (Wextra): Delete item about return-type warning.
2748         * c-decl.c: Delete redundant Wextra warning.
2749
2750 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
2751
2752         PR target/31585
2753         * config/i386/pmmintrin.h: Do not include xmmintrin.h
2754         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
2755         inlined function, not as a macro.
2756         (_mm_prefetch): Ditto.
2757         (_m_pextrw): Ditto.
2758         (_mm_insert_pi16): Ditto.
2759         (_m_pinsrw): Ditto.
2760         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
2761         (_m_pshufw): Ditto. Add const to __N argument.
2762         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
2763         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
2764         (_mm_slli_epi32): Ditto.
2765         (_mm_srli_si128): Implement as always inlined function, not as a macro.
2766         Add __inline to function declaration.
2767         (_mm_slli_si128): Ditto.
2768
2769 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
2770
2771         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
2772         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
2773         New constants.
2774         (struct fenv): New structure.
2775         (FP_HANDLE_EXCEPTIONS): New define.
2776         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
2777         (_FP_DECL_EXP): New define.
2778         (FP_INIT_ROUNDMODE): New define.
2779         (FP_ROUNDMODE): New define.
2780
2781 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2782
2783         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
2784         (Wconversion): Update description.
2785         (Wconversion-sign): New.
2786         * c.opt (Wconversion-sign): New.
2787         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
2788         means disabled for C++. Otherwise, take the status of Wconversion.
2789         * c-common.c (conversion_warning): Warn with either Wconversion or
2790         Wconversion-sign.
2791         (warnings_for_convert_and_check): Conditions are already checked by
2792         conversion_warning.
2793         (convert_and_check): Don't check warnings if the conversion failed.
2794
2795 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
2796            Anatoly Sokolov <aesok@dol.ru>
2797
2798         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
2799         avr_epilogue_uses) : Add declaration.
2800         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
2801         * config/avr/constraints.md (R): New constraint.
2802         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
2803         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
2804         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
2805         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
2806         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
2807         call_prologue_saves, epilogue_restores, return_from_epilogue,
2808         return_from_main_epilogue, return_from_interrupt_epilogue,
2809         return_from_naked_epilogue, prologue, epilogue): New patterns.
2810         (jump): Handle symbol reference.
2811         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
2812         avr_output_function_prologue, avr_output_function_epilogue): Remove
2813         functions.
2814         (avr_init_machine_status, expand_prologue, expand_epilogue,
2815         avr_asm_function_end_prologue, avr_epilogue_uses,
2816         avr_asm_function_begin_epilogue): New functions.
2817         (prologue_size, epilogue_size, jump_tables_size): Remove global
2818         variables.
2819         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
2820         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
2821         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
2822         (avr_override_options): Initialise init_machine_status.
2823         (output_movhi): Handle all stack pointer loads.
2824         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
2825         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
2826         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
2827         (EPILOGUE_USES) Redefine.
2828         (machine_function) Declare.
2829
2830 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
2831
2832         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
2833         Use a single return statement.
2834
2835 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2836
2837         PR middle-end/30250
2838         * builtins.c (do_mpfr_lgamma_r): New.
2839         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
2840         * tree.h (CASE_FLT_FN_REENT): New.
2841
2842 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
2843
2844         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
2845         (output_die): Use 'unsigned long' with %x.
2846         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
2847         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
2848         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
2849
2850         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
2851
2852 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
2853
2854         PR target/31989
2855         PR target/31681
2856         PR target/31666
2857         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
2858         true if function has no argument.
2859
2860 2007-05-18  DJ Delorie  <dj@redhat.com>
2861
2862         * config/mips/mips.c (mips_offset_within_alignment_p): New.
2863         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
2864
2865 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2866
2867         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
2868         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
2869         count_trailing_zeros.
2870         (__i386__): Implement count_leading_zeros using __builtin_clz().
2871         Implement count_trailing_zeros usign __builtin_ctz().
2872
2873 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
2874
2875         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
2876
2877 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2878
2879         PR middle-end/31344
2880         * expr.c (emit_move_change_mode): Change mode of push operands here.
2881
2882 2007-05-17  Ian Lance Taylor  <iant@google.com>
2883
2884         PR tree-optimization/31953
2885         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
2886         Change all callers.
2887         (set_value_range_to_null): Call set_value_range_to_value.
2888         (extract_range_from_comparison): Likewise.
2889
2890 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2891
2892         * toplev.c (print_version): Output GMP/MPFR version info.
2893
2894         * builtins.c (CASE_MATHFN_REENT): New macro.
2895         (mathfn_built_in): Use it.
2896         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
2897         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
2898         BUILT_IN_LGAMMAL_R): New.
2899         * doc/extend.texi: Document new builtins.
2900
2901         PR middle-end/31796
2902         * builtins.c (do_mpfr_remquo): New.
2903         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
2904         (fold_builtin_3): Handle BUILT_IN_REMQUO.
2905
2906         PR middle-end/30251
2907         * builtins.c (fold_builtin_1): Handle y0, y1.
2908         (fold_builtin_2): Handle yn.
2909
2910         PR middle-end/30251
2911         * builtins.c (do_mpfr_bessel_n): New.
2912         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
2913         (fold_builtin_2): Handle BUILT_IN_JN.
2914
2915 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
2916
2917         PR target/31965
2918         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
2919         TYPE_PRECISION (intmax_type_node).
2920
2921 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
2922
2923         PR target/31850
2924         * reload.c (subst_reloads): Remove checking.
2925
2926 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
2927
2928         PR rtl-optimization/31691
2929         * combine.c (simplify_set): Build a new src pattern instead of
2930         substituting its operands in the COMPARE case.
2931
2932 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2933
2934         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
2935         (execute_vrp): Preserve loops through jump threading.
2936         * tree-ssa-threadupdate.c (thread_single_edge,
2937         dbds_continue_enumeration_p, determine_bb_domination_status,
2938         thread_through_loop_header): New functions.
2939         (create_edge_and_update_destination_phis,
2940         create_edge_and_update_destination_phis): Set loops for the new blocks.
2941         (prune_undesirable_thread_requests): Removed.
2942         (redirect_edges): Do not pretend that redirect_edge_and_branch can
2943         create new blocks.
2944         (thread_block): Do not call prune_undesirable_thread_requests.
2945         Update loops.
2946         (mark_threaded_blocks): Select edges to thread here.
2947         (thread_through_all_blocks): Take may_peel_loop_headers argument.
2948         Thread edges through loop headers independently.
2949         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
2950         * tree-pass.h (TODO_mark_first_instance): New.
2951         (first_pass_instance): Declare.
2952         * cfghooks.c (duplicate_block): Put the block to the original loop
2953         if copy is not specified.
2954         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
2955         jump threading.  Pass may_peel_loop_headers to
2956         thread_through_all_blocks according to first_pass_instance.
2957         * cfgloop.h (create_preheader): Declare.
2958         * tree-flow.h (thread_through_all_blocks): Declaration changed.
2959         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
2960         * passes.c (first_pass_instance): New variable.
2961         (next_pass_1): Set TODO_mark_first_instance.
2962         (execute_todo): Set first_pass_instance.
2963
2964 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
2965
2966         PR tree-optimization/24659
2967         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
2968         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
2969         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
2970         OTI_vec_pack_ufix_trunc.
2971         (vec_unpacks_float_hi_optab): Define new macro.
2972         (vec_unpacks_float_lo_optab): Ditto.
2973         (vec_unpacku_float_hi_optab): Ditto.
2974         (vec_unpacku_float_lo_optab): Ditto.
2975         (vec_pack_sfix_trunc_optab): Ditto.
2976         (vec_pack_ufix_trunc_optab): Ditto.
2977         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
2978         and vec_pack_[s|u]fix_trunc_optab using
2979         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
2980         * tree-vectorizer.c (supportable_widening_operation): Handle
2981         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
2982         (supportable_narrowing_operation): New function.
2983         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
2984         * tree-vect-transform.c (vectorizable_conversion): Handle
2985         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
2986         (vect_gen_widened_results_half): Move before vectorizable_conversion.
2987         (vectorizable_type_demotion): Call supportable_narrowing_operation()
2988         to check for target support.
2989         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
2990         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
2991         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
2992         for VEC_PACK_FIX_TRUNC_EXPR.
2993         (expand_binop): Special case mode of the result for
2994         vec_pack_[u|s]fix_trunc_optab.
2995         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
2996         vec_pack_[u|s]fix_trunc_optab.
2997
2998         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
2999         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
3000         * tree-pretty-print.c (dump_generic_node): Handle
3001         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
3002         VEC_PACK_FIX_TRUNC_EXPR.
3003         (op_prio): Ditto.
3004         * expr.c (expand_expr_real_1): Ditto.
3005         * tree-inline.c (estimate_num_insns_1): Ditto.
3006         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
3007
3008         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
3009         (vec_unpacks_float_lo_v8hi): Ditto.
3010         (vec_unpacku_float_hi_v8hi): Ditto.
3011         (vec_unpacku_float_lo_v8hi): Ditto.
3012         (vec_unpacks_float_hi_v4si): Ditto.
3013         (vec_unpacks_float_lo_v4si): Ditto.
3014         (vec_pack_sfix_trunc_v2df): Ditto.
3015
3016         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
3017         Document.
3018         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
3019         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
3020         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
3021         [vec_pack_ufix_trunc]: Ditto.
3022         [vec_unpacks_float_hi]: Ditto.
3023         [vec_unpacks_float_lo]: Ditto.
3024         [vec_unpacku_float_hi]: Ditto.
3025         [vec_unpacku_float_lo]: Ditto.
3026
3027 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
3028
3029         * soft-fp/README: Update for new files.
3030         * soft-fp/floattisf.c: New file.
3031         * soft-fp/floattidf.c: New file.
3032         * soft-fp/floattitf.c: New file.
3033         * soft-fp/floatuntisf.c: New file.
3034         * soft-fp/floatuntidf.c: New file.
3035         * soft-fp/floatuntitf.c: New file.
3036         * soft-fp/fixsfti.c: New file.
3037         * soft-fp/fixdfti.c: New file.
3038         * soft-fp/fixtfti.c: New file.
3039         * soft-fp/fixunssfti.c: New file.
3040         * soft-fp/fixunsdfti.c: New file.
3041         * soft-fp/fixunstfti.c: New file.
3042         * soft-fp/extendxftf.c: New file.
3043         * soft-fp/trunctfxf.c: New file.
3044
3045         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
3046         (__trunctfxf2): Ditto.
3047
3048         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
3049         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
3050         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
3051         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
3052         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
3053         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
3054
3055         * config/i386/t-fprules-softfp64: New file.
3056         * config/i386/sfp-machine.h: New file.
3057         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
3058         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
3059         and soft-fp/t-softfp to tmake_file.
3060         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
3061         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
3062
3063         * config/i386/t-linux64 (softfp_wrap_start): New.
3064         (softfp_wrap_end): New.
3065         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
3066         supported for TARGET_64BIT.
3067
3068 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
3069
3070         * c-common.c (c_common_signed_or_unsigned_type): Emulate
3071         c_common_unsigned_type behavior.
3072
3073 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
3074
3075         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
3076         calls as pure.
3077
3078 2007-05-16  Eric Christopher  <echristo@apple.com>
3079
3080         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
3081         saving after stack push. Set sp_offset whenever we push.
3082         (rs6000_emit_epilogue): Move altivec register restore before
3083         stack push.
3084
3085 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
3086
3087         * configure.ac: Allow sysroots to be relocated under $prefix as
3088         well as $exec_prefix.
3089         * configure: Regenerate.
3090
3091 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
3092
3093         Revert:
3094
3095         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
3096
3097         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
3098         (gcc_tooldir): Likewise.
3099         * configure: Regenerate.
3100         * Makefile.in (libsubdir_to_prefix): New variable, based on the
3101         old configure.ac gcc_tooldir setting.
3102         (prefix_to_exec_prefix): New variable.
3103         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
3104         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
3105
3106 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
3107
3108         * c-typeck.c (build_binary_op): Return early for error.
3109
3110 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
3111
3112         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
3113         struct nb_iter_bound.
3114         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
3115         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
3116         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
3117         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
3118         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
3119         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
3120         (del_scev_info): Use ggc_free.
3121         (scev_initialize): Allocate scalar_evolution_info in gc memory.
3122         * loop-init.c: Include ggc.h.
3123         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
3124         (loop_optimizer_finalize): Use ggc_free.
3125         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
3126         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
3127         pass_iv_optimize): Add TODO_ggc_collect.
3128         * function.h (struct function): Remove skip marker from x_current_loops.
3129         * cfgloop.c: Include ggc.h.
3130         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
3131         memory.
3132         (establish_preds): Vector superloops is gc allocated.
3133         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
3134         loop->exits list.
3135         (flow_loops_find): Vector larray is gc allocated.
3136         (loop_exit_free): Use ggc_free.
3137         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
3138         that head of exits list is now not a part of struct loop.
3139         (record_loop_exits): Allocate exits table in gc memory.
3140         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
3141         head of exits list is now not a part of struct loop.
3142         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
3143         struct loop_exit): Add GTY marker.
3144         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
3145         Add skip marker to aux field.  Make head of exits list a separate
3146         object.
3147         (struct loops): Add GTY marker.  Make larray vector gc allocated.
3148         Add param marker to exits table.
3149         (get_loops): Type changed.
3150         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
3151         dependency.
3152         (cfgloop.o, loop-init.o): Add ggc.h dependency.
3153         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
3154         * basic-block.h (struct basic_block_def): Remove skip marker from
3155         loop_father field.
3156
3157 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
3158
3159         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
3160         of 0 in the call to expand_expr().
3161         (expand_builtin_mathfn_3): Ditto.
3162         (expand_builtin_interclass_mathfn): Ditto.
3163         (expand_builtin_cexpi): Ditto.
3164         (expand_builtin_int_roundingfn): Ditto.
3165         (expand_builtin_int_roundingfn_2): Ditto.
3166         (expand_builtin_pow): Ditto.
3167         (expand_builtin_powi): Ditto.
3168         (expand_builtin_bswap): Ditto.
3169         (expand_builtin_unop): Ditto.
3170         (expand_builtin_fabs): Ditto.
3171         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
3172         the call to expand_expr().
3173         (expand_builtin_sync_operation): Ditto.
3174         (expand_builtin_compare_and_swap): Ditto.
3175         (expand_builtin_lock_test_and_set): Ditto.
3176         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
3177         instead of 0 in the call to expand_expr().
3178         (expand_builtin_extract_return_addr): Ditto.
3179         (expand_builtin_eh_return): Ditto.
3180         (expand_eh_return): Ditto.
3181         * explow.c (expr_size): Ditto.
3182         * expr.c (optimize_bitfield_assignment_op): Ditto.
3183         (expand_assignement): Ditto.
3184         (store_expr): Ditto.
3185         (store_field): Ditto.
3186         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
3187         the call to expand_expr().
3188         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
3189         in the call to expand_expr().
3190         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
3191         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
3192         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
3193         of expand_expr().
3194         * optabs.c (expand_vec_shift_expr): Ditto.
3195         (expand_vec_cond_expr): Ditto.
3196         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
3197         call to expand_expr().
3198         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
3199         in the call to expand_expr().
3200
3201 2007-05-14  Dave Korn  <dave.korn@artimi.com>
3202
3203         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
3204
3205 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
3206
3207         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
3208         instead of c_common_unsigned_type.
3209         (c_common_unsigned_type): Remove.
3210         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
3211         c_common_unsigned_type.
3212         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
3213         c_common_unsigned_type.
3214         * c-common.h (c_common_unsigned_type): Remove.
3215         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
3216         c_common_unsigned_type.
3217         * c-format.c (check_format_types): Use unsigned_type_for instead of
3218         c_common_unsigned_type.
3219         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
3220         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
3221         c_common_unsigned_type.
3222         * convert.c (convert_to_integer): Use unsigned_type_for instead of
3223         lang_hooks.types.unsigned_type.
3224         * expmed.c (make_tree): Use unsigned_type_for instead of
3225         lang_hooks.types.unsigned_type.
3226         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
3227         lang_hooks.types.unsigned_type.
3228         (build_range_check): Likewise.
3229         (fold_unary): Likewise.
3230         (fold_binary): Likewise.
3231         (fold_ternary): Likewise.
3232         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
3233         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
3234         * tree.c (get_unsigned_type): New.
3235         (unsigned_type_for): Use get_unsigned_type instead of
3236         lang_hooks.types.unsigned_type.
3237
3238 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
3239
3240         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
3241         to m68k_get_function_kind.  Update its prototype.
3242         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
3243         interrupt_thread.
3244         (m68k_interrupt_function_p): Return enum m68k_function_type
3245         instead of bool.  Rename to m68k_get_function_kind.
3246         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
3247         target is not fido.
3248         (m68k_compute_frame_layout): Don't mark any register for save
3249         if an interrupt_thread attribute is specified.
3250         (m68k_hard_regno_rename_ok): Update a use of
3251         m68k_interrupt_function_p.
3252         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
3253         m68k_interrupt_function_p.
3254         (m68k_function_type): New.
3255         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
3256         for a function with an interrupt_thread attribute.
3257         * doc/extend.texi: Document the interrupt_thread attribute.
3258
3259 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
3260
3261         Fix PR tree-optimization/31911
3262         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
3263         if they didn't change the expression.
3264
3265 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
3266
3267         * tree-scalar-evolution.c (resolve_mixers): Exported.
3268         * tree-scalar-evolution.h (resolve_mixers): Declare.
3269         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
3270         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
3271         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
3272         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
3273         init_array_ref, init_pointer_ref, analyze_indirect_ref,
3274         strip_conversion, analyze_offset_expr, address_analysis,
3275         object_analysis, analyze_offset): Removed.
3276         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
3277         split_constant_offset, canonicalize_base_object_address,
3278         object_address_invariant_in_loop_p, disjoint_objects_p,
3279         dr_may_alias_p, dr_address_invariant_p): New functions.
3280         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
3281         and dr_analyze_alias.
3282         (initialize_data_dependence_relation): Use dr_may_alias_p
3283         and object_address_invariant_in_loop_p.
3284         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
3285         is chrec_dont_know.
3286         (find_data_references_in_stmt): Restrict the analysis of data references
3287         to the given loop nest.
3288         (find_data_references_in_loop): Made static.  Pass loop nest to
3289         find_data_references_in_stmt.
3290         (compute_data_dependences_for_loop): Use DR_VOPS.
3291         (free_data_ref): Free DR_VOPS.
3292         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
3293         (struct innermost_loop_behavior): ... new.
3294         (struct base_object_info): Replaced by ...
3295         (struct indices): ... new.
3296         (struct dr_alias): New.
3297         (enum data_ref_type): Removed.
3298         (struct data_reference): Consist of struct innermost_loop_behavior,
3299         struct indices and struct dr_alias.
3300         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
3301         (DR_MEMTAG): Renamed to ...
3302         (DR_SYMBOL_TAG): ... this.
3303         (find_data_references_in_loop): Declaration removed.
3304         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
3305         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
3306         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
3307         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
3308
3309 2007-05-13  Revital Eres  <eres@il.ibm.com>
3310
3311         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
3312         which walks virtual def-use chains to find redundant stores.
3313         (dse_optimize_stmt): Call it.
3314
3315 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
3316
3317         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
3318         * passes.c (init_optimization_passes): Move pass_jump_bypass
3319         after loop2.
3320
3321         * basic-block.h (bb_has_eh_pred): Fix style issue.
3322
3323 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
3324
3325         PR rtl-optimization/31848
3326         * loop-invariant.c (move_invariant_reg): If we move an insn
3327         with a REG_EQUAL note, and that insn is not always executed,
3328         remove the REG_EQUAL note.
3329
3330 2007-05-12  Richard Guenther  <rguenther@suse.de>
3331
3332         PR tree-optimization/31797
3333         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
3334         propagate into a stmt that has volatile ops.
3335
3336 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
3337
3338         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
3339         (gcc_tooldir): Likewise.
3340         * configure: Regenerate.
3341         * Makefile.in (libsubdir_to_prefix): New variable, based on the
3342         old configure.ac gcc_tooldir setting.
3343         (prefix_to_exec_prefix): New variable.
3344         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
3345         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
3346
3347 2007-05-11  Silvius Rus  <rus@google.com>
3348
3349         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
3350         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
3351         * c-common.h (strict_aliasing_warning): Change return type.
3352         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
3353         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
3354         (build_c_cast): Condition call to strict_aliasing_warning.
3355         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
3356         * flags.h (set_Wstrict_aliasing): Declare.
3357         * opts.c (set_Wstrict_alising): Define, add call to.
3358         * tree-flow.h (strict_aliasing_warning_backend): Declare.
3359         * tree-ssa-alias-warnings.c: New file.
3360         * tree-ssa-alias.c (compute_may_aliases): Add call to
3361         strict_aliasing_warning_backend.
3362
3363 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
3364
3365         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
3366         Use loop_depth and loop_outer accessor functions.
3367         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
3368         determine_invariantness_stmt, move_computations_stmt): Ditto.
3369         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
3370         add_loop, loopify, unloop, fix_loop_structure): Ditto.
3371         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
3372         * tree-scalar-evolution.c (interpret_loop_phi,
3373         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
3374         instantiate_parameters_1, scev_const_prop): Ditto.
3375         * cfghooks.c (make_forwarder_block): Ditto.
3376         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
3377         * modulo-sched.c (loop_canon_p): Ditto.
3378         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
3379         slpeel_can_duplicate_loop_p): Ditto.
3380         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
3381         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3382         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
3383         cancel_loop, verify_loop_structure): Ditto.
3384         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
3385         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
3386         superloops vector instead of "pred" array.
3387         (establish_preds): Take father loop as an argument.  Initialize the
3388         superloops vector.
3389         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
3390         initialize loop->outer.
3391         (flow_loop_tree_node_remove): Truncate the superloops vector.
3392         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
3393         "pred" merged to "superloops" vector.
3394         (loop_depth, loop_outer): New.
3395         (fel_init): Use loop_outer.
3396
3397 2007-05-11  Jan Hubicka  <jh@suse.cz>
3398
3399         * cgraphunit.c: Include gt-cgraphunit.h
3400         (static_ctors, static_dtors): New static vars.
3401         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
3402         based on implementation in c-common.c
3403         (cgraph_finalize_function): Call record_cdtor_fn.
3404         (cgraph_optimize): Call cgraph_build_cdtor_fns.
3405         * decl.c (finish_function): Do not call c_record_cdtor_fn.
3406         (c_write_global_declarations): Do not call c_build_cdtor_fns.
3407         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
3408         build_cdtor, c_build_cdtor_fns): Remove.
3409         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
3410         c_build_cdtor_fns): Remove prototype.
3411
3412 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
3413
3414         PR other/31852
3415         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
3416         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
3417         * builtins.c (fold_builtin_memchr): New.
3418         (expand_builtin_memchr): Call the latter.
3419         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
3420         * doc/extend.texi ([Other built-in functions provided by GCC]):
3421         Document memchr.
3422
3423 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
3424
3425         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
3426         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
3427         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
3428         PFPO_OP1_TYPE_SHIFT): Constants added.
3429         (DFP_ALL): Mode macro defined.
3430         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
3431         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
3432         Insn definitions added.
3433         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
3434         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
3435         Expanders added.
3436
3437 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
3438
3439         PR tree-optimization/31885
3440         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
3441         to be undetermined.
3442         (automatically_generated_chrec_p): Return false for NULL.
3443
3444 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
3445
3446         * config/bfin/bfin.h (MOVE_RATIO): Define.
3447
3448 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
3449
3450         * config.gcc (sparc-wrs-vxworks): New target.
3451         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
3452         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
3453         * config/sparc/sparc.h: Include vxworks-dummy.h.
3454         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
3455         include LABEL_REFs too.
3456         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
3457         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
3458         VxWorks.
3459         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
3460         on VxWorks.
3461         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
3462         (sparc_emit_call_insn): New function.
3463         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
3464         functions when generating VxWorks PIC.
3465         * config/sparc/sparc.md (vxworks_load_got): New pattern.
3466         (call, call_value): Use sparc_emit_call_insn instead of
3467         emit_call_insn.
3468
3469 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
3470
3471         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
3472
3473 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
3474
3475         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
3476         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
3477         instead of operand_subword.
3478
3479 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
3480
3481         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
3482         * config/bfin/bfin.c (bfin_local_alignment): New function.
3483         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
3484
3485 2007-05-08  Chao-ying Fu  <fu@mips.com>
3486
3487         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
3488         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
3489         (smsub_widen_optab, umsub_widen_optab): Define.
3490         * optabs.c (init_optabs): Initialize smsub_widen_optab and
3491         umsub_widen_optab.
3492         * genopinit.c (optabs): Fill in smsub_widen_optab and
3493         umsub_widen_optab.
3494         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
3495         and umsub_widen_optab to implement multiply-subtract sequences.
3496         * config/mips/mips.md (*msac<u>_di): Rename to...
3497         (<u>msubsidi4): ...this.  Extend condition to include
3498         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
3499         of operand 0 to "ka" and use the three-operand form of msub<u>
3500         for TARGET_DSPR2.
3501         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
3502         to define_expands.
3503
3504 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3505
3506         PR rtl-optimization/28011
3507         * reload.c (push_reload): Set dont_share if IN appears in OUT
3508         also when IN is a PLUS rtx.
3509         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
3510         are same PLUS rtx.
3511
3512 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
3513
3514         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
3515         call unshare_all_decls.
3516         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
3517         (unshare_all_decls): Remove.
3518
3519 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
3520
3521         PR 31847
3522         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
3523         dumps.
3524
3525 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
3526             Nigel Stephens  <nigel@mips.com>
3527
3528         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
3529         Update comments and all uses.
3530         (MIN_FPRS_PER_FMT): Define.
3531         * config/mips/mips.c (function_arg): Fix to correctly handle
3532         the -mips32r2 -mfp64 -mabi=32 case.
3533         (override_options): Enable use of odd-numbered registers for
3534         SFmode values on MIPS32.
3535         (mips_save_reg_p): Save whole floating-point register pair if
3536         either half is used.
3537         (compute_frame_size): Fix comment.
3538
3539 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
3540
3541         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
3542         argument of type bool.
3543         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
3544         argument. Safely select temporary P register according to it.
3545         (do_link): Change call site of add_to_reg accordingly.
3546         (do_unlink): Add epilogue_p as a fourth argument and pass it
3547         to add_to_reg.
3548         (expand_interrupt_handler_epilogue): Change call of do_unlink
3549         accordingly.
3550         (bfin_expand_prologue): Add a third argument sibcall_p.
3551         * config/bfin/bfin.md (epilogue): Change call of
3552         bfin_expand_epilogue accordingly.
3553         (sibcall_epilogue): Likewise.
3554         (eh_return_internal): Likewise.
3555
3556         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
3557         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
3558         * config/bfin/bfin.c (bfin_handle_option): Handle
3559         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
3560         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
3561         Support bf534, bf536 and bf561.
3562         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
3563
3564 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
3565
3566         PR target/31854
3567         * config/i386/i386.c (ix86_function_regparm): Process local
3568         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
3569
3570 2007-05-07  Mike Stump  <mrs@apple.com>
3571
3572         * doc/invoke.texi (Warning Options): Document that -Wempty-body
3573         also checks for and while statements in C++.
3574
3575 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
3576
3577         * gcc.c (at_file_supplied): New variable.
3578         (main): Set it if we expanded argv.
3579         (do_spec_1): Pass an @-file to the linker if we were called with
3580         an @-file argument and HAVE_GNU_LD.
3581         * collect2.c (at_file_supplied): New variable.
3582         (response_file): New variable.
3583         (collect_exit): Unlink response_file if necessary.
3584         (handler): Likewise.
3585         (do_wait): Likewise.
3586         (main): Set at_file_supplied if we expanded argv.
3587         (collect_execute): Pass an @-file to subprocesses if we were called
3588         with an @-file argument.
3589         * configure.ac: Add define for HAVE_GNU_LD.
3590         * configure: Regenerate.
3591         * config.in: Regenerate.
3592
3593 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
3594
3595         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
3596         operand to HI mode.
3597         (mulsi3): New.
3598         (divsi3): New.
3599         (udivsi3): New.
3600
3601 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
3602
3603         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
3604         (TARGET_ENCODE_SECTION_INFO): Re-define.
3605         (m32c_encode_section_info): New
3606         (function_vector_handler): New
3607         (current_function_special_page_vector): New
3608         (m32c_special_page_vector_p): New.
3609         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
3610         Prototype.
3611         * config/m32c/jump.md: Added instruction JSRS for functions
3612         with attribute "function_vector".
3613         * doc/extend.texi (function_vector): Added description
3614         for M16C, M32C targets.
3615
3616 2007-05-07  DJ Delorie  <dj@redhat.com>
3617
3618         PR 31794
3619         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
3620         ashrpsi3, lshrpsi3): Update shift count constraint.
3621
3622 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
3623             Nathan Froyd  <froydnj@codesourcery.com>
3624
3625         PR 22133
3626         * c-incpath.c (add_path): Strip trailing path separators.
3627
3628 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
3629
3630         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
3631         Free dominance info before purging EH edges.
3632         (eliminate_degenerate_phis): Likewise.
3633         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
3634
3635 2007-05-07  Jan Hubicka  <jh@suse.cz>
3636
3637         * gimplify.c (gimplify_expr): Do not crash when folding
3638         (void *)(int)&a + 4.
3639
3640 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3641
3642         PR driver/31694
3643         * c-opts.c (lang_fortran): Make it non static.
3644         * c-common.h (lang_fortran): New prototype.
3645         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
3646         -lang-fortran option was passed by the driver.
3647
3648 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
3649
3650         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
3651         of ASSERT_CHECKING.  Tweak message.
3652
3653 2007-05-06  Revital Eres  <eres@il.ibm.com>
3654
3655         PR 30957
3656         * loop-unroll.c (insert_var_expansion_initialization):
3657         Initialize the expansions with -zero instead of +zero.
3658
3659 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
3660
3661         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
3662         into pic and non-pic versions. Mark r19 as used for
3663         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
3664         for tgd_load, tld_load and tie_load .
3665         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
3666         version of tgd_load, tld_load and tie_load depending on the
3667         value of flag_pic.
3668
3669 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
3670             Jakub Jelinek  <jakub@redhat.com>
3671
3672         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
3673         (__do_global_dtors_aux): Use more paranoid loop to run
3674         destructors if HIDDEN_DTOR_LIST_END.
3675         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
3676
3677 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
3678
3679         * varasm.c (align_variable): Don't increase alignment for
3680         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
3681         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
3682
3683 2007-05-04  Josh Conner  <jconner@apple.com>
3684
3685         * basic-block.h (cdi_direction): Assign values to all enumeration
3686         constants.
3687         (dom_computed): Remove.
3688         (dom_info_state): New.
3689         (set_dom_info_availability): New.
3690         * tree-ssa-loop-im.c (determine_invariantness): Initialize
3691         walk_data.dom_direction.
3692         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
3693         instead of dom_computed[].
3694         (split_edge): Likewise.
3695         (create_basic_block): Likewise.
3696         (merge_blocks): Likewise.
3697         * ifcvt.c (find_if_header): Likewise.
3698         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
3699         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
3700         * tree-ssa.c (verify_ssa): Likewise.
3701         * tree-cfg.c (tree_verify_flow_info): Likewise.
3702         (remove_edge_and_dominated_blocks): Likewise.
3703         * dominance.c (dom_computed): Make static.
3704         (calc_dfs_tree_nonrec): Change third param to a bool.
3705         (calc_dfs_tree): Change second param to a bool.
3706         (calc_idioms): Change second param to a bool.  Use
3707         dom_convert_dir_to_idx.
3708         (init_dom_info): Validate dir before using.
3709         (dom_convert_dir_to_idx): New.
3710         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
3711         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
3712         (free_dominance_info): Use dom_convert_dir_to_idx.
3713         (get_immediate_dominator): Likewise.
3714         (set_immediate_dominator): Likewise.
3715         (get_dominated_by): Likewise.
3716         (redirect_immediate_dominators): Likewise.
3717         (nearest_common_denominator): Likewise.
3718         (dominated_by_p): Likewise.
3719         (bb_dom_dfs_in): Likewise.
3720         (bb_dom_dfs_out): Likewise.
3721         (recount_dominator): Likewise.
3722         (iterate_fix_dominators): Likewise.
3723         (add_to_dominance_info): Likewise.
3724         (delete_from_dominance_info): Likewise.
3725         (first_dom_son): Likewise.
3726         (next_dom_son): Likewise.
3727         (dom_info_available_p): Likewise.
3728         (dom_info_state): New.
3729         (set_dom_info_availability): New.
3730
3731 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
3732
3733         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
3734         Expander removed.
3735         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
3736
3737 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
3738
3739         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
3740         (subdi3, subdi_carry): Delete.
3741
3742 2007-05-04  Jan Hubicka  <jh@suse.cz>
3743             Richard Guenther  <rguenther@suse.de>
3744
3745         * opts.c (decode_options): Do not fiddle with inlining
3746         parameters in case of optimizing for size.
3747         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
3748         for size do nothing.
3749         (cgraph_decide_inlining_of_small_function): When optimizing for
3750         size never inline functions increasing caller size.
3751         (cgraph_early_inlining): Inline for size when optimizing for size.
3752
3753 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
3754
3755         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
3756         logical operations piecewise.
3757         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
3758         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
3759         subdi_sesidi_di): Delete.
3760         (add_with_carry): Produce carry in CC instead of a DREG to shorten
3761         the generated sequence.  Allow three-reg add in constraints.  Rewrite
3762         the rtl expression for carry to avoid zero_extend of a constant.
3763         (sub_with_carry): New pattern.
3764         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
3765         different sequence not involving jumps.
3766         (notbi): Now a named pattern.
3767
3768 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
3769
3770         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
3771         Add the note about a significant loss of accuracy of some
3772         mathematical routines when these options are used.
3773
3774 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3775
3776         * haifa-sched.c (rtx_vec_t): New typedef.
3777         (contributes_to_priority_p): Extract piece of priority () into new
3778         static function.
3779         (priority): Use the function.  Add assertion.
3780         (rank_for_schedule, set_priorities): Add assertion to check that
3781         insn's priority is initialized.
3782         (clear_priorities, calc_priorities): Change signature.  Make it update
3783         all relevant insns.  Update all callers ('add_to_speculative_block ()'
3784         and 'create_block_check_twin ()').
3785         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
3786         Add new field 'priority_status'.
3787         (INSN_PRIORITY_STATUS): New macro.
3788         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
3789
3790 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3791
3792         * sched-ebb.c (debug_ebb_dependencies): New static function.
3793         (init_ready_list): Use it.
3794
3795         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
3796         with changed signature and 'debug_rgn_dependencies ()'.
3797         (debug_rgn_dependencies): New static function.
3798         (init_ready_list): Use it.
3799
3800         * sched-int.h (debug_dependencies): Declare.
3801
3802 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
3803
3804         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
3805
3806 2007-05-04  Dirk Mueller  <dmueller@suse.de>
3807
3808         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
3809
3810 2007-05-03  Jan Hubicka  <jh@suse.cz>
3811
3812         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
3813         for pointer type in more cases than before.
3814
3815         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
3816
3817         * tree-object-size.c (plus_expr_object_size): When operand size is
3818         unknown, return unknown.
3819
3820 2007-05-03  Dirk Mueller  <dmueller@suse.de>
3821
3822         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
3823
3824         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
3825         options.
3826
3827         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
3828
3829 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
3830
3831         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
3832
3833 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
3834
3835         * config/soft-fp/double.h, config/soft-fp/extended.h,
3836         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
3837         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
3838         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
3839         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
3840         glibc CVS.
3841
3842 2007-05-03  Ian Lance Taylor  <iant@google.com>
3843
3844         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
3845         MASK_PPC_GFXOPT for 8540 or 8548.
3846
3847 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
3848
3849         * tree-vect-transform.c (vect_update_inits_of_drs): Use
3850         vect_print_dump_info() to output debug information.
3851
3852 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
3853
3854         PR target/31768
3855         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
3856         operands of size 2 when operand is not MEM_P.
3857
3858 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
3859
3860         PR tree-optimization/30565
3861         * lambda-code.c (perfect_nestify): Fix updating of dominators.
3862
3863 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
3864
3865         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
3866         (umulsi3_highpart): Use them.
3867         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
3868         for final accumulator to D regisster tranfser.
3869
3870 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
3871
3872         PR tree-optimization/31699
3873         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
3874         code.
3875         (vect_enhance_data_refs_alignment): Compute peel amount using
3876         TYPE_VECTOR_SUBPARTS instead of vf.
3877         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
3878
3879 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
3880
3881         PR bootstrap/31776
3882         * system.h: Remove inclusion of double-int.h
3883         * tree.h: Include double-int.h
3884         * gengtype.c: Likewise
3885         * cfgloop.h: Likewise
3886         * Makefile.in: Adjust dependencies on double-int.h
3887
3888 2007-05-02  Eric Christopher  <echristo@apple.com>
3889
3890         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
3891         -shared to -Zdynamiclib.
3892
3893 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
3894
3895         PR c++/31663
3896         * c-common.c (strip_pointer_or_array_types): New function.
3897         * c-common.h (strip_pointer_or_array_types): New function declaration.
3898
3899 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
3900
3901         PR tree-optimization/31771
3902         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
3903
3904 2007-05-02  Paul Brook  <paul@codesourcery.com>
3905
3906         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
3907
3908 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3909
3910         PR middle-end/29715
3911         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
3912         transformation.
3913
3914 2007-05-02  Nick Clifton  <nickc@redhat.com>
3915
3916         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
3917
3918 2007-05-02  Richard Guenther  <rguenther@suse.de>
3919
3920         PR tree-optimization/31146
3921         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
3922         argument, single_use_p.  If we have a single use that is
3923         a conversion to the definition rhs type, propagate that rhs.
3924         (forward_propagate_addr_expr): Pass single_use_p argument
3925         to forward_propagate_addr_expr_1.
3926
3927 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
3928
3929         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
3930         variable.
3931
3932 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3933
3934         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
3935         'AMD Family 10 core'.
3936
3937 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3938
3939         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
3940         and athlon64-sse3 as improved versions of k8, opteron and athlon64
3941         with SSE3 instruction set support.
3942         * doc/invoke.texi: Likewise.
3943
3944 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3945
3946         * config/i386/i386.c (override_options): Tuning 32-byte loop
3947         alignment for amdfam10 architecture. Increasing the max loop
3948         alignment to 24 bytes.
3949
3950 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
3951
3952         * config/m68k/constraints.md: New.
3953         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
3954         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
3955         EXTRA_CONSTRAINT): Remove.
3956         * config/m68k/m68k.md: Include constraints.md.
3957         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
3958
3959 2007-05-01  Ian Lance Taylor  <iant@google.com>
3960
3961         PR tree-optimization/31739
3962         * tree-vrp.c (vrp_val_is_max): New static function.
3963         (vrp_val_is_min): New static function.
3964         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
3965         copying the node.
3966         (set_value_range): Use vrp_val_is_{max,min}.
3967         (extract_range_from_assert): Likewise.
3968         (extract_range_from_binary_expr): Likewise.
3969         (extract_range_from_unary_expr): Likewise.
3970         (dump_value_range, vrp_meet): Likewise.
3971<