OSDN Git Service

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