OSDN Git Service

e80cb3c00fd8573e24418b70c7a54cf0c12fd139
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2006-11-29  Janis Johnson  <janis187@us.ibm.com>
2
3         * config/dfp-bit.h (CONTEXT_ROUND): Delete.
4         (DFP_INIT_ROUNDMODE): Define.
5         * config/dfp-bit.c: Replace CONTEXT_ROUND with DFP_INIT_ROUNDMODE.
6         * mklibgcc.in: Fix dependencies for dfp-bit.c.
7
8 2006-11-29  Tehila Meyzels  <tehila@il.ibm.com>
9
10         * haifa-sched.c: Remove define LINE_NOTE(INSN).  Remove line_note_head.
11         Update documentation.
12         (associate_line_notes_with_blocks): Kill.
13         (extend_bb): Remove basic block argument, put void instead. 
14         Remove line number handling for each bb. 
15         (save_line_notes): Kill.
16         (restore_line_notes): Kill.
17         (sched_init): Remove line_note_head initialization.
18         Change extend_bb call.
19         (sched_finish): Remove free of line_note_head.
20         (add_block): Change extend_bb call.
21         * sched-ebb.c (schedule_ebb): Remove save_line_notes,
22         rm_line_notes and restore_line_notes calls.
23         (schedule_ebbs): Remove rm_redundant_line_notes.
24         * sched-int.h (struct haifa_insn_data): Remove line_note.
25         (save_line_notes): Remove declaration.
26         (restore_line_notes): Remove declaration.
27         * modulo-sched.c (loop_canon_p): Update debug info printing 
28         by using insn locators instead of line note.
29         (sms_schedule): Update debug info printing, by using insn 
30         locators instead of line note.
31         * sched-rgn.c (debug_dependencies): Remove handling of case 
32         n>0 (line number), since it's a dead code.
33         (schedule_region): Remove save_line_notes and 
34         restore_line_notes calls.
35
36 2006-11-29  Joseph Myers  <joseph@codesourcery.com>
37
38         * config/rs6000/predicates.md (gpc_reg_operand): Check
39         invalid_e500_subreg.
40         * config/rs6000/rs6000.c (invalid_e500_subreg): Don't allow any
41         SImode subregs of SPE vectors.
42         * config/rs6000/rs6000.md (insv): Fail for invalid E500 subregs.
43         * jump.c (true_regnum): Require subregs to satisfy
44         subreg_offset_representable_p.
45
46 2006-11-29  Daniel Berlin  <dberlin@dberlin.org>
47             Steven Bosscher <stevenb.gcc@gmail.com>
48
49         * Makefile.in (tree-ssanames.o): Remove gt-tree-ssanames.h,
50         since it no longer exists.
51             
52 2006-11-29  Duncan Sands  <baldrick@free.fr>
53
54         PR tree-optimization/23744
55         * tree-vrp.c (vrp_meet): do not require ranges to intersect.
56
57 2006-11-29  Duncan Sands  <baldrick@free.fr>
58
59         PR tree-optimization/23744
60         * testsuite/gcc.dg/tree-ssa/pr23744.c: new test.
61
62 2006-11-29  Duncan Sands  <baldrick@free.fr>
63
64         PR tree-optimization/23744
65         * testsuite/gcc.dg/tree-ssa/update-threading.c: xfail.
66
67 2006-11-29  Jie Zhang  <jie.zhang@analog.com>
68
69         * doc/tm.texi (NO_PROFILE_COUNTERS): Document more accurately.
70
71 2006-11-29  J"orn Rennecke  <joern.rennecke@st.com>
72
73         * sh.opt (minline-ic_invalidate): New option.
74         (musermode): Adjust comment.
75         * sh.c (sh_initialize_trampoline): Emit library call unless
76         is set; if it is set, don't emit library call if we can use icbi
77         instead.
78         * sh.md (ic_invalidate_line, ic_invalidate_line_sh4a): Also use
79         icbi for TARGET_SH4_300.
80         * t-sh (LIB1ASMFUNCS_CACHE): Set.
81         * doc/invoke.texi: Document -minline-ic_invalidate; Update
82         -musermode documentation.
83
84 2006-11-29  Jim Tison  <jtison@us.ibm.com>
85
86         * gthr-tpf.h (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION,
87         __gthread_recursive_mutex_init): Define.
88
89 2006-11-29  Joseph Myers  <joseph@codesourcery.com>
90
91         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): If
92         STRICT_ALIGNMENT and the type is more aligned than the saved
93         registers, copy via a temporary.
94
95 2006-11-28  Andrew Pinski  <pinskia@gmail.com>
96
97         PR tree-opt/29984
98         * tree-ssa-reassoc.c (eliminate_duplicate_pair): Handle MAX_EXPR
99         and MIN_EXRP.
100
101 2006-11-28  Bob Wilson  <bob.wilson@acm.org>
102
103         * config/xtensa/lib1funcs.asm (__umulsidi3): Restore a12-a15 on exit.
104
105 2006-11-28  Jan Hubicka  <jh@suse.cz>
106
107         Privatize SSA variables into gimple_df.
108         * tree-flow-inline.h
109         (gimple_in_ssa_p, gimple_aliases_computed_p, gimple_addressable_vars,
110         gimple_call_clobbered_vars, gimple_referenced_vars, gimple_global_var,
111         gimple_nonlocal_all): New accessors.
112         (first_referenced_var): Update.
113         (mark_stmt_modified): Update.
114         (is_call_clobbered): Update.
115         (mark_call_clobbered): Update.
116         (clear_call_clobbered): Update.
117         (mark_non_addressable): Update.
118         * tree-vrp.c (get_value_range): Update.
119         * tree-into-ssa.c (in_ssa_p): Kill.
120         (get_default_def_for): Update.
121         (rewrite_into_ssa): Update.
122         * tree-complex.c (init_parameter_lattice_values): Update.
123         (update_complex_assignment): Update.
124         (update_parameter_components): Update.
125         (expand_complex_libcall): Update.
126         (expand_complex_operations_1): Update.
127         * tree-tailcall.c (arg_needs_copy_p): Update.
128         (add_virtual_phis): Update.
129         (tree_optimize_tail_calls_1): Update.
130         * tree-ssa-dse.c (memory_ssa_name_same): Update.
131         * tree-ssa-copyrename.c
132         (copy_rename_partition_coalesce): Update.
133         * tree-ssa-math-opts.c (execute_cse_reciprocals): Update.
134         * tree-ssa-propagate.c (set_rhs): Update.
135         * tree-ssa-alias.c (aliases_computed_p, call_clobbered_vars,
136         addressable_vars, global_var):Kill.
137         (set_initial_properties): Update.
138         (init_alias_info): Update.
139         (finalize_ref_all_pointers): Update.
140         (setup_pointers_and_addressables): Update.
141         (maybe_create_global_var): Update.
142         (create_global_var): Update.
143         (dump_points_to_info): Update.
144         * function.h (struct gimple_df): Forward declare.
145         (struct function): Add GIMPLE_DF field.
146         * gimplify.c (force_gimple_operand): Update.
147         * tree-dfa.c (referenced_vars, default_defs): KIll.
148         (make_rename_temp): Update.
149         (dump_variable): Update.
150         (referenced_var_lookup): Update.
151         (referenced_var_check_and_insert): Update.
152         (default_def): Rename to ...
153         (gimple_default_def): ... this one; accept cfun argument.
154         (set_default_def): Update.
155         * tree-cfgcleanup.c (modified_noreturn_calls): Kill.
156         (cleanup_control_flow): Update.
157         * tree-ssa-pre.c (compute_avail): Update
158         * tree-ssa-live.c (calculate_live_on_entry): Update.
159         * tree-ssa.c (verify_use): Update.
160         (verify_call_clobbering): Update.
161         (verify_call_clobbering): Update.
162         (init_tree_ssa): Update.
163         (delete_tree_ssa): Update.
164         * tree-outof-ssa.c (coalesce_ssa_name): Update.
165         (rewrite_out_of_ssa): Update.
166         * tree-flow.h (gimple_df): New structure collecting dataflow variables.
167         (FREE_SSANAMES, SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS): New
168         private accessors.
169         (in_ssa_p, modified_noreturn_calls, referenced_vars, default_defs,
170         ssa_names, global_var, nonlocal_all, call_clobbered_vars,
171         addressable_vars, aliases_computed_p): Kill.
172         (default_def): Rename to...
173         (gimple_default_def): ... this one.
174         (defaule_def_fn): Kill.
175         (num_referenced_vars, ssa_names, num_ssa_names): Update.
176         * tree-ssa-structalias.c (nonlocal_all): Kill.
177         (get_constraint_exp_from_ssa_var): Update.
178         (create_nonlocal_var): Update.
179         (get_constraint_for): Update.
180         (update_alias_info): Update.
181         (find_global_initializers): Update.
182         (intra_create_variable_infos): Update.
183         (intra_create_variable_infos):
184         (find_what_p_points_to): Update.
185         (init_alias_heapvars): Update.
186         * tree-cfg.c (remove_bb): Update.
187         (gimplify_val): Update.
188         * tree-ssa-reassoc.c (get_rank): Update.
189         (init_reassoc): Update.
190         * tree-ssanames.c: Do not include gt-tree-ssanames.h
191         (ssa_names, free_ssanames): Kill.
192         (init_ssanames): Update.
193         (make_ssa_name): Update.
194         (release_ssa_name): Update.
195         (release_defs): Update.
196         (replace_ssa_name_symbol): Update.
197         * tree-ssa-operands.c (access_can_touch_variable): Update.
198         (add_virtual_operand): Update.
199         (add_call_clobber_ops): Update.
200         (add_call_read_ops): Update.
201         (get_call_expr_operands): Update.
202         (get_asm_expr_operands): Update.
203
204 2006-11-28  Jan Hubicka  <jh@suse.cz>
205
206         * builtins.c: Include tree-flow.h.
207         (fold_builtin_memory_op): Be more aggressive on converting memcpy to
208         assignment; convert memmove to memcpy for sizes greater than 1 where
209         alignment of operands prohibit the partial overlap.
210
211 2006-11-28  Jan Hubicka  <jh@suse.cz>
212
213         * invoke.texi (large-stack-frame, large-stack-frame-growth): New params.
214         * cgraph.c (dump_cgraph_node): Dump stack usage.
215         * cgraph.h (cgraph_local_info): Add estimated_self_stack_size.
216         (cgraph_global_info): Add estimated_stack_size and stack_frame_offset.
217         * cgraphunit.c (cgraph_analyze_function): Analyze stack sizes.
218         * ipa-inline.c (cgraph_clone_inlined_nodes): Propagate stack usage.
219         (cgraph_check_inline_limits): Limit stack growth.
220         * cfgexpand.c: Include tree-inline.h.
221         (account_stack_vars): New function.
222         (expand_one_var): New param to just account the stack; return estimated
223         size.
224         (expand_used_vars_for_block): Update call of expand_one_var.
225         (account_used_vars_for_block): New function.
226         (estimated_stack_frame_size): Likewise.
227         (init_vars_expansion, fini_vars_expansion): Break out from..
228         (expand_used_vars): ... here.
229         * tree-inline.h (estimated_stack_frame_size): Declare.
230         * params.def (PARAM_LARGE_STACK_FRAME, PARAM_STACK_FRAME_GROWTH): New.
231
232 2006-11-28  Richard Guenther  <rguenther@suse.de>
233
234         * ggc-page.c (ggc_print_statistics): Use %ul and a cast to
235         unsigned long for printing OBJECT_SIZE.
236
237 2006-11-27  Steven Bosscher  <steven@gcc.gnu.org>
238
239         * alias.c (init_alias_analysis): Remove simplification loop
240         after propagating pointers.
241
242 2006-11-27  Uros Bizjak  <ubizjak@gmail.com>
243
244         * config/i386/i386.c (x86_ext_80387_constants): Add m_K8, m_CORE2
245         and m_GENERIC64.
246
247 2006-11-27  Bob Wilson  <bob.wilson@acm.org>
248
249         * config/xtensa/xtensa.h (XCHAL_HAVE_MUL32_HIGH): Provide default.
250
251 2006-11-27  Roger Sayle  <roger@eyesopen.com>
252             Manuel Lopez-Ibanez <manu@gcc.gnu.org>
253             
254         * c-common.c (constant_fits_type_p): Delete.
255         (unsigned_conversion_warning): Delete.
256         (conversion_warning): Integrate Wconversion warning from
257         unsigned_conversion_warning.
258         (convert_and_check): Integrate Woverflow warning from
259         unsigned_conversion_warning.  Reorganize and simplify to avoid
260         dependence upon the middle-end setting TREE_OVERFLOW on integral
261         conversions, by using int_fits_type_p directly.
262
263 2006-11-27  Tobias Burnus  <burnus@net-b.de>
264
265         * doc/invoke.texi: Fixed typo.
266
267 2006-11-27  Michael Matz  <matz@suse.de>
268             Andreas Krebbel  <krebbel1@de.ibm.com>
269
270         PR target/29319
271         * config/s390/predicates.md (larl_operand): Check addend of larl
272         operand to be in range of -/+2GB.
273         * config/s390/s390.c (legitimize_pic_address): Likewise.  
274         Changed type of variable even to HOST_WIDE_INT.
275
276 2006-11-27  Jan Hubicka  <jh@suse.cz>
277
278         * expr.c (emit_block_move_via_libcall): Export.
279         (clear_storage_via_libcall): Rename to ...
280         (set_storage_via_libcall): ... this one; handle arbitrary value to set.
281         (clear_storage): Update to set_storage_via_libcall.
282         * expr.h (emit_block_move_via_libcall): Declare
283         * config/i386/i386.h (stringop_alg): New enum.
284         (MAX_STRINGOP_ALGS): New constant.
285         (stringop_algs): New struct.
286         (processor_costs): Add memcpy/memset descriptors.
287         (TARGET_REP_MOVEL_OPTIMAL): Remove.
288         * config/i386/i386.md (movsi_insv_1_rex64): New pattern.
289         (strmovsi, strmovdi, strsetsi, strsetdi): Update; accept all operands
290         for memset.
291         * config/i386/i386.opt (minline-stringops-dynamically,
292         mstringop-strategy): New
293         parameters.
294         * config/i386/i386-prostos.h (ix86_expand_movmem): Update prototype.
295         (ix86_expand-clrmem): Rename to ...
296         (ix86_expand_setmem): ... this one; update prototype.
297         * config/i386/i386.c (DUMMY_STRINGOP_ALGS): New constant.
298         (size_cost, i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
299         geode_cost, k6_cost, athlon_cost, k8_cost, pentium4_cost,
300         nocona_cost, core2_cost, generic_cost, generic64_cost,
301         generic32_cost): Add memcpy/memset descriptors.
302         (x86_rep_movl_optimal): Remove.
303         (stringop_alg): New static variable.
304         (ix86_expand_aligntest): Handle predictions.
305         (override_options): Add strgop_alg handling.
306         (predict_jump): New function.
307         (scale_counter): New function.
308         (expand_set_or_movmem_via_loop): New function.
309         (expand_movmem_via_rep_mov): New function.
310         (expand_setmem_via_rep_stots): New function.
311         (emit_strmov): New function.
312         (expand_movmem_epilogue): New function.
313         (expand_setmem_epilogue_via_loop): New function.
314         (expand_setmem_epilogue): New function.
315         (expand_movmem_prologue): New function.
316         (expand_setmem_prologue): New function.
317         (decide_alg): New function.
318         (decide_alignment): New function.
319         (ix86_exand_movmem): Rewrite.
320         (promote_duplicated_reg): New function.
321         (ix86_expand_clrmem): Rename to ...
322         (ix86_expand_setmem): ... this one. Rewrite.
323
324         * invoke.texi (minline-stringops-dynamically): New command line option.
325         (mstringop-strategy): Likewise.
326
327 2006-11-27  Jan Hubicka  <jh@suse.cz>
328
329         * cfgexpand.c (construct_exit_block): Don't disturb end of last BB.
330         * rtl.texi (NOTE_INSN_FUNCTION_END): Remove.
331         * final.c (final_scan_insn): Don't scan NOTE_INSN_FUNCTION_END.
332         * insn-notes.def (FUNCTION_END): Remove.
333         * jump.c (delete_related_insns): Don't worry about FUNCTION_END.
334         (redicect_jump_2): Don't accept -1 parameter to remove FUNCTION_END
335         note.
336         * ifcvt.c (dead_or_predictable): Update call of redirect_jump_2.
337         * function.c (expand_function_end): Don't emit NOTE_INSN_FUNCTION_END
338         * cfglayout.c (duplicate_insn_chain): Don't worry about
339         NOTE_FUNCTION_END.
340
341 2006-11-27  Richard Guenther  <rguenther@suse.de>
342         Zdenek Dvorak <dvorakz@suse.cz>
343
344         * target.h (struct gcc_target): Add builtin_vectorized_function
345         target hook.
346         * target-def.h (TARGET_VECTORIZE): Likewise.
347         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION):
348         Document new target hook.
349         * targhooks.h (default_builtin_vectorized_function): Declare.
350         * targhooks.c (default_builtin_vectorized_function): Define.
351         * tree-vectorizer.h (stmt_vec_info_type): Add call_vec_info_type.
352         (vectorizable_call): Declare.
353         * tree-vect-analyze.c (vect_analyze_operations): Call
354         vectorizable_call.
355         * tree-vect-transform.c (vectorizable_function): New static function.
356         (build_vectorized_function_call): Likewise.
357         (vectorizable_call): New function.
358         (vect_transform_stmt): Handle vectorizable calls.
359
360 2006-11-27  Richard Guenther  <rguenther@suse.de>
361
362         PR middle-end/25620
363         * builtins.c (expand_builtin_pow): Optimize non integer valued
364         constant exponents using sqrt or cbrt if possible.  Always fall back
365         to expanding via optabs.
366
367 2006-11-27  Ira Rosen  <irar@il.ibm.com>
368
369         PR tree-optimization/22372
370         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Convert
371         the type of the base address.
372         (vect_create_data_ref_ptr): Add an argument, type of the data-ref. Use
373         it in the data-ref pointer creation.
374         (vect_init_vector): Add an argument, type of the init vector. Use it in
375         the stmt creation.
376         (vect_get_vec_def_for_operand): Fix calls to vect_init_vector.
377         (get_initial_def_for_reduction): Likewise.
378         (vect_create_epilog_for_reduction): Change type of MODIFY_EXPR to
379         void_type_node.
380         (vectorizable_assignment, vect_permute_store_chain): Likewise.
381         (vectorizable_store): Fix call to vect_create_data_ref_ptr. Use the
382         correct type in stmt creation.
383         (vect_setup_realignment): Use the correct type in stmt creation.
384         (vect_permute_load_chain): Change type of MODIFY_EXPR to
385         void_type_node.
386         (vectorizable_load): Fix calls to vect_create_data_ref_ptr. Change type
387         of MODIFY_EXPR to void_type_node.
388         (vectorizable_condition): Change type of MODIFY_EXPR to
389         void_type_node.
390         (vect_update_ivs_after_vectorizer): Use the correct type in stmt
391         creation.
392
393 2006-11-27  Uros Bizjak  <ubizjak@gmail.com>
394
395         Revert:
396         2006-05-08  Uros Bizjak  <uros@kss-loka.si>
397         * config/i386/i386.c (ix86_rtx_costs) [FLOAT_EXTEND]: For
398         standard 80387 constants, raise the cost to prevent
399         compress_float_constant() to generate load from memory.
400
401         * config/i386/i386.md: Add new splitter pattern to split
402         float_extended load of constant from constant pool into
403         pure constant load.
404
405 2006-11-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
406
407         * doc/install.texi: Move GMP/MPFR configure options from Fortran
408         section to general section.  Remove documentation for
409         --with-mpfr-dir and --with-gmp-dir, add documentation for
410         --with-mpfr-include, --with-mpfr-lib, --with-gmp-include and
411         --with-gmp-lib.
412
413         * builtins.c (fold_builtin_fmin_fmax): Handle NaN arguments.
414
415 2006-11-26  Razya Ladklesky  <razya@il.ibm.com> 
416
417         * testsuite/gcc.dg/ipa/ipa-6.c: New.
418
419 2006-11-26  Razya Ladklesky  <razya@il.ibm.com>
420         
421         PR tree-optimization/29122
422         * tree-inline.c (tree_function_versioning): Update DECL_ASSEMBLER_NAME 
423         for the new version.  Assign NULL to DECL_RTL of the new version. 
424
425 2006-11-25  Uros Bizjak  <ubizjak@gmail.com>
426
427         * reg-stack.c (get_true_reg): Fix UNSPEC_TRUNC_NOOP handling.
428
429 2006-11-25  Steven Bosscher  <steven@gcc.gnu.org>
430
431         * cse.c (cse_altered): Remove.
432         (record_jump_equiv): Make true/false argument a bool instead
433         of an int.
434         (cse_insn): Don't set cse_altered.  Use delete_insn_and_edges
435         where appropriate.  Emit a new jump before the existing one
436         instead of after so that delete_insn_and_edges removes the
437         dead edges properly.  Check any_condjump_p before calling
438         record_jump_equiv.
439         (cse_basic_block): Check any_condjump_p before calling
440         record_jump_equiv.
441         (cse_main): Don't set/check cse_altered.  Remove USE_C_ALLOCA.
442
443 2006-11-25  Brooks Moses  <brooks.moses@codesourcery.com>
444
445         * c.opt: Remove -ffixed-form, -ffixed-line-length-none, and
446         -ffixed-line-length-* options.
447
448 2006-11-25  Uros Bizjak  <ubizjak@gmail.com>
449
450         * config/i386/i386.md (fpremxf4): Rename to fpremxf4_i387.
451         (fprem1xf4): Rename to fprem1xf4_i387.
452
453         (fmodsf3, fmoddf3): Macroize patterns using X87MODEF12 mode macro.
454         Rename patterns to fmod<mode>3.  Use general_operand operand
455         constraint for operands 1 and 2.  Use SSE_FLOAT_MODE_P to disable
456         patterns for SSE math.
457         (remaindersf3, remainderdf3): Ditto.
458
459 2006-11-25  Joseph Myers  <joseph@codesourcery.com>
460
461         * function.c (instantiate_virtual_regs_in_insn): Call force_reg
462         inside start_sequence / end_sequence pair.
463
464 2006-11-25  Steven Bosscher  <steven@gcc.gnu.org>
465
466         * jump.c (mark_all_labels): Work in cfglayout mode.
467         * cfgcleanup.c (cleanup_cfg): Do not call delete_dead_jumptables
468         when in cfglayout mode, because there are no dead jumptables
469         visible.
470         * cfgrtl.c (commit_one_edge_insertion): Don't set bb->aux when
471         in cfglayout mode.
472         (commit_edge_insertions): Do not allow insertion of instructions
473         with control flow insns when in cfglayout mode.
474
475 2006-11-25  Zdenek Dvorak <dvorakz@suse.cz>
476
477         * tree-vrp.c (execute_vrp): Do not pass loops structure through
478         arguments.
479         * loop-unswitch.c (unswitch_loops, unswitch_single_loop,
480         unswitch_loop): Ditto.
481         * tree-loop-linear.c (linear_transform_loops): Ditto.
482         * tree-ssa-loop-im.c (determine_lsm, tree_ssa_lim_initialize,
483         tree_ssa_lim): Ditto.
484         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
485         free_numbers_of_iterations_estimates): Ditto.
486         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops,
487         tree_unswitch_single_loop, tree_unswitch_loop): Ditto.
488         * cfgloopmanip.c (fix_bb_placement, fix_bb_placements,
489         remove_path, add_loop, loopify, unloop, fix_loop_placements,
490         place_new_loop, duplicate_loop, duplicate_subloops,
491         update_single_exit_for_duplicated_loops, copy_loops_to,
492         duplicate_loop_to_header_edge, create_preheaders,
493         force_single_succ_latches, loop_version, fix_loop_structure):
494         Ditto.
495         * tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge,
496         tree_unroll_loop): Ditto.
497         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
498         * tree-scalar-evolution.c (select_loops_exit_conditions,
499         scev_initialize, scev_analysis): Ditto.
500         * tree-scalar-evolution.h (scev_initialize): Ditto.
501         * cfghooks.c (cfg_hook_duplicate_loop_to_header_edge): Ditto.
502         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
503         * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
504         * modulo-sched.c (sms_schedule): Ditto.
505         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
506         * loop-init.c (loop_optimizer_init, rtl_move_loop_invariants,
507         rtl_unswitch, rtl_unroll_and_peel_loops, rtl_doloop): Ditto.
508         * ifcvt.c (if_convert): Ditto.
509         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely,
510         canonicalize_loop_induction_variables,
511         canonicalize_induction_variables,
512         tree_unroll_loops_completely, remove_empty_loops): Ditto.
513         * tree-ssa-loop.c (tree_ssa_loop_init, tree_ssa_loop_im,
514         tree_ssa_loop_unswitch, tree_vectorize, tree_linear_transform,
515         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
516         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts,
517         tree_ssa_loop_done): Ditto.
518         * predict.c (predict_loops, tree_estimate_probability, estimate_loops,
519         estimate_bb_frequencies): Ditto.
520         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
521         slpeel_tree_peel_loop_to_edge, vectorize_loops): Ditto.
522         * loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
523         decide_unrolling_and_peeling, peel_loop_completely,
524         unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
525         peel_loop_simple, unroll_loop_stupid): Ditto.
526         * loop-doloop.c (doloop_optimize_loops): Ditto.
527         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Ditto.
528         * loop-invariant.c (move_loop_invariants): Ditto.
529         * tree-ssa-dce.c (tree_ssa_dce_loop): Ditto.
530         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays,
531         tree_ssa_prefetch_arrays): Ditto.
532         * lambda-code.c (gcc_loopnest_to_lambda_loopnest, perfect_nestify):
533         Ditto.
534         * tree-vect-transform.c (vect_do_peeling_for_loop_bound,
535         vect_do_peeling_for_alignment, vect_transform_loop): Ditto.
536         * cfgloop.c (flow_loops_cfg_dump, flow_loops_dump,
537         mark_single_exit_loops, cancel_loop, cancel_loop_tree,
538         verify_loop_structure): Ditto.
539         * tree-flow.h (vectorize_loops, tree_ssa_lim, tree_ssa_unswitch_loops,
540         canonicalize_induction_variables, tree_unroll_loops_completely,
541         tree_ssa_prefetch_arrays, remove_empty_loops, tree_ssa_iv_optimize,
542         estimate_numbers_of_iterations, free_numbers_of_iterations_estimates,
543         tree_duplicate_loop_to_header_edge, tree_ssa_loop_version,
544         tree_unroll_loop, linear_transform_loops): Declaration changed.
545         * basic-block.h: Remove declaration of struct loops.
546         * cfghooks.h (struct cfg_hooks): Change type of
547         cfg_hook_duplicate_loop_to_header_edge.
548         (cfg_hook_duplicate_loop_to_header_edge): Declaration changed.
549         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge,
550         vect_transform_loop): Declaration changed.
551         * lambda.h (gcc_loopnest_to_lambda_loopnest): Declaration changed.
552         * cfgloop.h (flow_loops_dump, fix_loop_structure,
553         mark_irreducible_loops, mark_single_exit_loops, mark_loop_exit_edges,
554         cancel_loop_tree, create_preheaders, force_single_succ_latches,
555         verify_loop_structure, duplicate_loop, duplicate_loop_to_header_edge,
556         loopify, loop_version, remove_path, unswitch_loops,
557         unroll_and_peel_loops, doloop_optimize_loops, move_loop_invariants):
558         Declaration changed.
559
560 2006-11-24  Uros Bizjak  <ubizjak@gmail.com>
561
562         * config/i386/i386.md (UNSPEC_TRUNC_NOOP): New unspec definition.
563         (X87MODEF): New mode macro.
564         (ssemodefsuffix): New mode attribute.
565         (truncxf<mode>2_i387_noop_unspec): New insn pattern.
566         (sqrt_extend<mode>xf2_i387): New insn pattern.
567         (sqrt<mode>2): For non-SSE sqrt, emit sqrt_extend<mode>xf2_i387
568         insn and truncate result back to original mode using
569         UNSPEC_TRUNC_NOOP truncation.
570         (*sqrt<mode>2_sse): Implement using SSEMODEF mode macro and
571         ssemodefsuffix mode attribute.
572         (*sqrtsf2_mixed, *sqrtsf2_i387, *sqrtdf2_mixed, *sqrtdf2_i387)
573         (*sqrtextendsfdf2_i387, *sqrtextendsfxf2_i387)
574         (*sqrtextenddfxf2_i387): Remove insn patterns.
575
576         (fmodsf3, fmoddf3, remaindersf3, remainderdf3): Use noop
577         truncation patterns.
578
579         * reg-stack.c (get_true_reg): Handle UNSPEC_TRUNC_NOOP. 
580         
581 2006-11-24  Jakub Jelinek  <jakub@redhat.com>
582
583         PR c/29955
584         * c-tree.h (c_maybe_initialize_eh): New prototype.
585         * c-decl.c (finish_decl): Move EH initialization...
586         (c_maybe_initialize_eh): ... here.  New function.
587         * c-parser.c (c_parser_omp_construct): Call c_maybe_initialize_eh
588         if not #pragma omp atomic.
589
590         PR c/29736
591         * c-common.c (handle_vector_size_attribute): Disallow VECTOR_TYPE
592         or UNION_TYPE inner types.
593
594 2006-11-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
595
596         PR tree-opt/29964
597         * ipa-pure-const.c (check_tree): If the original tree
598         is volatile return early and say the function is not pure
599         nor const.  Remove the volatile check for writes.  
600         (analyze_function): Print out the result of the local
601         analysis pass.
602
603 2006-11-24  Joseph Myers  <joseph@codesourcery.com>
604
605         * config/rs6000/eabispe.h (TARGET_DEFAULT): Include
606         MASK_STRICT_ALIGN.
607         * config/rs6000/linuxspe.h (TARGET_DEFAULT): Likewise.
608         * config/rs6000/rs6000.c (rs6000_override_options): Use
609         MASK_STRICT_ALIGN for 8540 and 8548.  Add MASK_STRICT_ALIGN to
610         POWERPC_MASKS.
611
612 2006-11-24  Andreas Krebbel  <krebbel1@de.ibm.com>
613
614         * config/s390.c (s390_emit_compare_and_swap): New function.
615         (s390_expand_cs_hqi, s390_expand_atomic): Call 
616         s390_emit_compare_and_swap.
617
618 2006-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
619
620         * pa.c (return_addr_rtx): Change 0xe0400002 to -532676606.
621
622 2006-11-24  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
623
624         PR c/2707
625         PR c++/26167
626         * c-common.c (conversion_warning): New.
627         (convert_and_check): Call conversion_warning unless there is an
628         overflow warning.
629         * doc/invoke.texi (-Wconversion): Update description.
630
631 2006-11-23  Daniel Berlin  <dberlin@dberlin.org>
632
633         * tree-ssa-alias.c (tree_pointer_compare): New function.
634         (compact_name_tags): New function.
635         (group_aliases): Call compact_name_tags.
636
637 2006-11-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
638
639         * real.h (real_isinteger): Declare.
640         * real.c (real_isinteger): Define.
641         * builtins.c (integer_valued_real_p): Use it.
642
643 2006-11-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
644
645         PR c/9072 
646         * c.opt (Wtraditional-conversion): New.
647         (Wconversion): Update description.
648         * c-typeck.c (convert_arguments): Warnings for prototypes causing
649         type conversions different from what would happen in the absence
650         of prototype are now handled by Wtraditional-conversion.
651         * doc/invoke.texi (Wtraditional-conversion): New.
652         (Wconversion): Update description.
653         * doc/trouble.texi (Wconversion): Replace Wconversion by
654         Wtraditional-conversion.
655
656 2006-11-23  Andrew Pinski  <pinskia@gmail.com>
657
658         * predict.c (tree_estimate_probability): Check to make
659         sure current_loops is non null before calling flow_loops_dump.
660
661 2006-11-23  Bernd Schmidt  <bernd.schmidt@analog.com>
662
663         * var-tracking.c (emit_note_insn_var_location): Revert previous patch.
664
665 2006-11-23  David Ung  <davidu@mips.com>
666
667         * config/mips/mips.h (ISA_HAS_FP4): Add MIPS32R2 + 64bit fpu
668         combination.
669         (ISA_HAS_MXHC1): True if ISA supports mfhc1 and mthc1 opcodes.
670         (ASM_SPEC): Pass along -mfp32 and -mfp64.
671         * config/mips/mips.c (mips_split_64bit_move): Use gen_mthc1 to set
672         high part of FP register when in 64-bit FP register mode.  Similarly
673         use gen_mfhc1 to load high part of FP register.
674         (override_options): Allow -mgp32 and -mfp64 combination if
675         ISA_HAS_MXHC1 (currently for O32 only).
676         (mips_cannot_change_mode_class): If floating-point registers are
677         bigger than word size. disallow conversion of float register from a
678         large integer mode to a float mode smaller than the float register
679         size.
680         (mips_class_max_nregs): Handle float registers case seperately.
681         * config/mips/mips.md (define_constants): Add UNSPEC_MFHC1,
682         UNSPEC_MTHC1.
683         (movdi_32bit): Use !TARGET_FLOAT64 in condition pattern.
684         (movdf_hardfloat_32bit): Similarly.
685         (movdi_gp32_fp64): New DImode pattern for MIPS32R2 which optionally
686         support a full 64-bit fpu.
687         (mthc1): New pattern to generate MTHC1 instruction.
688         (mfhc1): New pattern to generate MFHC1 instruction.
689         * doc/invoke.texi (MIPS Options): Document the -mgp32 -mfp64
690         option for the MIPS32R2 and mention its use under O32 ABI.
691
692 2006-11-23  Bernd Schmidt  <bernd.schmidt@analog.com>
693
694         * var-tracking.c (emit_note_insn_var_location): Take care not to
695         cause verify_flow_info failures.
696
697 2006-11-22  Daniel Berlin  <dberlin@dberlin.org>
698
699         * tree-ssa-structalias.c: Remove edge weights in favor of just
700         processing them as complex constraints.
701         (struct constraint_graph): Remove weighted succs and preds. Rename
702         nonweighted succs and preds.
703         (constraint_edge): Removed.
704         (constraint_edge_t): Ditto.
705         (constraint_edge_pool): Ditto.
706         (new_constraint_edge): Ditto.
707         (constraint_edge_equal): Ditto.
708         (constraint_edge_less): Ditto.
709         (constraint_edge_vec_find): Ditto.
710         (erase_self_graph_edge): Ditto.
711         (add_graph_edge): Removed.
712         (get_graph_weights): Ditto.
713         (allocate_graph_weights): Ditto.
714         (valid_weighted_graph_edge): Ditto
715         (bitmap_other_than_zero_bit_set): Ditto.
716         (int_add_graph_edge): Renamed to add_graph_edge.
717         (clear_edges_for_node): Remove support for weighted edges.
718         (merge_graph_nodes): Ditto.
719         (valid_graph_edge): Ditto.
720         (build_constraint_graph): Ditto.
721         (scc_visit): Ditto.
722         (collapse_nodes): Ditto.
723         (process_unification_queue): Ditto.
724         (topo_visit): Ditto.
725         (do_ds_constraint): Ditto.
726         (perform_var_subsitution): Ditto.
727         (solve_graph): Ditto.
728         (init_alias_vars): Ditto.
729         (delete_points_to_sets): Ditto.
730         (do_complex_constraint): Support offsetted copies here.
731
732 2006-11-23  Ulrich Weigand  <uweigand@de.ibm.com>
733
734         * config/spu/spu_intrinsics.h (SPU_RdEventStatMask): Rename to
735         SPU_RdEventMask.
736         * config/spu/spu_mfcio.h (spu_read_event_mask): Update.
737
738         * config/spu/spu_mfcio.h (struct mfc_list_element): Change width
739         of size bitfield.
740
741 2006-11-23  Ben Elliston  <bje@au.ibm.com>
742
743         * config/spu/spu-elf.h (LIB_SPEC): Do not link with -lc_p.
744
745 2006-11-23  Zdenek Dvorak <dvorakz@suse.cz>
746
747         PR tree-optimization/29921
748         * fold-const.c (operand_equal_p): Without HONOR_SIGNED_ZEROS, consider
749         signed and unsigned zero equal.
750
751 2006-11-22  Peter Bergner  <bergner@vnet.ibm.com>
752
753         * config/rs6000/rs6000.c (get_store_dest): New.
754         (adjacent_mem_locations): Use get_store_dest() to get
755         the rtl of the store destination.
756
757 2006-11-22  Joseph Myers  <joseph@codesourcery.com>
758
759         * config/rs6000/spe.md (SPE64): New mode macro.
760         (mov_sidf_e500_subreg0): Change to mov_si<mode>_e500_subreg0.  Add
761         memory load.
762         (mov_si<mode>_e500_subreg0_2): New.
763         (mov_sidf_e500_subreg4): Change to mov_si<mode>_e500_subreg4.  Add
764         memory load.
765         (mov_si<mode>_e500_subreg4_2): New.
766         * config/rs6000/predicates.md (input_operand): Do not allow
767         invalid E500 subregs.
768         (rs6000_nonimmediate_operand): Check for invalid E500 subregs also
769         if TARGET_SPE.
770         * config/rs6000/rs6000.c (invalid_e500_subreg): Check for subregs
771         involving DFmode if TARGET_E500_DOUBLE.  Check for subregs
772         involving vector modes if TARGET_SPE.
773
774 2006-11-22  Kaz Kojima  <kkojima@gcc.gnu.org>
775
776         Revert
777         2006-11-12  Kaz Kojima  <kkojima@gcc.gnu.org>
778         * reorg.c (emit_delay_sequence): Copy the delay slot insn.
779
780 2006-11-22  Bernd Schmidt  <bernd.schmidt@analog.com>
781
782         * config/bfin/predicates.md (d_register_operand, mem_p_address_operand,
783         mem_i_address_operand): New predicates.
784         * config/bfin/bfin.c (bfin_issue_rate): New function.
785         (TARGET_SCHED_ISSUE_RATE): New macro.
786         * config/bfin/bfin.md (addrtype): New attribute.
787         (slot0, slot1, slot2, store, pregs): New cpu_units.
788         (core): Now a define_reservation.
789         (alu): Remove some insn types from this reservation.
790         (dsp32, load32, loadp, loadi, store32, storep, storei, multi): New
791         insn reservations.
792         (dummy reservation): Don't trigger for mcld insns.
793         (absence_sets): Two new absence sets to enforce slot ordering.
794         (popsi_insn): Set addrtype.
795
796 2006-11-22  Ira Rosen  <irar@il.ibm.com>
797
798         * doc/c-tree.texi: Document new tree codes.
799         * doc/md.texi: Document new optabs.
800         * tree-pretty-print.c (dump_generic_node): Handle print of new tree
801         codes.
802         * optabs.c (optab_for_tree_code, init_optabs): Handle new optabs.
803         * optabs.h (optab_index): Add new.
804         (vec_extract_even_optab, vec_extract_odd_optab,
805         vec_interleave_high_optab, vec_interleave_low_optab): New optabs.
806         * genopinit.c (vec_extract_even_optab, vec_extract_odd_optab,
807         vec_interleave_high_optab, vec_interleave_low_optab): Initialize
808         new optabs.
809         * expr.c (expand_expr_real_1): Add implementation for new tree codes.
810         * tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
811         * tree-vectorizer.h (stmt_vec_info): Add new fields for interleaving
812         along with macros for their access.
813         * tree-data-ref.h (first_location_in_loop, data_reference): Update
814         comment.
815         * tree-vect-analyze.c (toplev.h): Include.
816         (vect_determine_vectorization_factor): Fix indentation.
817         (vect_insert_into_interleaving_chain,
818         vect_update_interleaving_chain, vect_equal_offsets): New functions.
819         (vect_analyze_data_ref_dependence): Add argument for interleaving
820         check. Check for interleaving if it's true.
821         (vect_check_dependences): New function.
822         (vect_analyze_data_ref_dependences): Call vect_check_dependences for
823         every ddr. Call vect_analyze_data_ref_dependence with new argument.
824         (vect_update_misalignment_for_peel): Update for interleaving.
825         (vect_verify_datarefs_alignment): Check only first data-ref for
826         interleaving.
827         (vect_enhance_data_refs_alignment): Update for interleaving. Check
828         only first data-ref for interleaving.
829         (vect_analyze_data_ref_access): Check interleaving, update
830         interleaving data.
831         (vect_analyze_data_refs): Call compute_data_dependences_for_loop
832         with different parameters.
833         * tree.def (VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR,
834         VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR): New tree codes.
835         * tree-inline.c (estimate_num_insns_1): Add cases for new codes.
836         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
837         Update step in case of interleaving.
838         (vect_strided_store_supported, vect_permute_store_chain): New
839         functions.
840         (vectorizable_store): Handle strided stores.
841         (vect_strided_load_supported, vect_permute_load_chain,
842         vect_transform_strided_load): New functions.
843         (vectorizable_load): Handle strided loads.
844         (vect_transform_stmt): Add argument. Handle strided stores. Check
845         that vectorized stmt exists for patterns.
846         (vect_gen_niters_for_prolog_loop): Update calculation for
847         interleaving.
848         (vect_transform_loop): Remove stmt_vec_info for strided stores after
849         whole chain vectorization.
850         * config/rs6000/altivec.md (UNSPEC_EXTEVEN, UNSPEC_EXTODD,
851         UNSPEC_INTERHI, UNSPEC_INTERLO): New constants.
852         (vpkuhum_nomode, vpkuwum_nomode, vec_extract_even<mode>,
853         vec_extract_odd<mode>, altivec_vmrghsf, altivec_vmrglsf,
854         vec_interleave_high<mode>, vec_interleave_low<mode>): Implement.
855
856 2006-11-22  Steven Bosscher  <steven@gcc.gnu.org>
857
858         * cse.c (enum taken): Remove PATH_AROUND.
859         (addr_affects_sp_p, invalidate_skipped_set,
860         invalidate_skipped_block): Remove.
861         (cse_end_of_basic_block): Remove skip_blocks and related code.
862         (cse_main): Don't test for flag_cse_skip_blocks.
863         Update cse_end_of_basic_block call.
864         (cse_basic_block): Likewise.  Remove PATH_AROUND case.  Remove
865         code to lengthen the path if a jump was simplified.
866
867 2006-11-22  Zdenek Dvorak <dvorakz@suse.cz>
868
869         PR rtl-optimization/29924
870         * loop-unroll.c (split_edge_and_insert): Handle the case insns is NULL.
871         (unroll_loop_runtime_iterations): Assert that the argument passed to
872         split_edge_and_insert is not NULL.
873         * loop-doloop.c (add_test): Ditto.
874
875 2006-11-22  Zdenek Dvorak <dvorakz@suse.cz>
876
877         * tree-loop-linear.c (linear_transform_loops): Use single_exit accessor
878         functions.
879         * tree-ssa-loop-niter.c (loop_only_exit_p): Ditto.
880         * cfgloopmanip.c (update_single_exits_after_duplication,
881         update_single_exit_for_duplicated_loop, loop_version): Ditto.
882         * tree-scalar-evolution.c (get_loop_exit_condition,
883         get_exit_conditions_rec, loop_closed_phi_def,
884         number_of_iterations_in_loop, scev_const_prop): Ditto.
885         * tree-ssa-loop-ivopts.c (single_dom_exit): Ditto.
886         * modulo-sched.c (generate_prolog_epilog, loop_canon_p, sms_schedule):
887         Ditto.
888         * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
889         Ditto.
890         * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop,
891         slpeel_update_phi_nodes_for_guard1, slpeel_update_phi_nodes_for_guard2,
892         slpeel_make_loop_iterate_ntimes,
893         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_can_duplicate_loop_p,
894         slpeel_verify_cfg_after_peeling, slpeel_tree_peel_loop_to_edge):
895         Ditto.
896         * tree-if-conv.c (if_convertible_loop_p): Ditto.
897         * tree-vect-analyze.c (vect_analyze_operations, vect_stmt_relevant_p,
898         vect_analyze_loop_form): Ditto.
899         * lambda-code.c (lambda_loopnest_to_gcc_loopnest, exit_phi_for_loop_p,
900         can_convert_to_perfect_nest, perfect_nestify): Ditto.
901         * tree-vect-transform.c (vect_create_epilog_for_reduction,
902         vect_update_ivs_after_vectorizer, vect_do_peeling_for_loop_bound,
903         vect_transform_loop): Ditto.
904         * cfgloop.c (mark_single_exit_loops, verify_loop_structure): Ditto.
905         (single_exit, set_single_exit): New functions.
906         * cfgloop.h (struct loop): Rename single_exit field to single_exit_.
907         (single_exit, set_single_exit): Declare.
908         * doc/loop.texi: Undocument single_exit field.  Document single_exit
909         accessor function.
910
911 2006-11-22  Zdenek Dvorak <dvorakz@suse.cz>
912
913         PR tree-optimization/29902
914         * tree-ssa-loop-manip.c (can_unroll_loop_p): Return false if
915         any involved ssa name appears in abnormal phi node.
916
917 2006-11-21  Bob Wilson  <bob.wilson@acm.org>
918
919         * config/xtensa/xtensa.c (xtensa_char_to_class): Delete.
920         (xtensa_const_ok_for_letter_p): Delete.
921         (xtensa_extra_constraint): Delete.
922         (override_options): Delete xtensa_char_to_class initialization.
923         * config/xtensa/xtensa.h (REG_CLASS_FROM_LETTER): Delete.
924         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
925         (EXTRA_CONSTRAINT): Delete.
926         * config/xtensa/xtensa.md: Include constraints.md.
927         (call_internal): Combine alternatives.
928         (call_value_internal): Likewise, and remove invalid constraints.
929         * config/xtensa/constraints.md: New file.
930         * config/xtensa/xtensa-protos.h (xtensa_const_ok_for_letter_p): Delete.
931         (xtensa_extra_constraint): Delete.
932         * doc/md.texi (Machine Constraints): Refer to constraints.md for
933         Xtensa constraints.
934
935 2006-11-21  Janis Johnson  <janis187@us.ibm.com>
936
937         * config/dfp-bits.c (DFP_TO_INT): Remove code to saturate result
938         of conversion that doesn't fit.
939
940         * config/dfp-bit.h (CONTEXT_TRAPS, CONTEXT_ERRORS, DFP_RAISE): Delete.
941         * config/dfp-bit.c (dfp_unary_op, dfp_binary_op, dfp_compare_op,
942         DFP_TO_DFP, INT_TO_DFP, BFP_TO_DFP): Remove calls to DFP_RAISE.
943
944         * config/dfp-bit.c (dfp_binary_func): Fix typedef.
945
946 2006-11-21  Douglas Gregor <doug.gregor@gmail.com>
947
948         * c-common.h (enum rid): Add RID_STATIC_ASSERT.
949
950 2006-11-21  Richard Guenther  <rguenther@suse.de>
951
952         * tree-vectorizer.h (NUM_PATTERNS): Increase.
953         * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
954         vect_recog_pow_pattern.
955         (vect_recog_pow_pattern): New function.
956
957 2006-11-21  Bernd Schmidt  <bernd.schmidt@analog.com>
958
959         * config/bfin/bfin.opt (mstack-check-l1): New.
960         * doc/invoke.texi (Blackfin Options): Document it.
961         * config/bfin/bfin.c (bfin_expand_prologue): Generate code to use
962         stack bounds in L1 memory if the new option is enabled.
963         (override_options): Don't allow combinations of -fstack-limit and
964         -mstack-check-l1.
965         (add_to_reg): Renamed from add_to_sp.  All callers changed.  Lose some
966         dead code.
967
968         * config/bfin/bfin.c (hard_regno_mode_ok): Only allow first 31
969         regs for DImode.
970         (bfin_register_move_cost): Bump costs if trying to move plain
971         integer values through accumulators.
972
973 2006-11-21  Ben Elliston  <bje@au.ibm.com>
974
975         * config/spu/spu.c (spu_expand_vector_init): Initialise x.
976
977 2006-11-20  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
978             Russell Olsen <Russell_Olsen@playstation.sony.com>
979             Dmitri Makarov <Dmitri_Makarov@playstation.sony.com>
980             Yukishige Shibata <shibata@rd.scei.sony.co.jp>
981             Nobuhisa Fujinami <fnami@rd.scei.sony.co.jp>
982             Takeaki Fukuoka <fukuoka@rd.scei.sony.co.jp>
983             Andrew Pinski <Andrew_Pinski@playstation.sony.com>
984
985         * config.gcc: Add target for SPU.
986         * config/spu/constraints.md: New file.
987         * config/spu/crt0.c: New file.
988         * config/spu/crtend.c: New file.
989         * config/spu/crti.asm: New file.
990         * config/spu/crtn.asm: New file.
991         * config/spu/float_unsdidf.c: New file.
992         * config/spu/float_unssidf.c: New file.
993         * config/spu/predicates.md: New file.
994         * config/spu/spu-builtins.def: New file.
995         * config/spu/spu-builtins.h: New file.
996         * config/spu/spu-builtins.md: New file.
997         * config/spu/spu-c.c: New file.
998         * config/spu/spu-elf.h: New file.
999         * config/spu/spu-modes.def: New file.
1000         * config/spu/spu-protos.h: New file.
1001         * config/spu/spu.c: New file.
1002         * config/spu/spu.h: New file.
1003         * config/spu/spu.md: New file.
1004         * config/spu/spu.opt: New file.
1005         * config/spu/spu_internals.h: New file.
1006         * config/spu/spu_intrinsics.h: New file.
1007         * config/spu/spu_mfcio.h: New file.
1008         * config/spu/t-spu-elf: New file.
1009         * config/spu/vec_types.h: New file.
1010         * config/spu/vmx2spu.h: New file.
1011         * doc/contrib.texi: Document SPU contributor.
1012         * doc/extend.texi: Document SPU extensions.
1013         * doc/invoke.texi: Document SPU options.
1014         * doc/md.texi: Document SPU constraints.
1015
1016 2006-11-21  Zdenek Dvorak <dvorakz@suse.cz>
1017
1018         * cfgloopmanip.c (add_loop, duplicate_loop): Do not set level
1019         of the loop.
1020         * cfgloop.c (flow_loop_level_compute, flow_loops_level_compute):
1021         Removed.
1022         (flow_loop_dump): Do not dump loop level.
1023         (flow_loops_find): Do not call flow_loops_level_compute.
1024         * cfgloop.h (struct loop): Remove level field.
1025
1026 2006-11-21  Zdenek Dvorak <dvorakz@suse.cz>
1027
1028         * tree-ssa-loop-im.c (schedule_sm, determine_lsm_ref,
1029         hoist_memory_references, loop_suitable_for_sm, determine_lsm_loop):
1030         Use vector of edges instead of array.
1031         * tree-ssa-loop-niter.c (find_loop_niter, find_loop_niter_by_eval,
1032         estimate_numbers_of_iterations_loop): Ditto.
1033         * predict.c (predict_loops): Ditto.
1034         * loop-unroll.c (analyze_insns_in_loop): Ditto.
1035         * tree-ssa-threadupdate.c: Remove declaration of heap allocation for
1036         edge vectors.
1037         * basic-block.h: Declare heap allocation for edge vectors.
1038         * tree-outof-ssa.c: Ditto.
1039         * cfgloop.c (get_loop_exit_edges): Return vector of edges.
1040         * cfgloop.h (get_loop_exit_edges): Declaration changed.
1041
1042 2006-11-20  Zack Weinberg  <zackw@panix.com>
1043
1044         * gengtype.c (process_gc_options): Remove unnecessary forward decl.
1045         Add another out parameter, "skip".
1046         (set_gc_used_type): Adjust calls to process_gc_options.  If a field
1047         is tagged "skip", do not mark its type used.
1048
1049 2006-11-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1050
1051         PR tree-opt/25500
1052         * tree-sra.c (single_scalar_field_in_record_p): New function.
1053         (decide_block_copy): Use it.
1054
1055 2006-11-20  David Daney  <ddaney@avtrex.com>
1056
1057         * config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
1058         PC to point to following instruction.
1059
1060 2006-11-20  Anatoly Sokolov <aesok@post.ru>
1061
1062         PR target/18553
1063         PR target/29449
1064         * config/avr/avr.h (OBJECT_FORMAT_ELF): Define.
1065
1066         * config/avr/avr.h (DWARF2_DEBUGGING_INFO): Define.
1067
1068 2006-11-20  J"orn Rennecke  <joern.rennecke@st.com>
1069
1070         * config.gcc (sh*-superh-elf): Add t-superh to tmake_file.
1071         Add sh/superh.h to tm_file.
1072
1073 2006-11-20  Carlos O'Donell  <carlos@codesourcery.com>
1074             Mark Mitchell  <mark@codesourcery.com>
1075
1076         * cppdefault.c: Define cpp_PREFIX, cpp_PREFIX_len, and 
1077         gcc_exec_prefix.
1078         (cpp_relocated): New function.
1079         * cppdefault.h: Declare cpp_PREFIX, cpp_PREFIX_len, gcc_exec_prefix 
1080         and cpp_relocated. 
1081         * Makefile.in (PREPROCESSOR_DEFINES): Add -DPREFIX option.
1082         * c-incpath.c (add_standard_paths): Call cpp_relocated. If relocated,
1083         replace configured prefix with gcc_exec_prefix. 
1084
1085 2006-11-20  Bernd Schmidt  <bernd.schmidt@analog.com>
1086
1087         * config/bfin/bfin.h (LEGITIMATE_CONSTANT_P): Call
1088         bfin_legitimate_constant_p.
1089         * config/bfin/bfin.md (movsi expander): Check return value of
1090         expand_mvoe.
1091         * config/bfin/bfin-protos.h (bfin_legitimate_constant_p): Declare.
1092         (expand_move): Adjust prototype.
1093         * config/bfin/bfin.c (expand_move): Now returns bool.  Handle
1094         invalid constants specially.
1095         (bfin_cannot_force_const_mem, bfin_legitimate_constant_p): New
1096         functions.
1097         (TARGET_CANNOT_FORCE_CONST_MEM): New macro.
1098
1099         * config/bfin/bfin.md (call_symbol, call_value_symbol, sibcall_symbol,
1100         sibcall_value_symbol): Allow these patterns if
1101         TARGET_LEAF_ID_SHARED_LIBRARY.
1102         * config/bfin/bfin.c (bfin_expand_call): Allow them here as well.
1103         (override_options): Turn on id shared library flags if -msep-data,
1104         but disallow the combination of these options on the command line.
1105         * config/bfin/bfin.h (TARGET_LEAF_ID_SHARED_LIBRARY, MASK_SEP_DATA
1106         MASK_LEAF_ID_SHARED_LIBRARY, TARGET_SEP_DATA): New macros.
1107         (DRIVER_SELF_SPECS): -mleaf-id-shared-library implies
1108         -mid-shared-library.
1109         (TARGET_SWITCHES): Add -mleaf-id-shared-library and -msep-data.
1110         * doc/invoke.texi (Blackfin Options): Document new switches.
1111
1112         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Handle some
1113         edge cases with local functions and TARGET_ID_SHARED_LIBRARY.
1114
1115         * tree-ssa-loop-ivopts.c (get_address_cost): Do not artificially
1116         inflate costs for addresses with an out-of-bounds address.
1117
1118 2006-11-19  Andrew Pinski  <pinskia@gmail.com>
1119
1120         PR rtl-opt/29879
1121         * fwprop.c (loops): Remove.
1122         (forward_propagate_into): Use current_loops instead of
1123         loops.
1124         (fwprop_init): Call loop_optimizer_init instead of
1125         flow_loops_find.
1126         (fwprop_done): Call loop_optimizer_finalize instead of
1127         flow_loops_free.
1128         (fwprop): Use current_loops instead of loops.
1129
1130 2006-11-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1131
1132         PR c++/8586
1133         * c-opts.c (c_common_handle_option): Enable -Wwrite-strings if -Wall.
1134
1135 2006-11-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1136
1137         PR target/29114
1138         * pa.c (emit_move_sequence): Don't split constants with PLUS for modes
1139         larger than BITS_PER_WORD.
1140
1141 2006-11-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1142
1143         PR fortran/27885
1144         PR middle-end/28176
1145         * stor-layout.c (set_sizetype): Limit precision of *bitsizetypes types
1146         to MAX_FIXED_MODE_SIZE.
1147
1148 2006-11-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1149
1150         * builtins.c (integer_valued_real_p): Handle fmin/fmax.
1151         (fold_builtin_fmin_fmax): New.
1152         (fold_builtin_1): Use it.
1153
1154         * fold-const.c (fold_strip_sign_ops): Handle copysign.
1155
1156 2006-11-18  Richard Guenther  <rguenther@suse.de>
1157
1158         * config/i386/i386.c (ix86_builtins): New array for ix86
1159         builtin function decls.
1160         (def_builtin): New function.
1161         (def_builtin_const): Likewise.
1162         (ix86_init_mmx_sse_builtins): Mark sqrt and cvt builtins const.
1163
1164 2006-11-18  Vladimir Makarov  <vmakarov@redhat.com>
1165
1166         * doc/invoke.texi (core2): Add item.
1167
1168         * config/i386/i386.h (TARGET_CORE2, TARGET_CPU_DEFAULT_core2): New
1169         macros.
1170         (TARGET_CPU_CPP_BUILTINS): Add code for core2.
1171         (TARGET_CPU_DEFAULT_generic): Change value.
1172         (TARGET_CPU_DEFAULT_NAMES): Add core2.
1173         (processor_type): Add new constant PROCESSOR_CORE2.
1174
1175         * config/i386/i386.md (cpu): Add core2.
1176
1177         * config/i386/i386.c (core2_cost): New initialized variable.
1178         (m_CORE2): New macro.
1179         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
1180         x86_deep_branch, x86_partial_reg_stall, x86_use_simode_fiop,
1181         x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
1182         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
1183         x86_partial_reg_dependency, x86_memory_mismatch_stall,
1184         x86_accumulate_outgoing_args, x86_prologue_using_move,
1185         x86_epilogue_using_move, x86_arch_always_fancy_math_387,
1186         x86_sse_partial_reg_dependency, x86_rep_movl_optimal,
1187         x86_use_incdec, x86_four_jump_limit, x86_schedule,
1188         x86_pad_returns): Add m_CORE2.
1189         (override_options): Add entries for Core2.
1190         (ix86_issue_rate): Add case for Core2.
1191         
1192 2006-11-18  Aldy Hernandez  <aldyh@redhat.com>
1193
1194         * doc/invoke.texi: Fix mno-isel typo.
1195
1196 2006-11-18  Joseph Myers  <joseph@codesourcery.com>
1197
1198         * config/rs6000/spe.md (movv4hi_internal): Add alternative for
1199         easy vector constant loads.
1200
1201 2006-11-18  Joseph Myers  <joseph@codesourcery.com>
1202
1203         * config/rs6000/rs6000.h (TARGET_NO_LWSYNC): Define.
1204         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
1205         __NO_LWSYNC__ if TARGET_NO_LWSYNC.
1206         * config/rs6000/sync.md (lwsync): Emit plain sync if
1207         TARGET_NO_LWSYNC.
1208
1209 2006-11-17  DJ Delorie  <dj@redhat.com>
1210
1211         * reload1.c (reloads_unique_chain): New.
1212         (reloads_conflict): Call it.
1213
1214 2006-11-17  Bob Wilson  <bob.wilson@acm.org>
1215
1216         * config/xtensa/predicates.md (addsubx_operand): New.
1217         * config/xtensa/xtensa.c (xtensa_emit_branch): New.
1218         (xtensa_emit_bit_branch): New.
1219         (xtensa_emit_movcc): New.
1220         * config/xtensa/xtensa.md (any_minmax): New code macro.
1221         (minmax): New code attribute.
1222         (any_cond, any_scc, any_scc_sf): New code macros.
1223         (*addx2, *addx4, *addx8): Delete.
1224         (*addx): New.
1225         (*subx2, *subx4, *subx8): Delete.
1226         (*subx): New.
1227         (sminsi3, uminsi3, smaxsi3, umaxsi3): Use any_minmax macro.
1228         (beq, bne, bgt, bge, blt, ble, bgtu, bgeu, bltu, bleu): Use any_cond.
1229         (*btrue, *bfalse, *ubtrue, *ubfalse): Use xtensa_emit_branch.
1230         (*bittrue, *bitfalse): Use xtensa_emit_bit_branch.
1231         (seq, sne, sgt, sge, slt, sle): Use any_scc macro.
1232         (movsicc_internal0, movsicc_internal1): Use xtensa_emit_movcc.
1233         (movsfcc_internal0, movsfcc_internal1): Likewise.
1234         (seq_sf, slt_sf, sle_sf): Use any_scc_sf macro.
1235         * config/xtensa/xtensa-protos.h: (xtensa_emit_branch): New.
1236         (xtensa_emit_bit_branch): New.
1237         (xtensa_emit_movcc): New.
1238         (function_arg_boundary): Add missing prototype.
1239
1240 2006-11-17  Bob Wilson  <bob.wilson@acm.org>
1241
1242         * config/xtensa/xtensa.md (tstsi): Delete
1243
1244 2006-11-17  Bob Wilson  <bob.wilson@acm.org>
1245
1246         * config/xtensa/xtensa.md (entry): Do not emit .frame directive.
1247
1248 2006-11-17  Bob Wilson  <bob.wilson@acm.org>
1249
1250         * config/xtensa/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
1251
1252 2006-11-17  Bob Wilson  <bob.wilson@acm.org>
1253
1254         * config/xtensa/lib1funcs.asm (__umulsidi3): Restore a0 on exit.
1255
1256 2006-11-17  Zdenek Dvorak <dvorakz@suse.cz>
1257
1258         * tree-vrp.c (execute_vrp): Do not update current_loops.
1259         * loop-unswitch.c (unswitch_loop): Do not use loop_split_edge_with.
1260         * doc/loop.texi: Remove documentation for cancelled functions.
1261         * tree-ssa-loop-im.c (loop_commit_inserts): Removed.
1262         (move_computations, determine_lsm): Use bsi_commit_edge_inserts
1263         instead.
1264         * cfgloopmanip.c (remove_bbs): Do not update loops explicitly.
1265         (remove_path): Ensure that in delete_basic_blocks, the loops
1266         are still allocated.
1267         (add_loop): Work on valid loop structures.
1268         (loopify): Modify call of add_loop.
1269         (mfb_update_loops): Removed.
1270         (create_preheader): Do not update loops explicitly.
1271         (force_single_succ_latches, loop_version): Do not use
1272         loop_split_edge_with.
1273         (loop_split_edge_with): Removed.
1274         * tree-ssa-loop-manip.c (create_iv, determine_exit_conditions):
1275         Do not use bsi_insert_on_edge_immediate_loop.
1276         (split_loop_exit_edge, tree_unroll_loop): Do not use
1277         loop_split_edge_with.
1278         (bsi_insert_on_edge_immediate_loop): Removed.
1279         * tree-ssa-loop-ch.c (copy_loop_headers): Use current_loops.  Do not
1280         use loop_split_edge_with.
1281         * cfghooks.c: Include cfgloop.h.
1282         (verify_flow_info): Verify that loop_father is filled iff current_loops
1283         are available.
1284         (redirect_edge_and_branch_force, split_block, delete_basic_block,
1285         split_edge, merge_blocks, make_forwarder_block, duplicate_block):
1286         Update cfg.
1287         * cfgloopanal.c (mark_irreducible_loops): Work if the function contains
1288         no loops.
1289         * modulo-sched.c (generate_prolog_epilog, canon_loop): Do not use
1290         loop_split_edge_with.
1291         (sms_schedule): Use current_loops.
1292         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Use current_loops.
1293         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Set
1294         current_loops.
1295         (rtl_loop_init, rtl_loop_done): Do not set current_loops.
1296         * tree-ssa-sink.c (execute_sink_code): Use current_loops.
1297         * ifcvt.c (if_convert): Ditto.
1298         * predict.c (predict_loops): Do not clear current_loops.
1299         (tree_estimate_probability): Use current_loops.
1300         (propagate_freq): Receive head of the region to propagate instead of
1301         loop.
1302         (estimate_loops_at_level): Do not use shared to_visit bitmap.
1303         (estimate_loops): New function.  Handle case current_loops == NULL.
1304         (estimate_bb_frequencies): Do not allocate tovisit.  Use
1305         estimate_loops.
1306         * tree-ssa-loop.c (current_loops): Removed.
1307         (tree_loop_optimizer_init): Do not return loops.
1308         (tree_ssa_loop_init, tree_ssa_loop_done): Do not set current_loops.
1309         * tree-vectorizer.c (slpeel_update_phi_nodes_for_guard1,
1310         slpeel_update_phi_nodes_for_guard2, slpeel_tree_peel_loop_to_edge):
1311         Do not update loops explicitly.
1312         * function.h (struct function): Add x_current_loops field.
1313         (current_loops): New macro.
1314         * tree-if-conv.c (combine_blocks): Do not update loops explicitly.
1315         * loop-unroll.c (split_edge_and_insert): New function.
1316         (unroll_loop_runtime_iterations, analyze_insns_in_loop): Do not
1317         use loop_split_edge_with.
1318         * loop-doloop.c (add_test, doloop_modify): Ditto.
1319         * tree-ssa-pre.c (init_pre, fini_pre): Do not set current_loops.
1320         * cfglayout.c (copy_bbs): Do not update loops explicitly.
1321         * lambda-code.c (perfect_nestify): Do not use loop_split_edge_with.
1322         * tree-vect-transform.c (vect_transform_loop): Do not update loops
1323         explicitly.
1324         * cfgloop.c (flow_loops_cfg_dump): Do not dump dfs_order and rc_order.
1325         (flow_loops_free): Do not free dfs_order and rc_order.
1326         (flow_loops_find): Do not set dfs_order and rc_order in loops
1327         structure.  Do not call loops and flow info verification.
1328         (add_bb_to_loop, remove_bb_from_loops): Check whether the block
1329         already belongs to some loop.
1330         * cfgloop.h (struct loops): Remove struct cfg.
1331         (current_loops, loop_split_edge_with): Declaration removed.
1332         (loop_optimizer_init, loop_optimizer_finalize): Declaration changed.
1333         * tree-flow.h (loop_commit_inserts, bsi_insert_on_edge_immediate_loop):
1334         Declaration removed.
1335         * Makefile.in (cfghooks.o): Add CFGLOOP_H dependency.
1336         * basic-block.h (split_edge_and_insert): Declare.
1337         * tree-cfg.c (remove_bb): Do not update loops explicitly.
1338
1339 2006-11-17  Zdenek Dvorak <dvorakz@suse.cz>
1340
1341         PR tree-optimization/29801
1342         * tree-ssa-ccp.c (get_symbol_constant_value): New function.
1343         (get_default_value): Use get_symbol_constant_value.
1344         (set_lattice_value): ICE when the value of the constant is
1345         changed.
1346         (visit_assignment): Ignore VDEFs of read-only variables.
1347
1348 2006-11-17  Zdenek Dvorak <dvorakz@suse.cz>
1349
1350         * tree-vect-transform.c (vect_create_epilog_for_reduction): Fix
1351         formating.
1352         (vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
1353         vect_gen_niters_for_prolog_loop): Fold the emited expressions.
1354
1355 2006-11-17  Zdenek Dvorak <dvorakz@suse.cz>
1356
1357         * tree-ssa-alias.c (new_type_alias): Do not use offset of expr to
1358         select subvars of var.
1359
1360 2006-11-17  Jakub Jelinek  <jakub@redhat.com>
1361
1362         PR middle-end/29584
1363         * tree-ssa-forwprop.c (simplify_switch_expr): Don't
1364         optimize if DEF doesn't have integral type.
1365
1366 2006-11-16  Mike Stump  <mrs@apple.com>
1367
1368         * config/darwin.h (LINK_COMMAND_SPEC): Don't do dwarf stuff on
1369         pre-darwin9 system, unless the user asks for it directly.
1370         (PREFERRED_DEBUGGING_TYPE): Likewise.
1371         * config/i386/darwin.h (PREFERRED_DEBUGGING_TYPE): Likewise.
1372         * config.gcc: Add suppport for darwin9.h.
1373         * config/darwin9.h: Add.
1374         * doc/install.texi (Specific): Clarify darwin documentation.
1375         
1376 2006-11-16  Richard Earnshaw  <rearnsha@arm.com>
1377
1378         * arm.h (CONSTANT_ALIGNMENT): Don't over-align strings when
1379         optimizing for size.
1380
1381 2006-11-16  Mike Stump  <mrs@apple.com>
1382
1383         * Makefile.in (targhooks.o): Add $(OPTABS_H).
1384
1385 2006-11-16  Dirk Mueller  <dmueller@suse.de>
1386
1387         * tree-vrp.c (get_value_range): Use XCNEW instead
1388         of XNEW and memset.
1389         (insert_range_assertions): Use XCNEWVEC instead
1390         of XNEWVEC and memset.
1391         (vrp_initialize): Same.
1392         (vrp_finalize): Same.
1393         * tree-ssa-ccp.c (ccp_initialize): Same.
1394         * predict.c (tree_bb_level_predictions): Same.
1395         * calls.c (expand_call): Same.
1396         * tree-ssa-copy.c (init_copy_prop): Same.
1397         (fini_copy_prop): Same.
1398         * tree-ssa-alias.c (get_ptr_info): Use GGC_CNEW instead
1399         of GGC_NEW and memset.
1400
1401 2006-11-16  Eric Botcazou  <ebotcazou@adacore.com>
1402
1403         PR middle-end/26306
1404         * gimplify.c (gimplify_expr): Only force a load for references to
1405         non-BLKmode volatile values.
1406         * doc/implement-c.texi (Qualifiers implementation): Document the
1407         interpretation of what a volatile access is.
1408         * doc/extend.texi (C++ Extensions): Rework same documentation.
1409
1410 2006-11-16  Joseph Myers  <joseph@codesourcery.com>
1411
1412         * config/rs6000/spe.md (frob_di_df_2): Handle non-offsettable
1413         memory operand.
1414
1415 2006-11-16  Richard Earnshaw  <rearnsha@arm.com>
1416
1417         * arm.md (abssi2): Allow Thumb as well.  Use an SImode scratch for
1418         Thumb.
1419         (arm_neg_abssi2): Renamed from neg_abssi2.
1420         (thumb_abssi2, thumb_neg_abssi2): New patterns with splitters.
1421
1422 2006-11-16  Uros Bizjak  <ubizjak@gmail.com>
1423
1424         * config/i386/i386.c (ix86_function_sseregparm): Fix comment:
1425         number of arguments passed to local functions in SSE registers is 3.
1426
1427         * doc/invoke.texi (Function Attributes) [sseregparm]: Correct
1428         number of arguments passed in SSE registers to 3.
1429
1430 2006-11-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1431
1432         PR target/29201
1433         * cfgrtl.c (rtl_delete_block): Move the code for getting last insn of
1434         bb to ...
1435         (get_last_bb_insn): ... new global function.
1436         (basic_block.h): Declare it.
1437         * haifa-sched.c (create_recovery_block): Use it.
1438
1439 2006-11-15  H.J. Lu  <hongjiu.lu@intel.com>
1440
1441         PR middle-end/29862
1442         * real.c (mpfr_from_real): Call mpfr_set_str before gcc_assert.
1443
1444 2006-11-15  Paul Brook  <paul@codesourcery.com>
1445
1446         * config/arm/unwind-arm.c (_Unwind_GetDataRelBase,
1447         _Unwind_GetTextRelBase): Move from here ...
1448         * config/arm/pr-support.c (_Unwind_GetDataRelBase,
1449         _Unwind_GetTextRelBase): ... To here.
1450
1451 2006-11-15  Bernd Schmidt  <bernd.schmidt@analog.com>
1452
1453         * tree-ssa-loop-ivopts.c (get_address_cost): Make sure memory
1454         addresses we generate for testing are aligned.
1455
1456 2006-11-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1457
1458         PR tree-opt/29788
1459         * fold-const.c (fold_indirect_ref_1): Fold *&CONST_DECL down
1460         to what is the const decl is a place holder for.
1461
1462 2006-11-15  Uros Bizjak  <ubizjak@gmail.com>
1463
1464         * config/i386/i386.opt: New target option -mx87regparm.
1465
1466         * config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno
1467         and float_in_x87 variables. mmx_words, sse_words: Remove.
1468         (X87_REGPARM_MAX): Define.
1469
1470         * config/i386/i386.c (override_options): Error out for
1471         -mx87regparm but no 80387 support.
1472         (ix86_attribute_table): Add x87regparm.
1473         (ix86_handle_cconv_attribute): Update comments for x87regparm.
1474         (ix86_comp_type_attributes): Check for mismatched x87regparm types.
1475         (ix86_function_x87regparm): New function.
1476         (ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating
1477         point registers.
1478         (init_cumulative_args): Initialize x87_nregs and float_in_x87
1479         variables.
1480         (function_arg_advance): Process x87_nregs and x87_regno when
1481         floating point argument is to be passed in 80387 register.
1482         (function_arg): Pass XFmode arguments in 80387 registers for local
1483         functions.  Pass SFmode and DFmode arguments to local functions
1484         in 80387 registers when flag_unsafe_math_optimizations is set.
1485
1486         * reg-stack.c (convert_regs_entry): Disable NaN load for
1487         stack registers that are used for argument passing.
1488
1489         * doc/extend.texi: Document x87regparm function attribute.
1490         * doc/invoke.texi: Document -mx87regparm.
1491
1492 2006-11-15  Bernd Schmidt  <bernd.schmidt@analog.com>
1493
1494         * tree-flow.h (multiplier_allowed_in_address_p): Adjust prototype.
1495         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): New
1496         arg MODE; all callers changed.  Use it to determine validity per
1497         machine mode instead of using Pmode for all memory references.
1498         (get_address_cost): Likewise add and use new arg MEM_MODE.
1499
1500 2006-11-15  Rask Ingemann Lambertsen <rask@sygehus.dk>
1501             J"orn Rennecke <joern.rennecke@st.com>
1502
1503         * combine.c (likely_spilled_retval_1): Fix masking operation.
1504         (likely_spilled_retval_p): Use proper pattern for call to
1505         likely_spilled_retval_1.
1506
1507 2006-11-15  Bernd Schmidt  <bernd.schmidt@analog.com>
1508
1509         * tree-ssa-loop-ivopts.c (determine_iv_costs): Fix formatting.
1510
1511         * config/bfin/bfin.c (legitimize_pic_address): Lose dead code
1512         that tests for CONSTANT_POOL_ADDRESS_P.
1513
1514 2006-11-15  Jakub Jelinek  <jakub@redhat.com>
1515
1516         PR tree-optimization/29581
1517         * lambda-code.c (replace_uses_equiv_to_x_with_y): Add YINIT,
1518         REPLACEMENTS, FIRSTBSI arguments.  If initial condition or
1519         type is different between Y and USE, create a temporary
1520         variable, initialize it at the beginning of the body bb
1521         and use it as replacement instead of Y.
1522
1523 2006-11-15  Paolo Bonzini  <bonzini@gnu.org>
1524
1525         PR middle-end/29753
1526         * gimplify.c (fold_indirect_ref_rhs): Use
1527         STRIP_USELESS_TYPE_CONVERSION rather than STRIP_NOPS.
1528
1529 2006-11-14  Richard Earnshaw  <rearnsha@arm.com>
1530
1531         * expmed.c (emit_store_flag_1): New function.
1532         (emit_store_flag): Call it.  If we can't find a suitable scc insn,
1533         try a cstore insn.
1534         * expr.c (do_store_flag): If we can't find a scc insn, try cstore.
1535         Use do_compare_rtx_and_jump.
1536         * arm.h (BRANCH_COST): Increase to 2 on Thumb.
1537         * arm.md (cstoresi4): New define_expand.
1538         (cstoresi_eq0_thumb, cstoresi_ne0_thumb): Likewise.
1539         (cstoresi_eq0_thumb_insn, cstore_ne0_thumb_insn): New patterns.
1540         (cstoresi_nltu_thumb, thumb_addsi3_addgeu): New patterns.
1541
1542 2006-11-14  Caroline Tice  <ctice@apple.com>
1543                 
1544         * dwarf2out.c (debug_pubtypes_section): New static global variable.
1545         (pubname_entry):  Add DEF_VEC_O and DEF_VEC_ALLOC_O statements for
1546         this type.
1547         (pubname_table):  Redefine as a vector.
1548         (pubtype_table):  New static global variable, defined as a vector.
1549         (pubname_table_allocated): Remove static global variable.
1550         (pubname_table_in_use): Remove static global variable.
1551         (PUBNAME_TABLE_INCREMENT): Remove constant.
1552         (size_of_pubnames): Add parameter to deal with either pubnames or 
1553         pubtypes, and change code to deal with table being a vector.
1554         (add_pubname):  Change to deal with table being a vector.
1555         (add_pubtype):  New function.
1556         (output_pubnames): Add parameter to deal with either pubnames or 
1557         pubtypes, and change code to deal with table being a vector.
1558         (gen_array_type_die):  Add call to add_pubtype.
1559         (gen_enumeration_type_die): Add call to add_pubtype.
1560         (gen_struct_or_union_type_die): Add call to add_pubtype.
1561         (gen_subroutine_type_die): Add call to add_pubtype.
1562         (gen_typedef_die):  Add call to add_pubtype.
1563         (dwarf2out_init): Add code to initialize pubname_table and 
1564         pubtype_table vectors; also initialize debug_pubtypes_section.
1565         (prune_unused_types):  Change to deal with pubnames being a vector.
1566         (dwarf2out_finish): Change to deal with pubnames being a vector; add 
1567         pubnames table to call to output_pubnames;  Add code to output pubtypes 
1568         table if DEBUG_PUBTYPES_SECTION is defined.
1569         * config/darwin.c (darwin_file_start):  Add DEBUG_PUBTYPES_SECTION to 
1570         debugnames.
1571         * config/darwin.h (DEBUG_PUBTYPES_SECTION): Define new global variable.
1572
1573 2006-11-14  Joseph Myers  <joseph@codesourcery.com>
1574
1575         * config/arm/arm.h (FUNCTION_ARG_ADVANCE): Only adjust
1576         iwmmxt_nregs if TARGET_IWMMXT_ABI.
1577         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
1578         movv2si_internal): Support moves between core registers.
1579
1580 2006-11-14  Eric Christopher  <echristo@apple.com>
1581
1582         * configure: Regenerate with autoconf 2.59.
1583
1584 2006-11-14  Daniel Berlin  <dberlin@dberlin.org>
1585
1586         Fix PR tree-optimization/27755
1587
1588         * tree-ssa-pre.c: Update comments.
1589         (bb_bitmap_sets): Add pa_in and  deferred member.
1590         (BB_DEFERRED): New macro.
1591         (maximal_set): New variable.
1592         (pre_stats): Add pa_insert member.
1593         (bitmap_set_and): Short circuit orig == dest.
1594         (bitmap_set_subtract_values): New function.
1595         (bitmap_set_contains_expr): Ditto.
1596         (translate_vuses_through_block): Add phiblock argument.
1597         (dependent_clean): New function.
1598         (compute_antic_aux): Update for maximal_set changes.
1599         (compute_partial_antic_aux): New function.
1600         (compute_antic): Handle partial anticipation.
1601         (do_partial_partial_insertion): New function.
1602         (insert_aux): Handle partial anticipation.
1603         (add_to_sets): Add to maximal set.
1604         (compute_avail): Ditto.
1605         (init_pre): Initialize maximal_set.
1606         (execute_pre): Do partial anticipation if -O3+.
1607
1608 2006-11-14  Paolo Bonzini  <bonzini@gnu.org>
1609
1610         PR rtl-optimization/29798
1611
1612         * fwprop.c (use_killed_between): Check that DEF_INSN dominates
1613         TARGET_INSN before any other check.
1614         (fwprop_init): Always calculate dominators.
1615         (fwprop_done): Always free them.
1616
1617 2006-11-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1618
1619         * fold-const.c (fold_strip_sign_ops): Handle COMPOUND_EXPR and
1620         COND_EXPR.
1621
1622 2006-11-13  DJ Delorie  <dj@redhat.com>
1623
1624         * config/m32c/m32c.c (m32c_prepare_shift): Use a separate
1625         temporary for intermediates.
1626
1627 2006-11-13  Kaz Kojima  <kkojima@gcc.gnu.org>
1628
1629         * config/sh/sh.c (expand_cbranchdi4): Initialize skip_label.
1630         (sh_optimize_target_register_callee_saved): #if 0 the code
1631         using NOTE_INSN_LOOP_{BEG,END}.
1632
1633 2006-11-13  Roger Sayle  <roger@eyesopen.com>
1634
1635         * fold-const.c (optimize_bit_field_compare): Recursively call
1636         fold when simplifying non-constant comparisons between bit-fields.
1637
1638 2006-11-13  Jakub Jelinek  <jakub@redhat.com>
1639
1640         * configure.ac: Add changequote around __LONG_DOUBLE_MATH_OPTIONAL
1641         test.
1642         * configure: Rebuilt.
1643
1644 2006-11-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1645
1646         * config/rs6000/cell.md: New file.
1647         * config/rs6000/rs6000.c (rs6000_cell_dont_microcode): New
1648         variable.
1649         (ppccell_cost): New cost matrix.
1650         (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define.
1651         (rs6000_override_options): Set rs6000_always_hint to false
1652         for cell. Also align functions/lables/loops to 8byte
1653         for the Cell. Use PROCESSOR_CELL.
1654         (rs6000_emit_epilogue): Rename using_mfcr_multiple to
1655         using_mtcr_multiple.
1656         (rs6000_variable_issue): If the insn is a nonpipelined instruction
1657         on the Cell, return 0.
1658         (rs6000_adjust_cost): Add Cell cost adjustments.
1659         (is_microcoded_insn): Return true for Cell microcoded
1660         instructions.
1661         (is_nonpipeline_insn): New function.
1662         (rs6000_issue_rate): Add PROCESSOR_CELL.
1663         (rs6000_use_sched_lookahead): If Cell, then we should look ahead 8
1664         instructions.
1665         (rs6000_use_sched_lookahead_guard): New function.
1666         (rs6000_sched_reorder):  Reorder the ready list, if the second
1667         to last ready insn is a nonepipeline insn on the Cell.
1668         * config/rs6000/rs6000.h (processor_type): Add PROCESSOR_CELL.
1669         (ASM_CPU_SPEC): Add Cell.
1670         * config/rs6000/rs6000.md (cpu): Add Cell.
1671         (cell_micro): New Attr.
1672         Include cell.md
1673
1674 2006-11-13  Jakub Jelinek  <jakub@redhat.com>
1675
1676         * configure.ac (ld_vers): Parse GNU ld version 2.17.50.0.3-6 20060715
1677         style versions.
1678         * configure: Rebuilt.
1679
1680 2006-11-13  Richard Guenther  <rguenther@suse.de>
1681
1682         * config/i386/i386.c (ix86_expand_lround): Handle expand_simple_binop
1683         return value.
1684         (ix86_expand_lfloorceil): Likewise.
1685         (ix86_expand_rint): Likewise.
1686         (ix86_expand_floorceildf_32): Likewise.
1687         (ix86_expand_floorceil): Likewise.
1688         (ix86_expand_rounddf_32): Likewise.
1689         (ix86_expand_truncdf_32): Likewise.
1690         (ix86_expand_round): Likewise.
1691
1692 2006-11-13  Carlos O'Donell  <carlos@codesourcery.com>
1693             Mark Mitchell  <mark@codesourcery.com>
1694
1695         * gcc.c: Organize search path variables into $prefix relative,
1696         and well-known native. Add comments.
1697         (add_sysrooted_prefix): Add comment.
1698         (process_command): If !gcc_exec_prefix add $prefix based paths.
1699         If *cross_compile == '0', add native well-known paths.
1700         Assert tooldir_base_prefix is always relative.
1701         (main): If print_search_dirs, and if gcc_exec_prefix is set,
1702         use this value for 'install:' path.
1703         * Makefile.in: Add GCC_EXEC_PREFIX to generated site.exp.
1704
1705 2006-11-13  H.J. Lu  <hongjiu.lu@intel.com>
1706
1707         * config/i386/i386.c: Fix a typo in comment.
1708
1709 2006-11-13  Michael Matz  <matz@suse.de>
1710
1711         * genemit.c (gen_expand): Allocate enough memory.
1712
1713 2006-11-13  Joseph Myers  <joseph@codesourcery.com>
1714
1715         * config/arm/bpapi.h (TARGET_BPABI_CPP_BUILTINS): Define
1716         __GXX_TYPEINFO_EQUALITY_INLINE but not
1717         __GXX_MERGED_TYPEINFO_NAMES.
1718         * config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Define
1719         __GXX_MERGED_TYPEINFO_NAMES.
1720         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define
1721         __GXX_TYPEINFO_EQUALITY_INLINE.
1722
1723 2006-11-13  H.J. Lu  <hongjiu.lu@intel.com>
1724             Zdenek Dvorak <dvorakz@suse.cz>
1725
1726         PR tree-optimization/29680
1727         * tree-ssa-operands.c (access_can_touch_variable): Revert fix for
1728         PR 14784.
1729
1730 2006-11-12  Jason Merrill  <jason@redhat.com>
1731             Andrew Pinski <pinskia@physics.uc.edu>
1732
1733         PR middle-end/28915
1734         * gimplify.c (gimplify_init_constructor): Don't reduce TREE_CONSTANT
1735         vector ctors.
1736         * tree-cfg.c (verify_expr): Don't look into TREE_CONSTANT
1737         vector ctors.
1738         * expmed.c (make_tree): Handle CONST, SYMBOL_REF.
1739         * tree.c (build_vector): Handle non-_CST elements.
1740
1741 2006-11-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1742
1743         * genemit.c (gen_insn): Call gen_exp with a non-null used
1744         when handling multiple insns.
1745         (gen_expand): Likewise.
1746         * reorg.c (emit_delay_sequence): Copy the delay slot insn.
1747         * config/sh/sh.md (ashrsi2_31+1): Copy operands[0].
1748         (movsi_const_16bit+1): Copy operands[1].
1749         (call_pcrel): Copy the call_site pattern.
1750         (call_value_pcrel, sibcall_pcrel, GOTaddr2picreg): Likewise.
1751
1752 2006-11-12  Roger Sayle  <roger@eyesopen.com>
1753
1754         * fold-const.c (negate_expr_p) <PLUS_EXPR, MINUS_EXPR>: Correct/refine
1755         condition for transformations.  Use !HONOR_SIGN_DEPENDENT_ROUNDING
1756         && !HONOR_SIGNED_ZEROS instead of flag_unsafe_math_optimizations.
1757         (fold_negate_expr) <PLUS_EXPR, MINUS_EXPR>: Likewise.
1758
1759 2006-11-12  Daniel Berlin  <dberlin@dberlin.org>
1760
1761         Fix PR tree-optimization/29587
1762         * tree-ssa-structalias.c (process_constraint): Don't
1763         mark address taken due only to escaped vars constraint.
1764
1765 2006-11-12  Michael Matz  <matz@suse.de>
1766             Roger Sayle  <roger@eyesopen.com>
1767
1768         PR rtl-optimization/29797
1769         * ifcvt.c (noce_try_bitop): Correct calculation of bitnum on
1770         BITS_BIG_ENDIAN targets.
1771
1772 2006-11-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1773
1774         * builtins.c (fold_builtin_cosh): New.
1775         (fold_builtin_1): Use it.
1776         * fold-const.c (negate_mathfn_p): Add llround, lround, round,
1777         trunc to the list of "odd" functions.  Also add llrint, lrint,
1778         rint and nearbyint when flag_rounding_math is false.
1779
1780 2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>
1781
1782         * tree-flow.h (name_mappings_registered_p): Declare.
1783         * tree-into-ssa.c (name_mappings_registered_p): New function.
1784         * tree-cfg.c (tree_can_merge_blocks_p): Check
1785         name_mappings_registered_p instead of need_ssa_update_p.
1786
1787 2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>
1788
1789         * tree-ssa-loop.c (tree_vectorize): Return the result of
1790         vectorize_loops.
1791         * tree-vectorizer.c (vectorize_loops): Return TODO_cleanup_cfg
1792         if anything changed.
1793         * tree-vectorizer.h (vectorize_loops): Declaration removed.
1794         * tree-flow.h (vectorize_loops): Declaration changed.
1795
1796 2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>
1797
1798         * tree-ssa-loop-prefetch.c (schedule_prefetches): Cleanup and improve
1799         comments.
1800         (issue_prefetch_ref): Move assignment to write_p out of loop.
1801         (determine_unroll_factor): Do not take PARAM_MAX_UNROLL_TIMES and
1802         SIMULTANEOUS_PREFETCHES into account.
1803         (loop_prefetch_arrays): Do not pass ahead to determine_unroll_factor.
1804         * lambda-code.c (lcm): Renamed to ...
1805         (least_common_multiple): ... and exported.
1806         * tree-flow.h (least_common_multiple): Declare.
1807
1808 2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>
1809
1810         * Makefile.in (tree-data-ref.o): Add langhooks.h dependency.
1811         * tree-ssa-loop-niter.c (derive_constant_upper_bound):  Follow
1812         ud-chains.  Handle AND_EXPR.
1813         (record_estimate): Record whether the estimate is realistic
1814         and whether it is derived from a loop exit.
1815         (record_nonwrapping_iv, idx_infer_loop_bounds, infer_loop_bounds_from_ref,
1816         infer_loop_bounds_from_array, infer_loop_bounds_from_signedness): New
1817         functions.
1818         (compute_estimated_nb_iterations): Take only realistic bounds into
1819         account.  Set estimate_state.  Use double_ints.
1820         (infer_loop_bounds_from_undefined): Call infer_loop_bounds_from_array
1821         and infer_loop_bounds_from_signedness.  Do not consider basic blocks
1822         that do not have to be always executed.
1823         (estimate_numbers_of_iterations_loop): Set estimate_state, and use it
1824         to determine whether to call infer_loop_bounds_from_undefined
1825         and compute_estimated_nb_iterations.
1826         (n_of_executions_at_most): Use double_ints.
1827         (free_numbers_of_iterations_estimates_loop): Set estimate_state.
1828         (substitute_in_loop_info): Do not replace in estimated_nb_iterations.
1829         * double-int.c (double_int_to_tree): Improve comment.
1830         (double_int_fits_to_tree_p): New function.
1831         * double-int.h (double_int_fits_to_tree_p): Declare.
1832         * tree-data-ref.c: Include langhooks.h.
1833         (estimate_niter_from_size_of_data, estimate_iters_using_array): Removed.
1834         (analyze_array_indexes): Do not call estimate_niter_from_size_of_data.
1835         (analyze_array): Do not pass estimate_only argument to
1836         analyze_array_indexes.
1837         (get_number_of_iters_for_loop): Build tree from the stored double_int
1838         value.
1839         (get_references_in_stmt, find_data_references_in_stmt): New functions.
1840         (find_data_references_in_loop): Use find_data_references_in_stmt.
1841         * tree-data-ref.h (struct data_ref_loc_d): New.
1842         (get_references_in_stmt): Declare.
1843         (estimate_iters_using_array): Declaration removed.
1844         * cfgloop.h (struct nb_iter_bound): Change type of bound to
1845         double_int.  Improve comments.  Add is_exit and realistic
1846         fields.
1847         (struct loop): Changed type of estimated_nb_iterations to double_int.
1848         Added estimate_state field.
1849         (record_estimate): Declaration removed.
1850
1851 2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>
1852
1853         * params.c (set_param_value): Initialize the "set" field.
1854         * params.h (struct param_info): Add "set" field.
1855         (PARAM_SET_P): New macro.
1856         (PREFETCH_LATENCY, SIMULTANEOUS_PREFETCHES, L1_CACHE_SIZE,
1857         L1_CACHE_LINE_SIZE): New macros.
1858         * toplev.c (DEFPARAM): Initialize the "set" field.
1859         * tree-ssa-loop-prefetch.c (PREFETCH_LATENCY,
1860         SIMULTANEOUS_PREFETCHES): Removed.
1861         (PREFETCH_BLOCK): Use L1_CACHE_LINE_SIZE.
1862         (tree_ssa_prefetch_arrays): Dump the values of the parameters.
1863         * config/sparc/sparc.c: Include params.h.
1864         (sparc_override_options): Set SIMULTANEOUS_PREFETCHES and
1865         L1_CACHE_LINE_SIZE parameters.
1866         * config/sparc/sparc.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
1867         Removed.
1868         * config/i386/i386.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
1869         Removed.
1870         * config/i386/i386.c: Include params.h.
1871         (k8_cost): Change default value for SIMULTANEOUS_PREFETCHES.
1872         (override_options): Set SIMULTANEOUS_PREFETCHES and
1873         L1_CACHE_LINE_SIZE parameters.
1874         * config/sh/sh.h (SIMULTANEOUS_PREFETCHES): Removed.
1875         (OPTIMIZATION_OPTIONS): Set SIMULTANEOUS_PREFETCHES and
1876         L1_CACHE_LINE_SIZE parameters.
1877         * config/ia64/ia64.c (ia64_optimization_options): Set
1878         SIMULTANEOUS_PREFETCHES and L1_CACHE_LINE_SIZE parameters.
1879         * config/ia64/ia64.h (SIMULTANEOUS_PREFETCHES, PREFETCH_BLOCK):
1880         Removed.
1881         * params.def (PARAM_PREFETCH_LATENCY, PARAM_SIMULTANEOUS_PREFETCHES,
1882         PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE): New params.
1883         * doc/invoke.texi: Document new params.
1884
1885 2006-11-12  Roger Sayle  <roger@eyesopen.com>
1886
1887         PR tree-optimization/13827
1888         * fold-const.c (fold_binary) <EQ_EXPR, NE_EXPR>: Fold (X&C) op (Y&C)
1889         as ((X^Y)&C) op 0.
1890
1891 2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>
1892
1893         * cfgloopmanip.c (update_single_exit_for_duplicated_loop,
1894         update_single_exit_for_duplicated_loops): New functions.
1895         (duplicate_loop_to_header_edge): Use
1896         update_single_exit_for_duplicated_loops.
1897         * tree-ssa-loop-manip.c (tree_unroll_loop): Call verification
1898         functions only with ENABLE_CHECKING.
1899
1900 2006-11-12  Andreas Schwab  <schwab@suse.de>
1901
1902         * except.c (sjlj_emit_function_enter): Remove unused variable.
1903
1904 2006-11-11  Roger Sayle  <roger@eyesopen.com>
1905
1906         * fold-const.c (int_binop_types_match_p): New function.
1907         (size_binop): Relax constraint that both arguments must both have
1908         exactly the same sizetype type.  Instead use int_binop_types_match_p.
1909         (size_diffop): Likewise.
1910
1911         (make_range): Use build_int_cst instead of fold_convert.
1912         (fold_cond_expr_with_comparison): Use build_int_cst to construct
1913         integer constants of the correct type.
1914         (fold_div_compare): Likewise.
1915         (fold_single_bit_test): Likewise.
1916         (fold_binary): Likewise.
1917         * stor-layout.c (layout_type) <VECTOR_TYPE>: Ensure that TYPE_SIZE
1918         has type bitsizetype and TYPE_SIZE_UNIT has type sizetype.
1919
1920 2006-11-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1921
1922         PR rtl-opt/28812
1923         * alias.c (fixed_scalar_and_varying_struct_p): Don't return a
1924         non null value if the struct memory access is in the 0th
1925         aliasing set.
1926
1927 2006-11-12  Jie Zhang  <jie.zhang@analog.com>
1928
1929         Revert
1930         2006-11-11  Jie Zhang  <jie.zhang@analog.com>
1931         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __bfin__
1932         and __BFIN__.
1933
1934         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Use builtin_define_std
1935         instead of builtin_define for bfin and BFIN.
1936
1937 2006-11-11  Jie Zhang  <jie.zhang@analog.com>
1938
1939         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __bfin__
1940         and __BFIN__.
1941
1942 2006-11-11  Jan Hubicka  <jh@suse.cz>
1943
1944         * extend.texi (__builtin_expect): We no longer require second argument
1945         to be constant.
1946         * gengtype.c (adjust_field_rtx_def): Drop NOTE_INSN_EXPECTED_VALUE.
1947         * builtins.c (expand_builtin_expect): Simplify.
1948         (expand_builtin_expect_jump): Kill.
1949         * final.c (final_scan_insn): Do not skip the removed notes.
1950         * insn-notes.def (LOOP_BEG, LOOP_END, REPEATED_LINE_NUMBER,
1951         EXPECTED_VALUE): Remove.
1952         * dojump.c (do_jump): Do not care about __builtin_expect.
1953         * predict.c (expected_value_to_br_prob): Kill.
1954         * function.c (expand_function_end): Do not expand
1955         NOTE_INSN_REPEATED_LINE_NUMBER.
1956         * print-rtl.c (print_rtx): Do not pretty print the removed notes.
1957         * expect.c (sjlj_emit_function_enter): Emit directly branch probability.
1958         * cfgexpand.c (add_reg_br_prob_note): Export.
1959         * cfgcleanup.c (rest_of_handle_jump2): Do not call
1960         expected_value_to_br_prob.
1961         * cfglayout.c (duplicate_insn_chain): Do not deal with removed notes.
1962         * rtl.h (add_reg_br_prob_note): Declare.
1963
1964 2006-11-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1965
1966         * tree-pretty-print.c (dump_generic_node): Print sign of Inf.
1967
1968 2006-11-11  Jan Hubicka  <jh@suse.cz>
1969
1970         * predict.c (predict_loops): Kill RTL variant.
1971
1972 2006-11-11  Jan Hubicka  <jh@suse.cz>
1973
1974         * tree-pass.h (pass_purge_lineno_notes): Remove declaration.
1975         * modulo-sched.c (find_line_note): Remove.
1976         (loop_canon_p): Do not worry about line number notes.
1977         (sms_schedule): Likewise.
1978         * cse.c (cse_main): Likewise.
1979         * regmove.c (fixup_match_1): Likewise
1980         * function.c (emit_return_info_block): Likewise.
1981         (expand_function_end): Likewise.
1982         (thread_prologue_an_epilogue_insns): Likewise.
1983         * cfgrtl.c (try_redirect_by_replacing_jump, rtl_tidy_fallthru_edge):
1984         Likewise.
1985         * emit-rtl.c (find_line_note, emit_insn_after_with_line_notes,
1986         emit_note_copy_after): Kill.
1987         (emit_note_copy): Do not worry about line numbers.
1988         * jump.c (purge_line_number_notes): Kill.
1989         (pass_purge_lineno_notes): Kill.
1990         * cfgcleanup.c (rest_of_handle_jump2): Kill purge_line_number_notes
1991         call.
1992         * rtl.h (emit_note_copy_after, emit_insn_after_with_line_notes): Kill.
1993         * passes.c (init_optimization_passes): Don't purge_lineno_notes.
1994         * sched-ebb.c (schedule_ebbs): Don't do rm_redundant_line_notes.
1995         * tree-pass.h (pass_purge_lineno_notes): Kill.
1996         * sched-ebb.c (schedule_ebb): Don't rm_line_notes,
1997         rm_redundant_line_notes.
1998         * sched-rgb.c (schedule_region): Don't rm_line_notes,
1999         rm_redundant_line_notes.
2000         * sched-int.h (rm_line_notes, rm_redundant_line_notes): Kill.
2001         * haifa-sched.c: Update comment about handling notes.
2002         (unlink_line_notes): Kill.
2003         (rm_line_notes): Kill.
2004         (save_line_notes): Simplify.
2005         (rm_redundant_line_notes): Kill.
2006
2007 2006-11-11  Richard Guenther  <rguenther@suse.de>
2008
2009         * tree.def (FIX_CEIL_EXPR, FIX_FLOOR_EXPR, FIX_ROUND_EXPR):
2010         Remove unused tree codes.
2011         * tree-vrp.c (extract_range_from_unary_expr): Remove handling
2012         of FIX_CEIL_EXPR, FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
2013         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
2014         * tree.c (stabilize_reference): Likewise.
2015         * fold-const.c (fold_convert_const_int_from_real, operand_equal_p,
2016         fold_unary): Likewise.
2017         * tree-gimple.c (is_gimple_cast): Likewise.
2018         * dwarf2out.c (loc_descriptor_from_tree_1): Likewise.
2019         * expr.c (expand_expr_real_1): Likewise.
2020         * tree-eh.c (tree_could_trap_p): Likewise.
2021         * gimplify.c (gimplify_expr): Likewise.
2022         * tree-inline.c (estimate_num_insns_1): Likewise.
2023         * tree-cfg.c (verify_expr): Likewise.
2024
2025 2006-11-11  Zdenek Dvorak <dvorakz@suse.cz>
2026
2027         * tree-ssa-loop.c (pass_loop_prefetch): Change name to aprefetch.
2028         * tree-ssa-loop-prefetch.c (dump_mem_ref): Fix target file.
2029         (tree_ssa_prefetch_arrays): Do not dump for removed loops.
2030
2031 2006-11-11  Richard Sandiford  <richard@codesourcery.com>
2032
2033         PR middle-end/27528
2034         * stmt.c (expand_asm_operands): Use EXPAND_INITIALIZER if the
2035         constraints accept neither registers or memories.
2036
2037 2006-11-11  Jie Zhang  <jie.zhang@analog.com>
2038
2039         * config/bfin/bfin.h (FUNCTION_PROFILER): Don't use LABELNO.
2040         (NO_PROFILE_COUNTERS): Define as 1.
2041
2042 2006-11-10  Roger Sayle  <roger@eyesopen.com>
2043
2044         * fold-const.c (operand_equal_p) <INTEGER_CST, REAL_CST, VECTOR_CST>:
2045         Don't check for TREE_CONSTANT_OVERFLOW when comparing constants.
2046
2047 2006-11-10  Peter Bergner  <bergner@vnet.ibm.com>
2048
2049         * rtl.h (MEM_COPY_ATTRIBUTES): Copy MEM_POINTER.
2050
2051 2006-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2052
2053         * builtins.c (fold_builtin_cos): Use fold_strip_sign_ops().
2054         (fold_builtin_hypot): Likewise.
2055         * fold-const.c (fold_strip_sign_ops): Handle "odd" builtins.
2056
2057         * fold-const.c (negate_mathfn_p): Add BUILT_IN_ERF.
2058
2059 2006-11-10  Roger Sayle  <roger@eyesopen.com>
2060
2061         * tree.c (build_int_cst_wide): Add an assertion (gcc_unreachable)
2062         when attempting to build INTEGER_CSTs of non-integral types.
2063         * expmed.c (make_tree): Use the correct type, i.e. the inner
2064         type, when constructing the individual elements of a CONST_VECTOR.
2065
2066 2006-11-10  Jan Hubicka  <jh@suse.cz>
2067
2068         * cse.c (cse_process_notes): Copy the propagated value.
2069         * local-alloc.c (update_equiv_regs): Copy the memory RTX to be used
2070         in REG_EQUIV notes.
2071         * gcse.c (try_replace_reg): Copy the replacement.
2072         * i386.c (emit_i387_cw_initialization): Copy stored_mode.
2073         (assign_386_stack_local): Always return copied memory expression
2074         * function.c (instantiate_virtual_regs_in_insn): Copy the operand
2075         duplicates.
2076
2077 2006-11-10  Jan Hubicka  <jh@suse.cz>
2078
2079         * final.c (final): Walk from first instruction.
2080         * cfglayout.c (insn_locators_initialize): Remove line number notes.
2081
2082 2006-11-10  Uros Bizjak  <ubizjak@gmail.com>
2083
2084         PR target/29777
2085         * config/i386/sse.md (smulv8hi3_highpart): Change from define_insn
2086         to define_expand.
2087         (umulv8hi3_highpart): Ditto.
2088         (vec_widen_smult_hi_v8hi): New expander.
2089         (vec_widen_smult_lo_v8hi): Ditto.
2090
2091 2006-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2092
2093         PR middle-end/29335
2094         * builtins.c (do_mpfr_arg3): New.
2095         (fold_builtin_1): Handle builtins fma, fmin and fmax.
2096
2097 2006-11-09  Eric Christopher  <echristo@apple.com>
2098
2099         PR bootstrap/26892
2100         PR bootstrap/27814
2101         PR other/28994
2102         * configure.ac: Match powerpc*-*-darwin* for powerpc darwin checks.
2103         * config.gcc (powerpc64-*-darwin*): New target.
2104         * config.host: Ditto.
2105         * config/rs6000/darwin64.h: New file.
2106         * config/rs6000/x-darwin64: Ditto.
2107         * config/rs6000/host-ppc64-darwin.c: Ditto.
2108
2109 2006-11-09  Steve Ellcey  <sje@cup.hp.com>
2110
2111         * config/ia64/ia64.c (ia64_hpux_init_libfuncs):  Use HP-UX millicode
2112         routines for integer division.
2113
2114 2006-11-09  Daniel Jacobowitz  <dan@codesourcery.com>
2115
2116         * config/arm/t-linux (LIBGCC2_DEBUG_CFLAGS): Delete.
2117
2118 2006-11-09  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
2119
2120         PR middle-end/29726
2121         * fold-const.c (fold_binary) <EQ_EXPR>: Fix typo in variable name.
2122
2123 2006-11-09  Andreas Krebbel  <krebbel1@de.ibm.com>
2124
2125         * simplify-rtx.c (avoid_constant_pool_reference): Avoid calling
2126         simplify_subreg with BLKmode outer mode.
2127
2128 2006-11-08  Brooks Moses  <brooks.moses@codesourcery.com>
2129
2130         * doc/invoke.texi: Minor formatting fixes in option lists.
2131
2132 2006-11-08  Zdenek Dvorak <dvorakz@suse.cz>
2133
2134         PR tree-optimization/29738
2135         * tree-ssa-ccp.c: Remove UNKNOWN_VAL from comments.
2136         (ccp_lattice_t): Remove UNKNOWN_VAL.
2137         (dump_lattice_value, ccp_lattice_meet, ccp_visit_phi_node):
2138         Do not handle UNKNOWN_VAL.
2139         (get_default_value): Set initial value of virtual operands to
2140         VARYING.
2141         (get_value): Always use get_default_value on uninitialized
2142         operands.
2143         (set_value_varying, surely_varying_stmt_p): New functions.
2144         (set_lattice_value): Do not pass argument to get_value.
2145         Do not handle UNKNOWN_VAL.
2146         (likely_value): Follow the semantics described in the comment.
2147         (ccp_initialize): Use surely_varying_stmt_p.  Do not mark
2148         phi nodes DONT_SIMULATE_AGAIN.
2149         (ccp_fold): Do not pass argument to get_value.
2150         (fold_const_aggregate_ref, visit_assignment): Ditto.  Do not
2151         handle UNKNOWN_VAL.
2152
2153 2006-11-08  Andrew Pinski  <Andrew_Pinski@playstation.sony.com>
2154
2155         * tree-pretty-print.c (dump_generic_node) <INTEGER_CST>: Use
2156         HOST_WIDE_INT_PRINT_DOUBLE_HEX instead of format buffer.
2157
2158 2006-11-08  Roger Sayle  <roger@eyesopen.com>
2159
2160         * tree-ssa-propagate.c (set_rhs): Restructure validity tests as a
2161         test for inclusion rather than as a test for exclusion.
2162         * tree-ssa-ccp.c (fold_stmt_r) <COND_EXPR>: Use set_rhs to modify
2163         the condition after calling fold_binary.
2164         * fold-const.c (fold_inf_compare): Remove in_gimple_form check.
2165         (fold_binary) <LT_EXPR, GT_EXPR, LE_EXPR, GE_EXPR>: Likewise.
2166         * builtins.c (fold_builtin_isascii): Likewise.
2167         (fold_builtin_isdigit): Likewise.
2168
2169 2006-11-08  Carlos O'Donell  <carlos@codesourcery.com>
2170
2171         * configure.ac: Do not set PREFIX_INCLUDE_DIR if $prefix is NONE.
2172         * configure: Regenerate.
2173
2174 2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>
2175
2176         * tree-vect-analyze.c (vect_mark_relevant, vect_stmt_relevant_p): Take
2177         enum argument instead of bool.
2178         (vect_analyze_operations): Call vectorizable_type_promotion.
2179         * tree-vectorizer.h (type_promotion_vec_info_type): New enum
2180         stmt_vec_info_type value.
2181         (supportable_widening_operation, vectorizable_type_promotion): New
2182         function declarations.
2183         * tree-vect-transform.c (vect_gen_widened_results_half): New function.
2184         (vectorizable_type_promotion): New function.
2185         (vect_transform_stmt): Call vectorizable_type_promotion.
2186         * tree-vect-analyze.c (supportable_widening_operation): New function.
2187         * tree-vect-patterns.c (vect_recog_dot_prod_pattern):
2188         Add implementation.
2189         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
2190         mode.
2191
2192         * tree.def (VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_LO_EXPR):
2193         (VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR): New tree-codes.
2194         * tree-inline.c (estimate_num_insns_1): Add cases for above new
2195         tree-codes.
2196         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
2197         * expr.c (expand_expr_real_1): Likewise.
2198         * optabs.c (optab_for_tree_code): Likewise.
2199         (init_optabs): Initialize new optabs.
2200         * genopinit.c (vec_widen_umult_hi_optab, vec_widen_smult_hi_optab,
2201         vec_widen_smult_hi_optab, vec_widen_smult_lo_optab,
2202         vec_unpacks_hi_optab, vec_unpacks_lo_optab, vec_unpacku_hi_optab,
2203         vec_unpacku_lo_optab): Initialize new optabs.
2204         * optabs.h (OTI_vec_widen_umult_hi, OTI_vec_widen_umult_lo):
2205         (OTI_vec_widen_smult_h, OTI_vec_widen_smult_lo, OTI_vec_unpacks_hi,
2206         OTI_vec_unpacks_lo, OTI_vec_unpacku_hi, OTI_vec_unpacku_lo): New
2207         optab indices.
2208         (vec_widen_umult_hi_optab, vec_widen_umult_lo_optab):
2209         (vec_widen_smult_hi_optab, vec_widen_smult_lo_optab):
2210         (vec_unpacks_hi_optab, vec_unpacku_hi_optab, vec_unpacks_lo_optab):
2211         (vec_unpacku_lo_optab): New optabs.
2212         * doc/md.texi (vec_unpacks_hi, vec_unpacks_lo, vec_unpacku_hi):
2213         (vec_unpacku_lo, vec_widen_umult_hi, vec_widen_umult_lo):
2214         (vec_widen_smult_hi, vec_widen_smult_lo): New.
2215         * doc/c-tree.texi (VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR):
2216         (VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_LO_EXPR, VEC_UNPACK_HI_EXPR):
2217         (VEC_UNPACK_LO_EXPR, VEC_PACK_MOD_EXPR, VEC_PACK_SAT_EXPR): New.
2218
2219         * config/rs6000/altivec.md (UNSPEC_VMULWHUB, UNSPEC_VMULWLUB):
2220         (UNSPEC_VMULWHSB, UNSPEC_VMULWLSB, UNSPEC_VMULWHUH, UNSPEC_VMULWLUH):
2221         (UNSPEC_VMULWHSH, UNSPEC_VMULWLSH): New.
2222         (UNSPEC_VPERMSI, UNSPEC_VPERMHI): New.
2223         (vec_vperm_v8hiv4si, vec_vperm_v16qiv8hi): New patterns used to
2224         implement the unsigned unpacking patterns.
2225         (vec_unpacks_hi_v16qi, vec_unpacks_hi_v8hi, vec_unpacks_lo_v16qi):
2226         (vec_unpacks_lo_v8hi): New signed unpacking patterns.
2227         (vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi):
2228         (vec_unpacku_lo_v8hi): New unsigned unpacking patterns.
2229         (vec_widen_umult_hi_v16qi, vec_widen_umult_lo_v16qi):
2230         (vec_widen_smult_hi_v16qi, vec_widen_smult_lo_v16qi):
2231         (vec_widen_umult_hi_v8hi, vec_widen_umult_lo_v8hi):
2232         (vec_widen_smult_hi_v8hi, vec_widen_smult_lo_v8hi): New widening
2233         multiplication patterns.
2234
2235         * target.h (builtin_mul_widen_even, builtin_mul_widen_odd): New.
2236         * target-def.h (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN):
2237         (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): New.
2238         * config/rs6000/rs6000.c (rs6000_builtin_mul_widen_even): New.
2239         (rs6000_builtin_mul_widen_odd): New.
2240         (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): Defined.
2241         (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): Defined.
2242         * tree-vectorizer.h (enum vect_relevant): New enum type.
2243         (_stmt_vec_info): Field relevant chaned from bool to enum
2244         vect_relevant.
2245         (STMT_VINFO_RELEVANT_P): Updated.
2246         (STMT_VINFO_RELEVANT): New.
2247         * tree-vectorizer.c (new_stmt_vec_info): Use STMT_VINFO_RELEVANT
2248         instead of STMT_VINFO_RELEVANT_P.
2249         * tree-vect-analyze.c (vect_mark_relevant, vect_stmt_relevant_p):
2250         Replace calls to STMT_VINFO_RELEVANT_P with STMT_VINFO_RELEVANT,
2251         and boolean variable with enum vect_relevant.
2252         (vect_mark_stmts_to_be_vectorized): Likewise + update documentation.
2253         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): New.
2254         (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): New.
2255
2256         2006-11-08  Richard Henderson  <rth@redhat.com>
2257
2258         * config/i386/sse.md (vec_widen_umult_hi_v8hi,
2259         vec_widen_umult_lo_v8hi): New.
2260         (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si,
2261         vec_widen_umult_hi_v4si, vec_widen_umult_lo_v4si): New.
2262
2263         * config/i386/i386.c (ix86_expand_sse_unpack): New.
2264         * config/i386/i386-protos.h (ix86_expand_sse_unpack): New.
2265         * config/i386/sse.md (vec_unpacku_hi_v16qi, vec_unpacks_hi_v16qi,
2266         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi, vec_unpacku_hi_v8hi,
2267         vec_unpacks_hi_v8hi, vec_unpacku_lo_v8hi, vec_unpacks_lo_v8hi,
2268         vec_unpacku_hi_v4si, vec_unpacks_hi_v4si, vec_unpacku_lo_v4si,
2269         vec_unpacks_lo_v4si): New.
2270
2271         2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>
2272
2273         * tree-vect-transform.c (vectorizable_type_demotion): New function.
2274         (vect_transform_stmt): Add case for type_demotion_vec_info_type.
2275         (vect_analyze_operations): Call vectorizable_type_demotion.
2276         * tree-vectorizer.h (type_demotion_vec_info_type): New enum
2277         stmt_vec_info_type value.
2278         (vectorizable_type_demotion): New function declaration.
2279         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
2280         mode.
2281
2282         * tree.def (VEC_PACK_MOD_EXPR, VEC_PACK_SAT_EXPR): New tree-codes.
2283         * expr.c (expand_expr_real_1): Add case for VEC_PACK_MOD_EXPR and
2284         VEC_PACK_SAT_EXPR.
2285         * tree-iniline.c (estimate_num_insns_1): Likewise.
2286         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
2287         * optabs.c (optab_for_tree_code): Likewise.
2288
2289         * optabs.c (expand_binop): In case of vec_pack_*_optabs the mode
2290         compared against the predicate of the result is not 'mode' (the input
2291         to the function) but a mode with half the size of 'mode'.
2292         (init_optab): Initialize new optabs.
2293         * optabs.h (OTI_vec_pack_mod, OTI_vec_pack_ssat, OTI_vec_pack_usat):
2294         New optab indices.
2295         (vec_pack_mod_optab, vec_pack_ssat_optab,  vec_pack_usat_optab): New
2296         optabs.
2297         * genopinit.c (vec_pack_mod_optab, vec_pack_ssat_optab):
2298         (vec_pack_usat_optab): Initialize new optabs.
2299         * doc/md.texi (vec_pack_mod, vec_pack_ssat, vec_pack_usat): New.
2300         * config/rs6000/altivec.md (vec_pack_mod_v8hi, vec_pack_mod_v4si): New.
2301
2302         2006-11-08  Richard Henderson  <rth@redehat.com>
2303
2304         * config/i386/sse.md (vec_pack_mod_v8hi, vec_pack_mod_v4si):
2305         (vec_pack_mod_v2di, vec_interleave_highv16qi, vec_interleave_lowv16qi):
2306         (vec_interleave_highv8hi, vec_interleave_lowv8hi):
2307         (vec_interleave_highv4si, vec_interleave_lowv4si):
2308         (vec_interleave_highv2di, vec_interleave_lowv2di): New.
2309
2310         2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>
2311
2312         * tree-vect-transform.c (vectorizable_reduction): Support multiple
2313         datatypes.
2314         (vect_transform_stmt): Removed redundant code.
2315
2316         2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>
2317
2318         * tree-vect-transform.c (vectorizable_operation): Support multiple
2319         datatypes.
2320
2321         2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>
2322
2323         * tree-vect-transform.c (vect_align_data_ref): Removed.
2324         (vect_create_data_ref_ptr): Added additional argument - ptr_incr.
2325         Updated function documentation. Return the increment stmt in ptr_incr.
2326         (bump_vector_ptr): New function.
2327         (vect_get_vec_def_for_stmt_copy): New function.
2328         (vect_finish_stmt_generation): Create a stmt_info to newly created
2329         vector stmts.
2330         (vect_setup_realignment): Call vect_create_data_ref_ptr with additional
2331         argument.
2332         (vectorizable_reduction, vectorizable_assignment): Not supported yet if
2333         VF is greater than the number of elements that can fit in one vector
2334         word.
2335         (vectorizable_operation, vectorizable_condition): Likewise.
2336         (vectorizable_store, vectorizable_load): Support the case that the VF
2337         is greater than the number of elements that can fit in one vector word.
2338         (vect_transform_loop): Don't fail in case of multiple data-types.
2339         * tree-vect-analyze.c (vect_determine_vectorization_factor): Don't fail
2340         in case of multiple data-types; the smallest type determines the VF.
2341         (vect_analyze_data_ref_dependence): Don't record datarefs as same_align
2342         if they are of different sizes.
2343         (vect_update_misalignment_for_peel): Compare misalignments in terms of
2344         number of elements rather than number of bytes.
2345         (vect_enhance_data_refs_alignment): Fix/Add dump printouts.
2346         (vect_can_advance_ivs_p): Fix a dump printout
2347
2348 2006-11-07  Eric Christopher  <echristo@apple.com>
2349
2350         * libgcc2.c (__bswapdi2): Rename from bswapDI2.
2351         (__bswapsi2): Ditto.
2352         * libgcc2.h: Remove transformation of bswap routines.
2353         * config/i386/i386.md (bswapsi2): New.
2354         (bswapdi2): Ditto.
2355
2356 2006-11-07  Jakub Jelinek  <jakub@redhat.com>
2357
2358         * c-common.c (c_common_attributes): Add gnu_inline attribyte.
2359         (handle_gnu_inline_attribute): New function.
2360         * c-decl.c (diagnose_mismatched_decls): Handle gnu_inline attribute.
2361         (merge_decls, start_decl, start_function): Likewise.
2362         * doc/extend.texi: Document gnu_inline attribute.
2363
2364 2006-11-07  Steve Ellcey  <sje@cup.hp.com>
2365
2366         PR other/25028
2367         * config/ia64/t-hpux (LIB1ASMFUNCS):  Filter out _fixtfdi,
2368         _fixunstfdi, and  _floatditf
2369
2370 2006-11-06  Anatoly Sokolov <aesok@post.ru>
2371
2372         * config/avr/avr-protos.h (mask_one_bit_p, const_int_pow2_p): Remove
2373         prototype.
2374         * config/avr/avr.c (mask_one_bit_p, const_int_pow2_p): Remove.
2375         (output_movhi, ashlhi3_out, ashlsi3_out, ashrhi3_out, ashrsi3_out,
2376         lshrhi3_out, lshrsi3_out): Remove unnecessary code for handling value
2377         which start in an odd register.
2378
2379 2006-11-07  Richard Sandiford  <richard@codesourcery.com>
2380
2381         * config/mips/mips.h (ISA_HAS_PREFETCHX): Fix typo.
2382
2383 2006-11-07  Josh Conner  <jconner@apple.com>
2384
2385         * doc/invoke.texi (fstrict-aliasing): Move implementation
2386         details...
2387         * doc/tree-ssa.texi (Alias analysis): ...here.
2388
2389 2006-11-07  Richard Guenther  <rguenther@suse.de>
2390
2391         PR tree-optimization/29610
2392         * tree-cfgcleanup.c (cleanup_control_flow): Honor return value
2393         of tree_purge_dead_eh_edges as it may free dominators.
2394
2395         * g++.dg/other/pr29610.C: New testcase.
2396
2397 2006-11-07  David Ung  <davidu@mips.com>
2398
2399         * config/mips/mips.c (mips_rtx_cost_optimize_size): New table of
2400         costs when optimizing for size.
2401         (override_options): Use mips_rtx_cost_optimize_size table for cost
2402         calculations.
2403
2404 2006-11-07  Jie Zhang  <jie.zhang@analog.com>
2405
2406         * gcc.c (process_command): Treat -b as normal switch if its argument
2407         has no dash.
2408
2409 2006-11-07  David Ung  <davidu@mips.com>
2410
2411         * config/mips/mips.h (ISA_HAS_PREFETCHX): Add ISA_MIPS32R2 to the
2412         list.
2413
2414 2006-11-06  Eric Christopher  <echristo@apple.com>
2415
2416         * config.gcc: Add x86_64-darwin host support.
2417         * config.host: Ditto.
2418         * config/i386/darwin64.h: New file.
2419         * config/i386/t-darwin64: Ditto.
2420
2421 2006-11-06  Janis Johnson  <janis187@us.ibm.com>
2422
2423         * gcc/doc/sourcebuild.texi (Test Directives): Add output-exists
2424         and output-exists-not.
2425
2426 2006-11-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2427
2428         PR tree-opt/29439
2429         * tree-vrp.c (vrp_int_const_binop): Use the correct tree when
2430         checking for overflow.
2431
2432 2006-11-06  Jan van Dijk  <jan@etpmod.phys.tue.nl>
2433
2434         * configure.ac: Fixed typo in case statement: :: changed to ;;
2435
2436 2006-11-06  Bob Wilson  <bob.wilson@acm.org>
2437
2438         * longlong.h (__xtensa__): Add definitions for umul_ppmm, __umulsidi3,
2439         count_leading_zeros, and count_trailing_zeros.
2440         * config/xtensa/xtensa.c (TARGET_INIT_BUILTINS): Define.
2441         (TARGET_FOLD_BUILTIN): Define.
2442         (TARGET_EXPAND_BUILTIN): Define.
2443         (xtensa_init_builtins): New.
2444         (xtensa_fold_builtin): New.
2445         (xtensa_expand_builtin): New.
2446         (xtensa_rtx_costs): Add CTZ and CLZ.  Adjust costs for MULT.
2447         * config/xtensa/xtensa.h (TARGET_MUL32_HIGH): Define.
2448         (CLZ_DEFINED_VALUE_AT_ZERO): Define.
2449         (CTZ_DEFINED_VALUE_AT_ZERO): Define.
2450         * config/xtensa/xtensa.md (UNSPEC_NSAU): Remove.
2451         (any_extend): New code macro.
2452         (u, su): New code attributes.
2453         (<u>mulsidi3, <u>mulsi3_highpart, clzsi2, ctzsi2): New.
2454         (nsau): Remove; replaced by clzsi2.
2455         (ffssi2): Use clzsi2.
2456         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add _umulsidi3,
2457         _clzsi2, _ctzsi2, and _ffssi2.  Rename _nsau to _clz.
2458         * config/xtensa/lib1funcs.asm (__mulsi3): Support Mul32 option.
2459         (__umulsidi3, __clzsi2, __ctzsi2, __ffssi2): New.
2460         (__nsau_data): Guard with ifdef L_clz instead of L_nsau.
2461
2462 2006-11-06  Vladimir Prus  <vladimir@codesourcery.com>
2463
2464         * config/arm/t-strongarm-pe: (TARGET_LIBGCC2_CFLAGS): Do no
2465         set inhibit_libc.
2466         * config/arm/t-strongarm-elf: Likewise.
2467         * config/arm/t-pe: Likewise.
2468         * config/arm/t-arm-elf: Likewise.
2469         * config/arm/t-xscale-elf: Likewise.
2470         * config/arm/t-arm-coff: Likewise.
2471         * config/arm/t-xscale-coff: Likewise.
2472         * config/arm/t-wince-pe: Likewise.
2473
2474 2006-11-05  Kaz Kojima  <kkojima@gcc.gnu.org>
2475
2476         * config/sh/lib1funcs-4-300.asm: Guard entire file with
2477         #if !__SHMEDIA__ .
2478
2479 2006-11-05  Jakub Jelinek  <jakub@redhat.com>
2480
2481         PR middle-end/29695
2482         * fold-const.c (fold_ternary): Fix A < 0 ? <sign bit of A> : 0
2483         simplification.
2484
2485 2006-11-04  Uros Bizjak  <ubizjak@gmail.com>
2486
2487         PR target/26915
2488         * config/i386/i386.c (standard_80387_constant_p): Treat -0.0 and -1.0
2489         as a valid 80387 constant.
2490         (standard_80387_constant_opcode): Return "#" for -0.0 and -1.0.
2491         * config/i386/i386.md (unnamed splitter): Split the load of
2492         constant -0.0 or -1.0  into the load of 0.0 or 1.0, followed
2493         by negation.
2494
2495 2006-11-04  Richard Earnshaw  <rearnsha@arm.com>
2496
2497         * arm.c (thumb_legitimate_addres_p): Allow any constant offset
2498         from the soft-frame, argument and virtual registers.
2499
2500 2006-11-04  Uros Bizjak  <ubizjak@gmail.com>
2501
2502         * config/i386/i386.md (*movxf_nointeger, *movxf_integer): Enable
2503         patterns for standard 80387 constants.
2504
2505 2006-11-03  Paolo Bonzini  <bonzini@gnu.org>
2506             Steven Bosscher  <steven@gcc.gnu.org>
2507
2508         * fwprop.c: New file.
2509         * Makefile.in: Add fwprop.o.
2510         * tree-pass.h (pass_rtl_fwprop, pass_rtl_fwprop_with_addr): New.
2511         * passes.c (init_optimization_passes): Schedule forward propagation.
2512         * rtlanal.c (loc_mentioned_in_p): Support NULL value of the second
2513         parameter.
2514         * timevar.def (TV_FWPROP): New.
2515         * common.opt (-fforward-propagate): New.
2516         * opts.c (decode_options): Enable forward propagation at -O2.
2517         * gcse.c (one_cprop_pass): Do not run local cprop unless touching jumps.
2518         * cse.c (fold_rtx_subreg, fold_rtx_mem, fold_rtx_mem_1, find_best_addr,
2519         canon_for_address, table_size): Remove.
2520         (new_basic_block, insert, remove_from_table): Remove references to
2521         table_size.
2522         (fold_rtx): Process SUBREGs and MEMs with equiv_constant, make
2523         simplification loop more straightforward by not calling fold_rtx
2524         recursively.
2525         (equiv_constant): Move here a small part of fold_rtx_subreg,
2526         do not call fold_rtx.  Call avoid_constant_pool_reference
2527         to process MEMs.
2528         * recog.h (canonicalize_change_group): New.
2529
2530         * doc/invoke.texi (Optimization Options): Document fwprop.
2531         * doc/passes.texi (RTL passes): Document fwprop.
2532
2533 2006-11-03  Geoffrey Keating  <geoffk@apple.com>
2534
2535         * c-decl.c (WANT_C99_INLINE_SEMANTICS): New, set to 1.
2536         (merge_decls): Implement WANT_C99_INLINE_SEMANTICS.
2537         (grokdeclarator): Likewise.
2538
2539 2006-11-03  Steven Bosscher  <steven@gcc.gnu.org>
2540
2541         * tree-dump.c (dump_enable_all): Rename local variable
2542         ir_type to avoid name conflicts.
2543         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Check for IR_GIMPLE
2544         instead of using ir_type().
2545         * profile.c (tree_register_profile_hooks): Likewise.
2546         * value-prof.c (tree_register_value_prof_hooks): Likewise.
2547         * basic-block.h (struct edge_def): Likewise.
2548         * config/arm/arm.c (legitimize_pic_address): Likewise.
2549         * coretypes.h (ir_type): New enum of all intermediate languages
2550         used in GCC.
2551         * cfghooks.c (ir_type): Rename to...
2552         (current_ir_type): ...this.  Distinguish between cfgrtl and
2553         cfglayout mode when the current IR is RTL.  Return enum ir_type.
2554         * cfghooks.h (ir_type): Replace with current_ir_type prototype.
2555
2556 2006-11-03  Paul Brook  <paul@codesourcery.com>
2557
2558         * config/arm/arm.c (arm_file_start): New function.
2559         (TARGET_ASM_FILE_START): Define.
2560         (arm_default_cpu): New variable.
2561         (arm_override_options): Set arm_default_cpu.
2562
2563 2006-11-03  David Ung  <davidu@mips.com>
2564
2565         * config/mips/mips.h (processor_type): Removed PROCESSOR_24K, add
2566         PROCESSOR_24KC and PROCESSOR_24KF.
2567         * config/mips/mips.c (mips_cpu_info_table): Add processor names
2568         and aliases for 4kec/4kem/4kep/24kec/24kef/24kex/34kc/34kf/34kx.
2569         (mips_rtx_cost_data): Add costs for the 24kc.
2570         * config/mips/mips.md ("cpu"): Remove 24k, add 24kc and 24kf.
2571         * config/mips/24k.md: Remove references to 24k and replace with
2572         uses of 24kc/24kf in the appropriate reservations.
2573         * doc/invoke.texi (MIPS Options): Updated.
2574
2575 2006-11-03  J"orn Rennecke  <joern.rennecke@st.com>
2576
2577         * config/sh/crt1.asm: Fix #ifdef indent.
2578
2579 2006-11-03  J"orn Rennecke  <joern.rennecke@st.com>
2580         Merged from STMicroelectronics sources:
2581         2006-10-06  Andrew Stubbs  <andrew.stubbs@st.com>
2582           * config/sh/crt1.asm (vbr_600): Add missing #if.
2583         2006-08-03  J"orn Rennecke  <joern.rennecke@st.com>
2584           * sh.opt (mfused-madd): New option.
2585           * sh.md (mac_media, macsf3): Make conditional on TARGET_FMAC.
2586         2006-07-04  Andrew Stubbs  <andrew.stubbs@st.com>
2587           * config/sh/crt1.asm (vbr_start): Move to new section .test.vbr.
2588           Remove pointless handler at VBR+0.
2589           (vbr_200, vbr_300, vbr_500): Remove pointless handler.
2590           (vbr_600): Save and restore mach and macl, fpul and fpscr and fr0 to
2591           fr7. Make sure the timer handler is called with the correct FPU
2592           precision setting, according to the ABI.
2593         2006-06-14  J"orn Rennecke <joern.rennecke@st.com>
2594           * config/sh/sh.opt (m2a-single, m2a-single-only): Fix Condition.
2595           * config/sh/sh.h (SUPPORT_SH2A_NOFPU): Fix condition.
2596           (SUPPORT_SH2A_SINGLE_ONLY, SUPPORT_SH2A_SINGLE_ONLY): Likewise.
2597         2006-06-09  J"orn Rennecke <joern.rennecke@st.com>
2598           * sh.md (cmpgeusi_t): Change into define_insn_and_split.  Accept
2599           zero as second operand.
2600         2006-04-28  J"orn Rennecke <joern.rennecke@st.com>
2601           * config/sh/divtab-sh4-300.c, config/sh/lib1funcs-4-300.asm:
2602           Fixed some bugs related to negative values, in particular -0
2603           and overflow at -0x80000000.
2604           * config/sh/divcost-analysis: Added sh4-300 figures.
2605         2006-04-27  J"orn Rennecke <joern.rennecke@st.com>
2606           * config/sh/t-sh (MULTILIB_MATCHES): Add -m4-300* / -m4-340 options.
2607         2006-04-26  J"orn Rennecke <joern.rennecke@st.com>
2608           * config/sh/t-sh (OPT_EXTRA_PARTS): Add libgcc-4-300.a.
2609           ($(T)div_table-4-300.o, $(T)libgcc-4-300.a): New rules.
2610           * config/sh/divtab-sh4-300.c, config/sh/lib1funcs-4-300.asm:
2611         New files.
2612           * config/sh/embed-elf.h (LIBGCC_SPEC): Use -lgcc-4-300 for -m4-300* /
2613           -m4-340.
2614         2006-04-24  J"orn Rennecke <joern.rennecke@st.com>
2615           SH4-300 scheduling description & fixes to SH4-[12]00 description:
2616           * sh.md: New instruction types: fstore, movi8, fpscr_toggle, gp_mac,
2617           mac_mem, mem_mac, dfp_mul, fp_cmp.
2618           (insn_class, dfp_comp, any_fp_comp): Update.
2619           (push_fpul, movsf_ie, fpu_switch, toggle_sz, toggle_pr): Update type.
2620           (cmpgtsf_t, "cmpeqsf_t, cmpgtsf_t_i4, cmpeqsf_t_i4): Likewise.
2621           (muldf3_i): Likewise.
2622           (movsi_i): Split rI08 alternative into two separate alternatives.
2623           Update type.
2624           (movsi_ie, movsi_i_lowpart): Likewise.
2625           (movqi_i): Split ri alternative into two separate alternatives.
2626           Update type.
2627           * sh1.md (sh1_load_store, sh1_fp): Update.
2628           * sh4.md (sh4_store, sh4_mac_gp, fp_arith, fp_double_arith): Update.
2629           (mac_mem, sh4_fpscr_toggle): New insn_reservations.
2630           * sh4a.md (sh4a_mov, sh4a_load, sh4a_store, sh4a_fp_arith): Update.
2631           (sh4a_fp_double_arith): Likewise.
2632           * sh4-300.md: New file.
2633           * sh.c (sh_handle_option): Handle m4-300* options.
2634           (sh_adjust_cost): Fix latency of auto-increments.
2635           Handle SH4-300 differently than other SH4s.  Check for new insn types.
2636           * sh.h (OVERRIDE_OPTIONS): Initilize sh_branch_cost if it has not
2637           been set by an option.
2638           * sh.opt (m4-300, m4-100-nofpu, m4-200-nofpu): New options.
2639           (m4-300-nofpu, -m4-340, m4-300-single, m4-300-single-only): Likewise.
2640           (mbranch-cost=): Likewise.
2641           * superh.h (STARTFILE_SPEC): Take -m4-340 into account.
2642
2643           * sh.md (mulsf3): Remove special expansion code.
2644           (mulsf3_ie): Now a define_insn_and_split.
2645           (macsf3): Allow for TARGET_SH4.
2646
2647           * sh.md (cbranchsi4, cbranchdi4, cbranchdi4_i): New patterns.
2648           * sh.c (prepare_cbranch_operands, expand_cbranchsi4): New functions.
2649           (expand_cbranchdi4): Likewise.
2650           (sh_rtx_costs): Give lower cost for certain CONST_INT values and for
2651           CONST_DOUBLE if the outer code is COMPARE.
2652           * sh.h (OPTIMIZATION_OPTIONS): If not optimizing for size, set
2653           TARGET_CBRANCHDI4 and TARGET_EXPAND_CBRANCHDI4.
2654           (OVERRIDE_OPTIONS): For TARGET_SHMEDIA, clear TARGET_CBRANCHDI4.
2655           (LEGITIMATE_CONSTANT_P): Also allow DImode and VOIDmode CONST_DOUBLEs.
2656           Remove redundant fp_{zero,one}_operand checks.
2657           * sh.opt (mcbranchdi, mexpand-cbranchdi, mcmpeqdi): New options.
2658           * sh-protos.h (prepare_cbranch_operands, expand_cbranchsi4): Declare.
2659           (expand_cbranchdi4): Likewise.
2660         2006-04-20  J"orn Rennecke <joern.rennecke@st.com>
2661           * sh.h (LOCAL_ALIGNMENT): Use DATA_ALIGNMENT.
2662
2663 2006-11-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2664
2665         * doc/md.texi (RS6000 constraints): Document H, Z, a, t, and W
2666         constraints.
2667
2668 2006-11-02  Brooks Moses  <brooks.moses@codesourcery.com>
2669
2670         * doc/invoke.texi: Fix mfp-trap-mode typo.
2671
2672 2006-11-02  Carlos O'Donell  <carlos@codesourcery.com>
2673
2674         * config/arm/linux-elf.h (NEED_INDICATE_EXEC_STACK): Define as 1.
2675         * arm.c (arm_file_end): If NEED_INDICATE_EXEC_STACK call
2676         file_end_indicate_exec_stack.
2677         * arm.h [!NEED_INDICATE_EXEC_STACK] (NEED_INIDCATE_EXEC_STACK):
2678         Define as 0.
2679         * lib1funcs.asm [__ELF__ && __linux__]: Emit .note.GNU-stack section
2680         for a non-executable stack.
2681         * crti.asm: Likewise.
2682         * crtn.asm: Likewise.
2683         * libunwind.S: Likewise.
2684
2685 2006-11-02  Ben Elliston  <bje@au.ibm.com>
2686
2687         * tree-ssa.c (warn_uninit): Use expand_location variables for
2688         locus and declaration locus.
2689
2690 2006-11-02  Kaz Kojima  <kkojima@gcc.gnu.org>
2691
2692         PR target/27405
2693         * config/sh/sh.md (cmp{eq,gt,gtu}{si,di}_media): Remove.
2694         (cmpsi{eq,gt,gtu}{si,di}_media): Rename to
2695         cmp{eq,gt,gtu}{si,di}_media.
2696         (*cmpne0si_media): Remove.
2697         (*movsicc_umin): Adjust gen_cmp*_media call.
2698         (unordered): Change the mode of unordered and operands[1] to
2699         SImode.
2700         (seq): Adjust gen_cmp*_media calls.  Make the mode of
2701         a temporary result of compare SImode if needed.  If the mode
2702         of operands[0] is DImode, extend the temporary result to DImode.
2703         (slt, sle, sgt, sge, sgtu, sltu, sleu, sgue, sne): Likewise.
2704         (sunorderd): Change the mode of match_operand and unorderd to
2705         SImode.
2706         (cmpeq{sf,df}_media): Remove.
2707         (cmpsieq{sf,df}_media): Rename to cmpeq{sf,df}_media.
2708         (cmp{gt,ge,un}{sf,df}_media): Change the mode of match_operand
2709         and compare operation to SImode.
2710
2711 2006-11-02  Eric Botcazou  <ebotcazou@libertysurf.fr>
2712
2713         * doc/install.texi (sparc-sun-solaris2*): Update GMP/MPFR build
2714         instructions.
2715         (sparc64-sun-solaris2*): Likewise.
2716
2717 2006-11-02  Paul Brook  <paul@codesourcery.com>
2718
2719         * config/arm/arm.c (arm_elf_asm_constructor): Remove ATTRIBUTE_UNUSED
2720         from priority argument.  Use different section for non-default
2721         priority.
2722         * config/arm/elf.h: Remove definition of SUPPORTS_INIT_PRIORITY.
2723
2724 2006-11-02  Eric Botcazou  <ebotcazou@adacore.com>
2725
2726         PR other/29639
2727         * except.c (switch_to_exception_section): Do not cache the section
2728         if named sections are supported and HAVE_LD_EH_GC_SECTIONS is defined
2729         and flag_function_sections is set.
2730
2731 2006-11-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2732
2733         PR middle-end/29335
2734         * builtins.c (do_mpfr_sincos): New.
2735         (fold_builtin_1): Use it to fold builtin sincos.
2736
2737 2006-11-01  Roger Sayle  <roger@eyesopen.com>
2738
2739         * config/darwin.h (CPP_SPEC): Handle -pthread, transforming
2740         it into -D_REENTRANT.
2741
2742 2006-11-01  Roger Sayle  <roger@eyesopen.com>
2743
2744         * configure.ac (HAVE_AS_IX86_DIFF_SECT_DELTA): New test to determine
2745         whether the assembler supports taking the difference of symbols in
2746         different sections.  On x86/Solaris, GAS does but Solaris as doesn't.
2747         * configure: Regenerate.
2748         * config.in: Regenerate.
2749         * config/i386/sol2-10.h (JUMP_TABLES_IN_TEXT_SECTION): Define if
2750         the assembler doesn't support taking the difference of symbols in
2751         different sections, i.e. we're using the native solaris assembler.
2752
2753 2006-11-01  Pete Steinmetz  <steinmtz@us.ibm.com>
2754             Peter Bergner  <bergner@vnet.ibm.com>
2755
2756         * doc/invoke.texi: Add cpu_type power6x
2757         (RS/6000 and PowerPC Options): Add -mmfpgpr.
2758         * config.gcc: Add cpu_type power6x.
2759         * configure.ac: Add test for mf{t,f}gpr instructions.
2760         (HAVE_AS_MFPGPR): New.
2761         * config.in: Regenerate.
2762         * configure: Regenerate.
2763         * config/rs6000/aix52.h (ASM_CPU_SPEC): Add power6x.
2764         * config/rs6000/rs6000.md (define_attr "type"): Add insert_dword,
2765         shift,trap,var_shift_rotate,cntlz,exts, var_delayed_compare, mffgpr
2766         and mftgpr attributes.
2767         (define_attr "cpu"): Add power6.
2768         Change instruction sequences to use new attributes.
2769         (floatsidf2,fix_truncdfsi2): use TARGET_MFPGPR.
2770         (fix_truncdfsi2_mfpgpr): New.
2771         (floatsidf_ppc64_mfpgpr): New.
2772         (floatsidf_ppc64): Added !TARGET_MFPGPR condition.
2773         (movdf_hardfloat64_mfpgpr,movdi_mfpgpr): New.
2774         (movdf_hardfloat64): Added !TARGET_MFPGPR condition.
2775         (movdi_internal64): Added !TARGET_MFPGPR and related conditions.
2776         (fix_truncdfsi2): Use gpc_reg_operand constraint.
2777         * config/rs6000/{6xx.md,power4.md,8540.md,603.md,mpc.md,
2778         7xx.md,rios2.md,7450.md,440.md,rios1.md,rs64.md,power5.md,40x.md}:
2779         Add descriptions for insert_dword, shift,trap,var_shift_rotate,
2780         cntlz,exts and var_delayed_compare.
2781         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
2782         _ARCH_PWR6X, if features enabled.
2783         * config/rs6000/rs6000.opt (mmfpgpr): New.
2784         * config/rs6000/rs6000.c (rs6000_align_branch_targets): New variable.
2785         (cached_can_issue_more): New variable.
2786         (processor_costs): Add power6_cost.
2787         (rs6000_sched_init): New function.
2788         (is_dispatch_slot_restricted): Deleted.
2789         (set_to_load_agen): New function.
2790         (is_load_insn,is_store_insn): New functions.
2791         (adjacent_mem_locations): New function.
2792         (insn_must_be_first_in_group): New function.
2793         (insn_must_be_last_in_group): New function.
2794         (rs6000_sched_reorder): New function.
2795         (rs6000_sched_reorder2): New function.
2796         (TARGET_SCHED_INIT,TARGET_SCHED_REORDER,
2797         TARGET_SCHED_REORDER2): Define.
2798         (processor_target_table): Use PROCESSOR_POWER6 for power6.
2799         Add power6x. Add MASK_MFPGPR for power6x.
2800         (POWERPC_MASKS): Add MASK_MFPGPR.
2801         (rs6000_override_options): Set rs6000_always_hint to false
2802         for power6.  Set rs6000_align_branch_targets. Replace
2803         rs6000_sched_groups check with rs6000_align_branch_targets.
2804         Use PROCESSOR_POWER6.
2805         (last_scheduled_insn): New variable.
2806         (load_store_pendulum): New variable.
2807         (rs6000_variable_issue): Set last_scheduled_insn and
2808         cached_can_issue_more.
2809         (rs6000_adjust_cost): Add power6 cost adjustments.
2810         (rs6000_adjust_priority): Replace is_dispatch_slot_restricted
2811         with insn_must_be_first_in_group. Add power6 priority adjustments.
2812         (rs6000_issue_rate): Add CPU_POWER6.
2813         (insn_terminates_group_p): Use insn_must_be_{first,last}_in_group.
2814         * config/rs6000/rs6000.h (processor_type): Add PROCESSOR_POWER6.
2815         (TARGET_MFPGPR): New.
2816         (SECONDARY_MEMORY_NEEDED): Use TARGET_MFPGPR.
2817         (ASM_CPU_SPEC): Add power6x.
2818         (SECONDARY_MEMORY_NEEDED): Added mode!=DFmode and mode!=DImode
2819         conditions.
2820         * config/rs6000/power6.md: New file.
2821
2822 2006-11-01  Adam Nemet  <anemet@caviumnetworks.com>
2823
2824         * tree-pretty-print.c (dump_generic_node) <INTEGER_CST>: Use
2825         HOST_WIDE_INT_PRINT to print high and low parts.  Use
2826         HOST_BITS_PER_WIDE_INT for the width of HOST_WIDE_INT.  When
2827         printing a hexadecimal number prefix it with 0x.
2828
2829 2006-11-01  Chris Johns <chris@contemporary.net.au>
2830
2831         PR bootstrap/28400
2832         * Makefile.in (install-driver): Use exeext when installing
2833         $target-gcc-$version.
2834
2835 2006-11-01      Douglas Gregor <doug.gregor@gmail.com>
2836
2837         * c-common.c (flag_cpp0x): New.
2838         * c-common.h (flag_cpp0x): New.
2839         * c-cppbuiltin.c (c_cpp_builtins): If C++0x extensions are
2840         supported, define __GXX_EXPERIMENTAL_CPP0X__.
2841         * c-opts.c (set_std_cxx0x): New.
2842         (c_common_handle_option): Handle -std=c++0x, -std=gnu++0x.
2843         * c.opt (std=c++0x): Document.
2844         (std=gnu++0x): Ditto.
2845         * doc/cpp.texi: Document __GXX_EXPERIMENTAL_CPP0X__.
2846         * doc/invoke.texi: Document -std=c++0x, -std=gnu++0x.
2847
2848 2006-11-01  Richard Guenther  <rguenther@suse.de>
2849
2850         * config/i386/i386.c (ix86_expand_rint): Fix issues with
2851         signed zeros.
2852         (ix86_expand_floorceildf_32): Likewise.
2853         (ix86_expand_floorceil): Likewise.
2854         (ix86_expand_trunc): Likewise.
2855
2856 2006-10-31  Andrew Pinski  <pinskia@gmail.com>
2857
2858         * doc/invoke.texi (-fkeep-inline-functions): Change "GNU C"
2859         to "GNU C89".
2860
2861 2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>
2862
2863         * target.h (targetm.cxx.use_atexit_for_cxa_atexit): New target
2864         hook.
2865         * target-def.h: (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT): Define
2866         default.
2867         * config/i386/mingw32.h (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT):
2868         Override default.
2869         * doc/tm.texi (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT): Document.
2870         * configure.ac (use_cxa_atexit): As a special case, don't test
2871         for libc definition of __cxa_atexit on mingw32
2872         * configure: Regenerate.
2873         * config.gcc (i[34567]86-pc-mingw32): Default to
2874         enable__cxa_atexit=yes.
2875
2876 2006-11-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2877
2878         * builtins.def (gamma, lgamma): Use ATTR_MATHFN_FPROUNDING_STORE.
2879
2880 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
2881
2882         PR 23067
2883         * c-decl.c (start_struct): Don't create self-containing
2884         structures.
2885         * config/rs6000/rs6000.c (darwin_rs6000_special_round_type_align):
2886         New.
2887         * config/rs6000/rs6000-protos.h
2888         (darwin_rs6000_special_round_type_align): New.
2889         * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Rewrite.
2890         (ROUND_TYPE_ALIGN): Use darwin_rs6000_special_round_type_align.
2891
2892 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
2893
2894         * toplev.c (compile_file): Call final_write_globals
2895         even if there have been errors.
2896
2897 2006-10-31  Eric Christopher  <echristo@apple.com>
2898             Falk Hueffner  <falk@debian.org>
2899
2900         * doc/extend.texi (__builtin_bswap32): Document.
2901         (__builtin_bswap64): Ditto.
2902         * doc/libgcc.texi (bswapsi2): Document.
2903         (bswapdi2): Ditto.
2904         * doc/rtl.texi (bswap): Document.
2905         * optabs.c (expand_unop): Don't widen a bswap.
2906         (init_optabs): Init bswap. Set libfuncs explicitly
2907         for bswapsi2 and bswapdi2.
2908         * optabs.h (OTI_bswap): New.
2909         (bswap_optab): Ditto.
2910         * genopinit.c (optabs): Handle bswap_optab.
2911         * tree.h (tree_index): Add TI_UINT32_TYPE and
2912         TI_UINT64_TYPE.
2913         (uint32_type_node): New.
2914         (uint64_type_node): Ditto.
2915         * tree.c (build_common_tree_nodes_2): Initialize
2916         uint32_type_node and uint64_type_node.
2917         * builtins.c (expand_builtin_bswap): New.
2918         (expand_builtin): Call.
2919         (fold_builtin_bswap): New.
2920         (fold_builtin_1): Call.
2921         * fold-const.c (tree_expr_nonnegative_p): Return true
2922         for bswap.
2923         * builtin-types.def (BT_UINT32): New.
2924         (BT_UINT64): Ditto.
2925         (BT_FN_UINT32_UINT32): Ditto.
2926         (BT_FN_UINT64_UINT64): Ditto.
2927         * builtins.def (BUILT_IN_BSWAP32): New.
2928         (BUILT_IN_BSWAP64): Ditto.
2929         * rtl.def (BSWAP): New.
2930         * genattrtab.c (check_attr_value): New.
2931         * libgcc2.c (__bswapSI2): New.
2932         (__bswapDI2): Ditto.
2933         * libgcc2.h (__bswapSI2): Declare.
2934         (__bswapDI2): Ditto.
2935         * mklibgcc.in (lib2funcs): Add _bswapsi2 and _bswapdi2.
2936         * simplify-rtx.c (simplify_const_unary_operation): Return
2937         0 for BSWAP.
2938         * libgcc-std.ver (__bwapsi2): Add.
2939         (__bswapdi2): Ditto.
2940         * reload1.c (eliminate_regs_1): Add bswap.
2941         (elimination_effects): Ditto.
2942         * config/i386/i386.h (x86_bswap): New.
2943         (TARGET_BSWAP): Use.
2944         * config/i386/i386.c (x86_bswap): Set.
2945
2946 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
2947
2948         * coverage.c (coverage_checksum_string): Update comment.
2949         * dwarf2out.c (switch_to_eh_frame_section): Update for removal
2950         of get_file_function_name.
2951         * cgraphunit.c (cgraph_build_static_cdtor): Update for rename
2952         of get_file_function_name_long.
2953         * tree.c (get_file_function_name): Rename from
2954         get_file_function_name_long; improve comment; handle 'I' and 'D'
2955         specially when the target has ctor/dtor support; remove special
2956         handling for 'F'.
2957         (get_file_function_name): Remove.
2958         * tree.h (get_file_function_name): Rename from
2959         get_file_function_name_long.
2960         (get_file_function_name): Remove prototype.
2961
2962 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
2963
2964         * config/i386/darwin.h (PREFERRED_DEBUGGING_TYPE): Remove.
2965         * config/darwin.h (PREFERRED_DEBUGGING_TYPE): Set to DWARF2_DEBUG.
2966
2967         * config/darwin.h (LINK_COMMAND_SPEC): Don't do weird things with -@.
2968         Call dsymutil when compiling and linking one or more source files
2969         in one step.
2970
2971 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
2972
2973         PR 15834
2974         * config/darwin.h (NO_IMPLICIT_EXTERN_C): Define.
2975
2976 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
2977
2978         * c-decl.c (grokdeclarator): Don't set DECL_EXTERNAL on
2979         inline static functions in c99 mode.
2980
2981         PR 16622
2982         * doc/extend.texi (Inline): Update.
2983         * c-tree.h (struct language_function): Remove field 'extern_inline'.
2984         * c-decl.c (current_extern_inline): Delete.
2985         (pop_scope): Adjust test for an undefined nested function.
2986         Add warning about undeclared inline function.
2987         (diagnose_mismatched_decls): Update comments.  Disallow overriding
2988         of inline functions in a translation unit in C99.  Allow inline
2989         declarations in C99 at any time.
2990         (merge_decls): Boolize variables.  Handle C99 'extern inline'
2991         semantics.
2992         (grokdeclarator): Set DECL_EXTERNAL here for functions.  Handle
2993         C99 inline semantics.
2994         (start_function): Don't clear current_extern_inline.  Don't set
2995         DECL_EXTERNAL.
2996         (c_push_function_context): Don't push current_extern_inline.
2997         (c_pop_function_context): Don't restore current_extern_inline.
2998
2999         PR 11377
3000         * c-typeck.c (build_external_ref): Warn about static variables
3001         used in extern inline functions.
3002         * c-decl.c (start_decl): Warn about static variables declared
3003         in extern inline functions.
3004
3005 2006-10-31  Roger Sayle  <roger@eyesopen.com>
3006
3007         PR middle-end/23470
3008         * tree.h (tree_expr_nonnegative_p): Return "bool" instead of "int".
3009         * fold-const.c (tree_expr_nonnegative_p): Likewise.  Consider
3010         pow(x,y) and powi(x,y) to be nonnegative if either x is nonnegative
3011         or y is an even integer.
3012
3013 2006-10-31  Eric Botcazou  <ebotcazou@libertysurf.fr>
3014
3015         PR target/24071
3016         * gthr-posix.h (__gthread_active_p): New implementation on Solaris.
3017         * gthr-posix95.h (__gthread_active_p): Likewise.
3018
3019 2006-10-31  Richard Guenther  <rguenther@suse.de>
3020
3021         * config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2,
3022         acossf2, acosxf2, log1psf2, log1pdf2, log1pxf2, ilogbsi2,
3023         expsf2, expdf2, expxf2, exp10sf2, exp10df2, exp10xf2,
3024         exp2sf2, exp2df2, exp2xf2, expm1df2, expm1sf2, expm1xf2,
3025         ldexpdf3, ldexpsf3, ldexpxf3, rintxf2, rintdf2, rintsf2,
3026         lround<mode>di2, lround<mode>si2, floorxf2, floordf2, floorsf2,
3027         lfloor<mode>di2, lfloor<mode>si2, ceilxf2, ceildf2, ceilsf2,
3028         btruncxf2, btruncdf2, btruncsf2): Conditionalize expansion on
3029         !optimize_size.
3030
3031 2006-10-31  Steven Bosscher  <steven@gcc.gnu.org>
3032
3033         * opts.c (decode_options): Disable CSE skip blocks.
3034
3035 2006-10-30  Dirk Mueller  <dmueller@suse.de>
3036
3037         * c-common.h (strict_aliasing_warning): Fix whitespace.
3038         * c-decl (start_function): Move code for main decl warning ..
3039         * c-common.c (check_main_parameter_types): .. here.
3040         * c-common.h (check_main_parameter_types): Declare.
3041
3042 2006-10-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3043
3044         PR middle-end/29335
3045         * builtins.c (fold_builtin_1): Evaluate tgamma using MPFR.
3046
3047 2006-10-30  Pete Steinmetz  <steinmtz@us.ibm.com>
3048
3049         * recog.c (store_data_bypass_p): Add support to allow IN_INSN to
3050         be a PARALLEL containing sets.  Return false when out_pat is not
3051         a PARALLEL insn.
3052
3053 2006-10-30  Richard Sandiford  <richard@codesourcery.com>
3054
3055         * config/mips/mips.md (mul<mode>3): Split into...
3056         (mulsi3, muldi3): ...these separate patterns.
3057
3058 2006-10-30  Richard Sandiford  <richard@codesourcery.com>
3059
3060         * config/mips/linux64.h (DRIVER_SELF_SPECS): Use a single spec,
3061         but with each set of options separated by spaces.
3062
3063 2006-10-30  J"orn Rennecke  <joern.rennecke@st.com>
3064
3065         * unwind-dw2.c (uw_init_context_1): Fix test that checks if
3066         dwarf_reg_size_table has been initialized.
3067
3068 2006-10-30  Roger Sayle  <roger@eyesopen.com>
3069
3070         * builtins.c (expand_builtin_mathfn_3): Correct coding style.
3071         * ddg.c (print_ddg_edge): Likewise.
3072         * dwarf2out.c (prune_unused_types_walk): Likewise.
3073         * ifcvt.c (noce_try_cmove_arith): Likewise.
3074         * langhooks.c (add_builtin_function): Likewise.
3075         * reg-stack.c (subst_stack_regs_pat): Likewise.
3076         * tree.c (expanded_location): Likewise.
3077         * tree-dump.c (dequeue_and_dump): Likewise.
3078
3079 2006-10-30  David Daney  <ddaney@avtrex.com>
3080
3081         * config/mips/linux.h (NO_SHARED_SPECS): Correct syntax error.
3082
3083 2006-10-30  Jakub Jelinek  <jakub@redhat.com>
3084
3085         PR tree-optimization/29637
3086         * tree.c (make_vector_type): Don't recurse if TYPE_MAIN_VARIANT
3087         of the innertype is the innertype itself.
3088
3089 2006-10-30  Danny Smith  <dannysmith@users.sourceforge.net>
3090
3091         * dwarf2out.c (file_name_acquire): Correct typo.
3092
3093 2006-10-29  Daniel Berlin  <dberlin@dberlin.org>
3094
3095         * tree.h (tree_value_handle): Remove struct value_set declaration.
3096         Change value_set to bitmap_set.
3097         * tree-pretty-print.c (dump_generic_node): Use has_stmt_ann.
3098         * tree-vn.c (get_value_handle): Made inline and moved to
3099         tree-flow-inline.h.
3100         * tree-flow-inline.h: (has_stmt_ann): New function.
3101         * tree-ssa-pre.c (expressions): New variable.
3102         (next_expression_id): Ditto.
3103         (alloc_expression_id): New function.
3104         (struct value_set): Remove.
3105         (get_expression_id): New function.
3106         (get_or_alloc_expression_id): Ditto.
3107         (expression_for_id): Ditto.
3108         (clear_expression_ids): Ditto.
3109         (FOR_EACH_EXPR_ID_IN_SET): New macro.
3110         (bb_value_sets): Renamed to bb_bitmap_sets.
3111         All value sets replaced with bitmap_sets.
3112         Add visited member.
3113         (BB_VISITED): New macro.
3114         (postorder): New variable.
3115         (add_to_value): Removed.
3116         (value_exists_in_set_bitmap): Ditto.
3117         (value_insert_into_set_bitmap): Ditto.
3118         (set_new): Ditto.
3119         (set_copy): Ditto.
3120         (set_remove): Ditto.
3121         (set_contains_value): Ditto.
3122         (insert_into_set): Ditto.
3123         (set_equal): Ditto.
3124         (find_leader): Ditto.
3125         (bitmap_set_subtract_from_value_set): Ditto.
3126         (value_insert_into_set): Ditto.
3127         (print_value_set): Ditto.
3128         (debug_value_set): Ditto.
3129         (constant_expr_p): New function.
3130         (bitmap_remove_from_set): Ditto.
3131         (bitmap_insert_into_set): Ditto.
3132         (bitmap_set_free): Ditto.
3133         (vh_compare): Ditto.
3134         (sorted_array_from_bitmap_set): Ditto.
3135         (bitmap_set_subtract): Ditto.
3136         (bitmap_set_equal): Ditto.
3137         (debug_bitmap_set): Ditto.
3138         (find_leader_in_sets): Ditto.
3139         (bitmap_set_replace_value): Modify for bitmapped sets.
3140         (phi_translate): Ditto.
3141         (phi_translate_set): Ditto.
3142         (bitmap_find_leader): Ditto.
3143         (valid_in_sets): Ditto.
3144         (union_contains_value): Ditto.
3145         (clean): Ditto.
3146         (compute_antic_aux): Ditto.  Mark changed blocks.
3147         (compute_antic): Ditto. Iterate in postorder and only over
3148         changing blocks.
3149         (compute_rvuse_and_antic_safe): Reuse postorder.
3150         (create_component_ref_by_pieces): Modify for bitmapped sets.
3151         (find_or_generate_expression): Ditto.
3152         (create_expression_by_pieces): Ditto.
3153         (insert_into_preds_of_block): Ditto.
3154         (changed_blocks): New variable.
3155         (do_regular_insertion): Broken out from insert_aux.
3156         (insert_aux): Modified for bitmapped sets.
3157         (find_existing_value_expr): New function.
3158         (create_value_expr_from): Use it.
3159         (insert_extra_phis): Removed.
3160         (print_bitmap_set): Renamed from bitmap_print_value_set.
3161         (compute_avail): Handle RETURN_EXPR.
3162         (init_pre): Modify for bitmapped sets.
3163         * tree-flow.h (has_stmt_ann): New function.
3164
3165 2006-10-29  Roger Sayle  <roger@eyesopen.com>
3166
3167         * builtins.c (fold_builtin_floor): Check for the availability of
3168         the C99 trunc function before transforming floor into trunc.
3169
3170 2006-10-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3171
3172         * builtins.c (fold_builtin_hypot): Rearrange recursive
3173         transformation before others, and also do ABS_EXPR.  When
3174         necessary, check flag_unsafe_math_optimizations.  When necessary,
3175         add fabs.
3176
3177 2006-10-29  Roger Sayle  <roger@eyesopen.com>
3178
3179         * fold-const.c (fold_comparison): Fold ~X op ~Y as Y op X.
3180         Fold ~X op C as X op' ~C, where op' is the swapped comparison.
3181         (fold_binary): ~X eq/ne C is now handled in fold_comparison.
3182         Fold -X eq/ne -Y as X eq/ne Y.
3183
3184 2006-10-29  Richard Sandiford  <richard@codesourcery.com>
3185
3186         * config/mips/mips.md (mul<mode>3): Check ISA_HAS_MUL3 rather than
3187         GENERATE_MULT3_<MODE>.  Restrict the test to SImode.  Use ISA_HAS_MUL3
3188         rather than GENERATE_MULT3_SI in the various define_peephole2s.
3189         (mulsi3_mult3): Depend on ISA_HAS_MUL3 rather than GENERATE_MULT3_SI.
3190         Use an inclusive test for "mult" rather than "mul".
3191         (rotr<mode>3): Depend on ISA_HAS_ROR.
3192         * config/mips/mips.h (GENERATE_MULT3_SI): Delete in favor of
3193         ISA_HAS_MUL3.
3194         (GENERATE_MULT3_DI): Delete.
3195         (ISA_HAS_64BIT_REGS): Use consistent formatting.
3196         (ISA_HAS_MUL3): New macro.
3197         (ISA_HAS_CONDMOVE, ISA_HAS_8CC): Use consistent formatting.
3198         (ISA_HAS_FP4, ISA_HAS_MADD_MSUB, ISA_HAS_NMADD_NMSUB): Likewise.
3199         (ISA_HAS_CLZ_CLO): Likewise.
3200         (ISA_HAS_DCLZ_DCLO): Delete.
3201         (ISA_HAS_MULHI, ISA_HAS_MULS, ISA_HAS_MSAC): Require !TARGET_MIPS16.
3202         (ISA_HAS_MACC): Require !TARGET_MIPS16 for all ISAs, not just
3203         the VR4120 and VR4130.
3204         (ISA_HAS_MACCHI): Use consistent formatting.
3205         (ISA_HAS_ROTR_SI, ISA_HAS_ROTR_DI): Delete in favor of...
3206         (ISA_HAS_ROR): ...this new macro.
3207         (ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX): Use consistent formatting.
3208         (ISA_HAS_SEB_SEH, ISA_HAS_EXT_INS): Likewise.
3209         (ISA_HAS_LOAD_DELAY): Use ISA_MIPS1.
3210
3211 2006-10-29  Roger Sayle  <roger@eyesopen.com>
3212
3213         PR tree-optimization/15458
3214         * fold-const.c (fold_binary): Optimize ~X ^ C as X ^ ~C, where C
3215         is a constant.
3216
3217 2006-10-29  Richard Guenther  <rguenther@suse.de>
3218
3219         * config/i386/i386-protos.h (ix86_expand_trunc): Declare.
3220         (ix86_expand_truncdf_32): Likewise.
3221         * config/i386/i386.c (ix86_expand_trunc): New function expanding
3222         trunc inline for SSE math and -fno-trapping-math and if not
3223         optimizing for size.
3224         (ix86_expand_truncdf_32): Same for DFmode on 32bit archs.
3225         * config/i386/i386.md (btruncsf2, btruncdf2): Adjust expanders
3226         for expanding btrunc inline for SSE math.
3227
3228 2006-10-29  Joseph Myers  <joseph@codesourcery.com>
3229
3230         * config.gcc (i[34567]86-*-linux*): Handle --enable-targets=all.
3231         Handle tuning for bi-arch i[34567]86-*-linux* like that for
3232         i[34567]86-*-solaris2.1[0-9]*.
3233         * config/i386/linux64.h (TARGET_VERSION, MULTILIB_DEFAULTS):
3234         Define conditionally depending on TARGET_64BIT_DEFAULT.
3235         (SPEC_32, SPEC_64): Define.
3236         (LINK_SPEC): Use them.
3237         * doc/install.texi (--enable-targets=all): Document for x86-linux.
3238
3239 2006-10-29  Richard Guenther  <rguenther@suse.de>
3240
3241         * config/i386/i386-protos.h (ix86_expand_round): Declare.
3242         (ix86_expand_rounddf_32): Likewise.
3243         * config/i386/i386.c (ix86_expand_round): New function expanding
3244         round inline for SSE math and -fno-trapping-math and if not
3245         optimizing for size.
3246         (ix86_expand_rounddf_32): Same for DFmode on 32bit archs.
3247         * config/i386/i386.md (rounddf2, roundsf2): New pattern expanding
3248         round via ix86_expand_round.
3249
3250 2006-10-29  Richard Guenther  <rguenther@suse.de>
3251
3252         * config/i386/i386-protos.h (ix86_expand_floorceil): Declare.
3253         (ix86_expand_floorceildf_32): Likewise.
3254         * config/i386/i386.c (ix86_expand_sse_compare_mask): New
3255         static helper function.
3256         (ix86_expand_floorceil): Expander for floor and ceil to SSE
3257         math.
3258         (ix86_expand_floorceildf_32): Same for DFmode on 32bit archs.
3259         * config/i386/i386.md (floordf2): Adjust to enable floor
3260         expansion via ix86_expand_floorceil if TARGET_SSE_MATH and
3261         -fno-trapping-math is enabled and if not optimizing for size.
3262         (floorsf2, ceildf2, ceilsf2): Likewise.
3263         * config/i386/sse.md (sse_maskcmpsf3): New insn.
3264         (sse2_maskcmpdf3): Likewise.
3265
3266 2006-10-29  Richard Guenther  <rguenther@suse.de>
3267
3268         * builtins.c (expand_builtin_mathfn): Expand nearbyint as
3269         rint in case -fno-trapping-math is enabled.
3270         * config/i386/i386-protos.h (ix86_expand_rint): Declare.
3271         * config/i386/i386.c (ix86_gen_TWO52): New static helper function.
3272         (ix86_expand_sse_fabs): Likewise.
3273         (ix86_expand_rint): New function expanding rint to x87 or SSE math.
3274         * config/i386/i386.md (rintdf2): Enable for SSE math if
3275         -fno-trapping-math is enabled, use ix86_expand_rint for expansion.
3276         (rintsf2): Likewise.
3277
3278 2006-10-29  Richard Guenther  <rguenther@suse.de>
3279
3280         * genopinit.c (optabs): Change lfloor_optab and lceil_optab
3281         to conversion optabs.
3282         * optabs.c (init_optabs): Initialize lfloor_optab and lceil_optab
3283         as conversion optab.
3284         * optabs.h (enum optab_index): Remove OTI_lfloor and OTI_lceil.
3285         (enum convert_optab_index): Add COI_lfloor and COI_lceil.
3286         (lfloor_optab, lceil_optab): Adjust defines.
3287         * builtins.c (expand_builtin_int_roundingfn): Adjust for
3288         lfloor and lceil optabs now being conversion optabs.
3289         * config/i386/i386-protos.h (ix86_expand_lfloorceil): Declare.
3290         * config/i386/i386.c (ix86_expand_sse_compare_and_jump):
3291         New static helper function.
3292         (ix86_expand_lfloorceil): New function to expand lfloor and
3293         lceil inline.
3294         * config/i386/i386.md (lfloor<mode>2): Split into ...
3295         (lfloorxf<mode>2): ... x87 variant
3296         (lfloor<mode>di2, lfloor<mode>si2): ... and SSE variants
3297         using ix86_expand_lfloorceil.
3298         (lceil<mode>2, lceilxf<mode>2, lceil<mode>di2, lceil<mode>si2):
3299         Likewise.
3300         * doc/md.texi (lfloorMN, lceilMN): Document.
3301
3302 2006-10-29  Richard Sandiford  <richard@codesourcery.com>
3303
3304         * configure.ac (HAVE_AS_NO_SHARED): New AC_DEFINE.  Test for the
3305         -mno-shared assembler option on mips targets.
3306         * configure, config.in: Regenerate.
3307         * config/mips/linux.h (NO_SHARED_SPECS): New macro.
3308         (DRIVER_SELF_SPECS): Define to NO_SHARED_SPECS if non-empty.
3309         * config/mips/linux64.h (DRIVER_SELF_SPECS): Include NO_SHARED_SPECS.
3310
3311 2006-10-29  Richard Sandiford  <richard@codesourcery.com>
3312
3313         * config/mips/mips.c (mips_classify_symbol): Test DECL_WEAK as well
3314         as TREE_PUBLIC when deciding whether to return SYMBOL_GOT_GLOBAL.
3315
3316 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
3317
3318         * config/darwin.c, config/darwin.opt, config/ia64/itanium1.md,
3319         config/ia64/itanium2.md, real.c, tree-ssa-structalias.c: Fix
3320         comment typos.
3321
3322 2006-10-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3323
3324         PR middle-end/29335
3325         * builtins.c (do_mpfr_arg2, fold_builtin_hypot): New.
3326         (fold_builtin_pow): Evaluate constant arguments at compile-time
3327         using MPFR.
3328         (fold_builtin_1): Handle BUILT_IN_ATAN2 and BUILT_IN_HYPOT.
3329         (do_mpfr_ckconv): New helper function.
3330         (do_mpfr_arg1): Use do_mpfr_ckconv.
3331         (do_mpfr_arg2): New.
3332
3333 2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3334
3335         PR tree-opt/29271
3336         * doc/invoke.texi (-fdump-rtl-sched2) Fix file extension number.
3337         (-fdump-rtl-sched): Rename to ..
3338         (-fdump-rtl-sched1): here.  Also fix file extension number.
3339
3340 2006-10-28  Richard Guenther  <rguenther@suse.de>
3341
3342         * fold-const.c (maybe_canonicalize_comparison): Fix code
3343         to match comment.
3344
3345 2006-10-28  Uros Bizjak  <uros@kss-loka.si>
3346
3347         * config/i386/i386.h (GENERAL_REGNO_P): Use STACK_POINTER_REGNUM.
3348         (NON_QI_REG_P): Use IN_RANGE.
3349         (REX_INT_REGNO_P): Use IN_RANGE.
3350         (FP_REGNO_P): Use IN_RANGE.
3351         (SSE_REGNO_P): Use IN_RANGE.
3352         (REX_SSE_REGNO_P): Use IN_RANGE.
3353         (MMX_REGNO_P): Use IN_RANGE.
3354         (STACK_REGNO_P): New macro.
3355         (STACK_REG_P): Use STACK_REGNO_P.
3356         (NON_STACK_REG_P): Use STACK_REGNO_P.
3357         (REGNO_OK_FOR_INDEX_P): Use REX_INT_REGNO_P.
3358         (REGNO_OK_FOR_BASE_P): Use GENERAL_REGNO_P.
3359         (REG_OK_FOR_INDEX_NONSTRICT_P): Use REX_INT_REGNO_P.
3360         (REG_OK_FOR_BASE_NONSTRICT_P): Use GENERAL_REGNO_P.
3361         (HARD_REGNO_RENAME_OK): Use !IN_RANGE.
3362
3363 2006-10-28  Eric Botcazou  <ebotcazou@adacore.com>
3364
3365         * except.h (output_function_exception_table): Add 'const char*' param.
3366         * except.c (switch_to_exception_section): Add 'const char*' param.
3367         If named sections are supported and HAVE_LD_EH_GC_SECTIONS is defined
3368         and flag_function_sections is set, use a function-specific section.
3369         (output_function_exception_table): Add 'const char*' param.
3370         Adjust call to switch_to_exception_section.
3371         * final.c (rest_of_handle_final): Adjust calls to
3372         output_function_exception_table.
3373         * configure.ac (HAVE_LD_EH_GC_SECTIONS): New check.
3374         * config.in: Regenerate.
3375         * configure: Likewise.
3376
3377 2006-10-28  Richard Guenther  <rguenther@suse.de>
3378
3379         PR middle-end/26899
3380         * fold-const.c (maybe_canonicalize_comparison_1): Helper
3381         for maybe_canonicalize_comparison.
3382         (maybe_canonicalize_comparison): New function for canonicalizing
3383         comparison trees.
3384         (fold_comparison): Call it to canonicalize comparisons with
3385         constants involved.
3386
3387 2006-10-28  Richard Guenther  <rguenther@suse.de>
3388
3389         PR target/28806
3390         * builtins.c (expand_builtin_int_roundingfn_2): Expand
3391         BUILT_IN_LROUND and BUILT_IN_LLROUND from here.
3392         (expand_builtin): Adjust likewise.
3393         * genopinit.c (optabs[]): Add lround optab.
3394         * optabs.c (init_optabs): Initialize lround_optab.
3395         * optabs.h (enum convert_optab_index): Add COI_lround.
3396         (lround_optab): Define.
3397         * config/i386/i386-protos.h (ix86_expand_lround): Declare.
3398         * config/i386/i386.c (ix86_sse_copysign_to_positive): New
3399         static function.
3400         (ix86_expand_lround): New function.
3401         * config/i386/i386.md (lround<mode>di2, lround<mode>si2):
3402         New expanders.
3403         * doc/md.texi (lroundMN2): Document.
3404
3405 2006-10-28 Uros Bizjak <uros@kss-loka.si>
3406
3407         PR target/29377
3408         * config/h8300/h8300.c (h8300_emit_stack_adjustment): Change "size"
3409         argument to HOST_WIDE_INT.  Update function prototype.
3410         (round_frame_size): Change return type to HOST_WIDE_INT.  Change
3411         "size" argument to HOST_WIDE_INT.  Update function prototype.
3412
3413 2006-10-28 Uros Bizjak <uros@kss-loka.si>
3414
3415         * config/i386/i386.c (output_387_ffreep): Create output from a
3416         template string for !HAVE_AS_IX86_FFREEP.
3417
3418 2006-10-27  Eric Christopher  <echristo@apple.com>
3419
3420         * config/darwin.c: Fix formatting and grammar.
3421
3422 2006-10-27  Jan Hubicka  <jh@suse.cz>
3423
3424         * builtins.c (fold_builtin): Don't generate NOP_EXPR that is going
3425         to be thrown away soon when IGNORE is set.
3426         * tree-ssa-ccp.c (convert_to_gimple_builtin): Add IGNORE argument
3427         indicating when return value shall not be computed.
3428         * gimplify.c (internal_get_tmp_var): Avoid random tree sharing.
3429
3430 2006-10-27  Vladimir Makarov  <vmakarov@redhat.com>
3431
3432         * config/i386/i386.h (TARGET_GEODE):
3433         (TARGET_CPU_CPP_BUILTINS): Add code for geode.
3434         (TARGET_CPU_DEFAULT_geode): New macro.
3435         (TARGET_CPU_DEFAULT_k6, TARGET_CPU_DEFAULT_k6_2,
3436         TARGET_CPU_DEFAULT_k6_3, TARGET_CPU_DEFAULT_athlon,
3437         TARGET_CPU_DEFAULT_athlon_sse, TARGET_CPU_DEFAULT_k8,
3438         TARGET_CPU_DEFAULT_pentium_m, TARGET_CPU_DEFAULT_prescott,
3439         TARGET_CPU_DEFAULT_nocona, TARGET_CPU_DEFAULT_generic): Increase
3440         the macro values.
3441         (TARGET_CPU_DEFAULT_NAMES): Add geode.
3442         (processor_type): Add PROCESSOR_GEODE.
3443
3444         * config/i386/i386.md: Include geode.md.
3445         (cpu): Add geode.
3446
3447         * config/i386/i386.c (geode_cost): New initialized global
3448         variable.
3449         (m_GEODE, m_K6_GEODE): New macros.
3450         (x86_use_leave, x86_push_memory, x86_deep_branch, x86_use_sahf,
3451         x86_use_himode_fiop, x86_promote_QImode, x86_add_esp_4,
3452         x86_add_esp_8, x86_rep_movl_optimal, x86_ext_80387_constants,
3453         x86_schedule): Use m_K6_GEODE instead of m_K6.
3454         (x86_movx, x86_cmove): Set up m_GEODE.
3455         (x86_integer_DFmode_moves): Clear m_GEODE.
3456         (processor_target_table): Add entry for geode.
3457         (processor_alias_table): Ditto.
3458
3459         * config/i386/geode.md: New file.
3460
3461         * doc/invoke.texi: Add entry about geode processor.
3462
3463 2006-10-27  Mike Stump  <mrs@apple.com>
3464
3465         * config/darwin-c.c (darwin_cpp_builtins): Move __STATIC__ and
3466         __DYNAMIC__ from here back to ...
3467         * config/darwin.h (CPP_SPEC): ... here.
3468
3469 2006-10-26  Nathan Froyd  <froydnj@codesourcery.com>
3470             Nathan Sidwell  <nathan@codesourcery.com>
3471
3472         * ggc-common.c (ggc_min_heapsize_heuristic): Be more conservative
3473         when choosing the minimum heapsize.
3474
3475 2006-10-26  Nathan Froyd <froydnj@codesourcery.com>
3476
3477         * gcc/unwind-dw2.h: Move cfa-related variables into
3478         struct frame_state_reg_info to ensure that the CFA is properly
3479         handled when executing DW_CFA_{remember,restore}_state.
3480         * gcc/unwind-dw2.c, gcc/config/alpha/linux-unwind.h,
3481         gcc/config/alpha/vms-unwind.h, gcc/config/s390/tpf-unwind.h
3482         gcc/config/s390/linux-unwind.h, gcc/config/sparc/linux-unwind.h
3483         gcc/config/i386/linux-unwind.h, gcc/config/sh/linux-unwind.h
3484         gcc/config/rs6000/linux-unwind.h,
3485         gcc/config/rs6000/darwin-fallback.c, gcc/config/pa/linux-unwind.h,
3486         gcc/config/pa/hpux-unwind.h, gcc/config/mips/linux-unwind.h:
3487         Modify to use new cfa_* fields.
3488
3489 2006-10-26  Andreas Krebbel  <krebbel1@de.ibm.com>
3490
3491         * config/s390/s390.c (s390_init_frame_layout): Check positive
3492         frame_size.
3493
3494 2006-10-26  Ben Elliston  <bje@au.ibm.com>
3495
3496         * gimplify.c (get_name): Remove extraneous break.
3497         (gimplify_omp_for): Initialise ret with GS_OK.
3498
3499 2006-10-25  Steve Ellcey  <sje@cup.hp.com>
3500
3501         * config/ia64/hpux.h: Define _INCLUDE__STDC_A1_SOURCE in C++.
3502         Add unix98.o to link line.
3503
3504 2006-10-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3505
3506         PR middle-end/29335
3507         * builtins.c (fold_builtin_cbrt, fold_builtin_logarithm):
3508         Calculate compile-time constants using MPFR.
3509         (fold_builtin_1): Likewise handle BUILT_IN_ERF, BUILT_IN_ERFC,
3510         BUILT_IN_EXPM1 and BUILT_IN_LOG1P.
3511
3512 2006-10-25  Bob Wilson  <bob.wilson@acm.org>
3513
3514         * config/xtensa/lib2funcs.S: Use C-style comments.
3515
3516 2006-10-24  Nathan Froyd  <froydnj@codesourcery.com>
3517
3518         * dwarf2out.c (gen_compile_unit_die): Use IS_ABSOLUTE_PATH.
3519         (file_table_relative_p): Likewise.
3520         (dwarf2out_finish): Likewise.
3521         (file_name_acquire): Use DIR_SEPARATOR and DIR_SEPARATOR_2.
3522
3523 2006-10-25  Daniel Berlin  <dberlin@dberlin.org>
3524
3525         * tree-ssa-structalias.c (intra_create_variable_infos):
3526           Don't recreate nonlocal_all if it already exists.
3527
3528 2006-10-25  Richard Guenther  <rguenther@suse.de>
3529
3530         PR target/28803
3531         * optabs.h (enum optab_index): Remove OTI_lrint.
3532         (enum convert_optab_index): Add COI_lrint.
3533         (lrint_optab): Adjust.
3534         (expand_sfix_optab): Declare.
3535         * optabs.c (expand_sfix_optab): New function.
3536         (init_optabs): Init lrint_optab as conversion optab.
3537         * genopinit.c (lrint_optab): Change to a conversion optab.
3538         * builtins.c (expand_builtin_int_roundingfn_2): Adjust to
3539         expansion via conversion optab.
3540         * config/i386/i386.md (*fistdi2_1): Remove
3541         flag_unsafe_math_optimizations guard.
3542         (fistdi2, fistdi2_with_temp, *fist<mode>2_1, fist<mode>2,
3543         fist<mode>2_with_temp): Likewise.
3544         (lrint<mode>2): Split into...
3545         (lrintxf<mode>2): ... x87 part
3546         (lrint<mode>di2, lrint<mode>si2): ... and SSE parts.
3547         * config/i386/sse.md (sse_cvtss2si_2, sse_cvtss2_siq_2,
3548         sse2_cvtsd2si_2, sse2_cvtsd2siq_2): New insns for
3549         UNSPEC_FIX_NOTRUNC matching non-vector float modes.
3550         * doc/md.texi (lrintMN2): Document.
3551
3552 2006-10-25  Uros Bizjak  <uros@kss-loka.si>
3553
3554         PR target/28909
3555         * config/i386/sync.md ("sync_add<mode>", "sync_sub<mode>"):
3556         Use inc and dec instructions for TARGET_USE_INCDEC.
3557         ("*sync_compare_and_swap<mode>"): Fix -masm=intel template.
3558         ("sync_double_compare_and_swap<mode>"): Likewise.
3559         ("*sync_double_compare_and_swapdi_pic"): Likewise.
3560         ("*sync_compare_and_swap_cc<mode>"): Likewise.
3561         ("sync_double_compare_and_swap_cc<mode>"): Likewise.
3562         ("*sync_double_compare_and_swap_ccdi_pic"): Likewise.
3563         ("sync_old_add<mode>"): Likewise.
3564         ("sync_lock_test_and_set<mode>"): Likewise.
3565         ("sync_lock_test_and_set<mode>"): Likewise.
3566         ("sync_add<mode>"): Likewise.
3567         ("sync_sub<mode>"): Likewise.
3568         ("sync_ior<mode>"): Likewise.
3569         ("sync_and<mode>"): Likewise.
3570         ("sync_xor<mode>"): Likewise.
3571
3572 2006-10-25  Uros Bizjak  <uros@kss-loka.si>
3573
3574         * optabs.h (enum optab_index): Rename OTI_drem to OTI_remainder.
3575         (remainder_optab): Define corresponding macro.
3576         (drem_optab): Remove.
3577         * optabs.c (init_optabs): Initialize remainder_optab.  Remove
3578         drem_optab initialization.
3579         * genopinit.c (optabs): Implement remainder_optab using
3580         remainder?f3 patterns.  Remove drem_optab.
3581         * builtins.c (expand_builtin_mathfn_2): Handle
3582         BUILT_IN_REMAINDER{,F,L} using remainder_optab.
3583         (expand_builtin): Expand BUILT_IN_REMAINDER{,F,L} using
3584         expand_builtin_mathfn_2.
3585
3586         (expand_builtin) [BUILT_IN_FMOD, BUILT_IN_DREM]: Do not
3587         depend on flag_unsafe_math_optimizations.
3588
3589         * config/i386/i386.md ("remaindersf3", "remainderdf3")
3590         ("remainderxf3"): Renamed from "drem{s,d,x}f3" expanders.
3591         Do not depend on flag_unsafe_math_optimizations.  Use
3592         truncxf?f expander instead of truncxf?f_i387_noop.
3593
3594         ("fpremxf4", "fprem1xf4"): Do not depend on
3595         flag_unsafe_math_optimizations.
3596         ("fmodsf3", "fmoddf3", "fmodxf3"): Do not depend on
3597         flag_unsafe_math_optimizations.  Use truncxf?f expander
3598         instead of truncxf?f_i387_noop.
3599
3600         * doc/md.texi (fmod, remainder): Document standard named pattern.
3601
3602 2006-10-24  Richard Sandiford  <richard@codesourcery.com>
3603             David Daney  <ddaney@avtrex.com>
3604
3605         PR middle-end/29519
3606         * rtlanal.c (nonzero_address_p):  Remove check for values wrapping.
3607
3608 2006-10-25  Ben Elliston  <bje@au.ibm.com>
3609
3610         * doc/extend.texi (Variable Attributes): Typo fix.
3611
3612 2006-10-24  Uros Bizjak  <uros@kss-loka.si>
3613
3614         * config/i386/i386.h (FIRST_PSEUDO_REGISTER): Define to 54.
3615         (FIXED_REGISTERS, CALL_USED_REGISTERS): Add fpcr register.
3616         (REG_ALLOC_ORDER): Add one element to allocate fpcr register.
3617         (FRAME_POINTER_REGNUM): Update register number to 21.
3618         (REG_CLASS_CONTENTS): Update contents for added fpcr register.
3619         (HI_REGISTER_NAMES): Add "fpcr" for fpcr register.
3620
3621         * config/i386/i386.c (regclass_map): Add fpcr entry.
3622         (dbx_register_map, dbx64_register_map, svr4_dbx_register_map):
3623         Add fpcr entry.
3624         (print_reg): Assert REGNO (x) != FPCR_REG.
3625
3626         * config/i386/i386.md (FPCR_REG, R11_REG): New constants.
3627         (DIRFLAG_REG): Renumber.
3628         (x86_fnstcw_1, x86_fldcw_1): Use FPCR_REG instead of FPSR_REG.
3629         (*sibcall_1_rex64_v, *sibcall_value_1_rex64_v): Use R11_REG.
3630         (sse_prologue_save, *sse_prologue_save_insn): Renumber
3631         hardcoded SSE register numbers.
3632
3633         * config/i386/mmx.md (mmx_emms, mmx_femms): Renumber
3634         hardcoded MMX register numbers.
3635
3636 2006-10-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3637
3638         PR middle-end/29335
3639         * builtins.c (fold_builtin_sin, fold_builtin_atan): Remove.
3640         (do_mpfr_arg1): Add `min', `max' and `inclusive' arguments.
3641         Update all callers.
3642         (BUILT_IN_SIN, BUILT_IN_ATAN): Handle in main switch.
3643         (BUILT_IN_ASIN, BUILT_IN_ACOS, BUILT_IN_ATAN, BUILT_IN_ASINH,
3644         BUILT_IN_ACOSH, BUILT_IN_ATANH, BUILT_IN_SINH, BUILT_IN_COSH,
3645         BUILT_IN_TANH): Calculate compile-time arguments using MPFR.
3646
3647 2006-10-24  Richard Guenther  <rguenther@suse.de>
3648
3649         PR middle-end/28796
3650         * builtins.c (fold_builtin_classify): Use HONOR_INFINITIES
3651         and HONOR_NANS instead of MODE_HAS_INFINITIES and MODE_HAS_NANS
3652         for deciding optimizations in consistency with fold-const.c
3653         (fold_builtin_unordered_cmp): Likewise.
3654
3655 2006-10-24  Richard Guenther  <rguenther@suse.de>
3656
3657         * builtins.c (fold_builtin_floor): Fold floor (x) where
3658         x is nonnegative to trunc (x).
3659         (fold_builtin_int_roundingfn): Fold lfloor (x) where x is
3660         nonnegative to FIX_TRUNC_EXPR.
3661
3662 2006-10-24  Richard Guenther  <rguenther@suse.de>
3663
3664         PR tree-optimization/29567
3665         * tree-vrp.c (register_edge_assert_for_1): Fix wrong logic
3666         for TRUTH_NOT_EXPR.  Clarify comments.
3667
3668 2006-10-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3669
3670         PR middle-end/29335
3671         * builtins.c (fold_builtin_exponent): Evaluate constant arguments
3672         at compile-time using MPFR.  Change parameter VALUE to FUNC,
3673         update all callers.
3674         (do_mpfr_arg1): Rename `exact' to `inexact'.  Carefully check
3675         for overflow and underflow at all times and avoid folding in
3676         those cases.
3677
3678 2006-10-24  Ben Elliston  <bje@au.ibm.com>
3679
3680         * reload1.c: Formatting fixes.
3681
3682 2006-10-23  Zdenek Dvorak <dvorakz@suse.cz>
3683
3684         PR tree-optimization/14784
3685         * tree-flow.h (struct var_ann_d): Add is_heapvar bit.
3686         * tree-ssa-structalias.c (get_constraint_for,
3687         intra_create_variable_infos): Set is_heapvar.
3688         * tree-ssa-operands.c (access_can_touch_variable): Do not handle
3689         non-heapvar pointer variables specially.
3690
3691 2006-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3692
3693         PR middle-end/29335
3694         * builtins.c (fold_builtin_sin, fold_builtin_cos,
3695         fold_builtin_tan): Fold all constant arguments.  Take a "type"
3696         argument as necessary.
3697         (do_mpfr_arg1): New.
3698         * real.c, real.h (real_from_mpfr, mpfr_from_real): New.
3699
3700 2006-10-23  Bob Wilson  <bob.wilson@acm.org>
3701
3702         * config/xtensa/lib1funcs.asm: Use C-style comments.
3703
3704 2006-10-23 Rafael Avila de Espindola  <rafael.espindola@gmail.com>
3705
3706         * tree.c (local_define_builtin): Replace calls to
3707         lang_hooks.builtin_function with add_builtin_function.
3708         * c-objc-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
3709         c_builtin_function.
3710         * c-tree.h (builtin_function): Rename to c_builtin_function. Change
3711         the signature.
3712         * c-decl.c (builtin_function): Rename to c_builtin_function. Move
3713         common code to add_builtin_function.
3714         * langhooks.c (add_builtin_function): New function.
3715         (lhd_builtin_function): New function.
3716         * langhooks.h (struct lang_hooks): Change the signature of
3717         builtin_function.
3718         (add_builtin_function): New function.
3719         * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Replace
3720         calls to lang_hooks.builtin_function with add_builtin_function.
3721         * c-common.c (decl_builtin_1): Replace calls to
3722         lang_hooks.builtin_function with add_builtin_function.
3723         * config/alpha/alpha.c (alpha_init_builtins): Replace calls to
3724         lang_hooks.builtin_function with add_builtin_function.
3725         * config/frv/frv.c (def_builtin): Replace calls to
3726         lang_hooks.builtin_function with add_builtin_function.
3727         * config/s390/s390.c (s390_init_builtins): Replace calls to
3728         lang_hooks.builtin_function with add_builtin_function.
3729         * config/sparc/sparc.c (def_builtin): Replace calls to
3730         lang_hooks.builtin_function with add_builtin_function.
3731         * config/i386/i386.c (def_builtin): Replace calls to
3732         lang_hooks.builtin_function with add_builtin_function.
3733         * config/sh/sh.c (sh_media_init_builtins): Replace calls to
3734         lang_hooks.builtin_function with add_builtin_function.
3735         * config/c4x/c4x.c (c4x_init_builtins): Replace calls to
3736         lang_hooks.builtin_function with add_builtin_function.
3737         * config/stormy16/stormy16.c (xstormy16_init_builtins):
3738         Replace calls to lang_hooks.builtin_function with
3739         add_builtin_function.
3740         * config/iq2000/iq2000.c (def_builtin):
3741         Replace calls to lang_hooks.builtin_function with
3742         add_builtin_function.
3743         * config/ia64/ia64.c (def_builtin): Replace calls to
3744         lang_hooks.builtin_function with add_builtin_function.
3745         * config/rs6000/rs6000.c (def_builtin): Replace calls to
3746         lang_hooks.builtin_function with add_builtin_function.
3747         (altivec_init_builtins): Replace calls to
3748         lang_hooks.builtin_function with add_builtin_function.
3749         * config/arm/arm.c (def_mbuiltin): Replace calls to
3750         lang_hooks.builtin_function with add_builtin_function.
3751         (arm_init_tls_builtins): Replace calls to
3752         lang_hooks.builtin_function with add_builtin_function.
3753         * config/mips/mips.c (mips_init_builtins): Replace calls to
3754         lang_hooks.builtin_function with add_builtin_function.
3755         * config/bfin/bfin.c (def_builtin): Replace calls to
3756         lang_hooks.builtin_function with add_builtin_function.
3757         * langhooks-def.h (lhd_builtin_function): New function.
3758         (LANG_HOOKS_BUILTIN_FUNCTION): Define as lhd_builtin_function.
3759
3760 2006-10-23  Jakub Jelinek  <jakub@redhat.com>
3761
3762         * builtins.c (expand_builtin, maybe_emit_chk_warning): Handle
3763         BUILT_IN_STRNCAT_CHK.
3764
3765 2006-10-23  Jan Hubicka  <jh@suse.cz>
3766
3767         * builtins.c (expand_builtin_memmove): Remove ORIG_EXP argument;
3768         don't do conversion from memmove to memcpy here.
3769         (expand_builtin_bcopy, expand_builtin): Update call of
3770         expand_builtin_memmove.
3771         (fold_builtin_memory_op): Do folding of memmove to memcpy here.
3772
3773 2006-10-23  Paul Brook  <paul@codesourcery.com>
3774
3775         * stor-layout.c (start_record_layout): maximum_field_alignment
3776         overrides STRUCTURE_SIZE_BOUNDARY.
3777
3778 2006-10-23  Ulrich Weigand  <uweigand@de.ibm.com>
3779
3780         * config/s390/predicates.md ("bras_sym_operand"): Do not accept
3781         nonlocal function symbols if flag_pic.
3782
3783 2006-10-23  Richard Guenther  <rguenther@suse.de>
3784
3785         PR middle-end/27132
3786         PR middle-end/23295
3787         * builtins.c (fold_binary): Remove checks for flag_wrapv
3788         and flag_trapv where negate_expr_p covers these cases.
3789
3790 2006-10-23  Richard Guenther  <rguenther@suse.de>
3791
3792         PR middle-end/29548
3793         * fold-const.c (fold_plusminus_mult_expr): Check exact power
3794         of two on the absolute value.
3795         (fold_binary): Fold x * -C to -x * C if x is easily negatable
3796         and negating -C does not overflow.
3797
3798 2006-10-23  Richard Guenther  <rguenther@suse.de>
3799
3800         PR middle-end/21032
3801         * convert.c (convert_to_real): Fold (float)-x to -(float)x
3802         only if not flag_rounding_math.
3803
3804 2006-10-22  Richard Sandiford  <richard@codesourcery.com>
3805             Kaz Kojima  <kkojima@gcc.gnu.org>
3806
3807         PR target/28232
3808         * config/sh/sh.c (expand_block_move): Use a BLKmode rather than
3809         SImode memory reference for the source of a movua.
3810         * config/sh/sh.md (UNSPEC_MOVUA): New macro.
3811         (movua): Use an unspec instead of sign_extract.  Expect the source
3812         to have mode BLKmode.
3813         (extv, insv): Use a BLKmode rather than SImode memory reference
3814         for the source of a movua.
3815
3816 2006-10-22  Jeff Law  <law@redhat.com>
3817         Richard Guenther  <rguenther@suse.de>
3818
3819         PR tree-optimization/15911
3820         * tree-vrp.c (extract_code_and_val_from_cond): New function.
3821         (register_edge_assert_for_1): Likewise.
3822         (register_edge_assert_for): Handle &&/&/||/| in conditionals.
3823         (find_conditional_asserts): Adjust for new function signature.
3824         (find_assert_locations): Likewise.
3825
3826 2006-10-22  H.J. Lu  <hongjiu.lu@intel.com>
3827
3828         * config/i386/tmmintrin.h: Remove the duplicated content.
3829
3830 2006-10-22  H.J. Lu  <hongjiu.lu@intel.com>
3831
3832         * config.gcc (i[34567]86-*-*): Add tmmintrin.h to extra_headers.
3833         (x86_64-*-*): Likewise.
3834
3835         * config/i386/i386.c (pta_flags): Add PTA_SSSE3.
3836         (override_options): Check SSSE3.
3837         (ix86_builtins): Add IX86_BUILTIN_PHADDW, IX86_BUILTIN_PHADDD,
3838         IX86_BUILTIN_PHADDSW, IX86_BUILTIN_PHSUBW, IX86_BUILTIN_PHSUBD,
3839         IX86_BUILTIN_PHSUBSW, IX86_BUILTIN_PMADDUBSW,
3840         IX86_BUILTIN_PMULHRSW, IX86_BUILTIN_PSHUFB,
3841         IX86_BUILTIN_PSIGNB, IX86_BUILTIN_PSIGNW, IX86_BUILTIN_PSIGND,
3842         IX86_BUILTIN_PALIGNR, IX86_BUILTIN_PABSB, IX86_BUILTIN_PABSW,
3843         IX86_BUILTIN_PABSD, IX86_BUILTIN_PHADDW128,
3844         IX86_BUILTIN_PHADDD128, IX86_BUILTIN_PHADDSW128,
3845         IX86_BUILTIN_PHSUBW128, IX86_BUILTIN_PHSUBD128,
3846         IX86_BUILTIN_PHSUBSW128, IX86_BUILTIN_PMADDUBSW128,
3847         IX86_BUILTIN_PMULHRSW128, IX86_BUILTIN_PSHUFB128,
3848         IX86_BUILTIN_PSIGNB128, IX86_BUILTIN_PSIGNW128,
3849         IX86_BUILTIN_PSIGND128, IX86_BUILTIN_PALIGNR128,
3850         IX86_BUILTIN_PABSB128, IX86_BUILTIN_PABSW128 and
3851         IX86_BUILTIN_PABSD128.
3852         (bdesc_2arg): Add SSSE3.
3853         (bdesc_1arg): Likewise.
3854         (ix86_init_mmx_sse_builtins): Support SSSE3.
3855         (ix86_expand_builtin): Likewise.
3856         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Likewise.
3857
3858         * config/i386/i386.md (UNSPEC_PSHUFB): New.
3859         (UNSPEC_PSIGN): Likewise.
3860         (UNSPEC_PALIGNR): Likewise.
3861         Include mmx.md before sse.md.
3862
3863         * config/i386/i386.opt: Add -mssse3.
3864
3865         * config/i386/sse.md (ssse3_phaddwv8hi3): New pattern for SSSE3.
3866         (ssse3_phaddwv4hi3): Likewise.
3867         (ssse3_phadddv4si3): Likewise.
3868         (ssse3_phadddv2si3): Likewise.
3869         (ssse3_phaddswv8hi3): Likewise.
3870         (ssse3_phaddswv4hi3): Likewise.
3871         (ssse3_phsubwv8hi3): Likewise.
3872         (ssse3_phsubwv4hi3): Likewise.
3873         (ssse3_phsubdv4si3): Likewise.
3874         (ssse3_phsubdv2si3): Likewise.
3875         (ssse3_phsubswv8hi3): Likewise.
3876         (ssse3_phsubswv4hi3): Likewise.
3877         (ssse3_pmaddubswv8hi3): Likewise.
3878         (ssse3_pmaddubswv4hi3): Likewise.
3879         (ssse3_pmulhrswv8hi3): Likewise.
3880         (ssse3_pmulhrswv4hi3): Likewise.
3881         (ssse3_pshufbv16qi3): Likewise.
3882         (ssse3_pshufbv8qi3): Likewise.
3883         (ssse3_psign<mode>3): Likewise.
3884         (ssse3_psign<mode>3): Likewise.
3885         (ssse3_palignrti): Likewise.
3886         (ssse3_palignrdi): Likewise.
3887         (abs<mode>2): Likewise.
3888         (abs<mode>2): Likewise.
3889
3890         * config/i386/tmmintrin.h: New file.
3891
3892         * doc/extend.texi: Document SSSE3 built-in functions.
3893
3894         * doc/invoke.texi: Document -mssse3/-mno-ssse3 switches.
3895
3896 2006-10-22  Ira Rosen  <irar@il.ibm.com>
3897
3898         * tree-vect-transform.c (vectorizable_load): Use the type of the
3899         return value of the mask_for_load builtin to create realign_load
3900         stmt.
3901
3902 2006-10-22  Richard Sandiford  <richard@codesourcery.com>
3903
3904         * config/mips/mips.c (mips_split_const): Don't accept bare PLUS
3905         expressions.
3906
3907 2006-10-21  H.J. Lu  <hongjiu.lu@intel.com>
3908
3909         * config/i386/i386.md (UNSPEC_LDQQU): Renamed to ...
3910         (UNSPEC_LDDQU): This.
3911         * config/i386/sse.md (sse3_lddqu): Updated.
3912
3913 2006-10-21  Richard Guenther  <rguenther@suse.de>
3914
3915         * builtins.c (expand_builtin_int_roundingfn_2): New function.
3916         (expand_builtin): Use it to expand lrint instead of
3917         expand_builtin_mathfn.
3918
3919 2006-10-21  Uros Bizjak  <uros@kss-loka.si>
3920
3921         PR middle-end/28252
3922         * builtins.c (fold_builtin): Fold pow(x,1.0/3.0) as cbrt(x) if
3923         flag_unsafe_math_optimizations is set.
3924
3925 2006-10-21  Uros Bizjak  <uros@kss-loka.si>
3926
3927         PR target/19398
3928         * config/i386/i386.md (fix_trunc?f?i_sse): Add peephole2
3929         patterns to use memory input operand in x87->mem->XMM
3930         reload sequences.  Skip transformation for TARGET_K8.
3931
3932 2006-10-21  Uros Bizjak  <uros@kss-loka.si>
3933
3934         * config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Do not
3935         force operand1 to register if both operands are memory operands.
3936         (*extendsfdf2_mixed, *extendsfdf2_sse, *extendsfdf2_i387)
3937         (*extendsfxf2_i387, *extenddfxf2_i387): Do not disable pattern
3938         if both operands are memory operands.
3939         (truncdfsf2): Do not force operand1 to register if both operands
3940         are memory operands.
3941
3942 2006-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3943
3944         * Makefile.in (LIBS): Add $(GMPLIBS).
3945         * doc/install.texi: Update GMP and MPFR requirements.
3946         * doc/sourcebuild.texi (need_gmp): Delete.
3947
3948 2006-10-21  Richard Guenther  <rguenther@suse.de>
3949
3950         PR tree-optimization/3511
3951         * tree-ssa-pre.c (phi_translate): Fold CALL_EXPRs that
3952         got new invariant arguments during PHI translation.
3953
3954 2006-10-21  Richard Guenther  <rguenther@suse.de>
3955
3956         PR middle-end/26898
3957         * fold-const.c (fold_comparison): Fold signed comparisons
3958         of the form X +- C1 CMP Y +- C2.
3959
3960 2006-10-21  Richard Guenther  <rguenther@suse.de>
3961
3962         PR target/19116
3963         * config/i386/i386.c (override_options): Do not set MASK_IEEE_FP
3964         if flag_unsafe_math_optimizations is specified.  We have
3965         flag_finite_math_only for that.
3966         * config/i386/i386.md (sqrtxf2): Do not require TARGET_IEEE_FP
3967         or flag_unsafe_math_optimizations.
3968
3969 2006-10-21  Richard Guenther  <rguenther@suse.de>
3970
3971         * builtins.c (fold_builtin_classify): Fix typo.
3972
3973 2006-10-21  Richard Guenther  <rguenther@suse.de>
3974
3975         PR middle-end/28796
3976         * simplify-rtx.c (simplify_const_relational_operation):
3977         Do not constant-fold ORDERED and UNORDERED for
3978         flag_unsafe_math_optimizations but only we do not need to
3979         honor NaNs for the given mode.