1 2006-11-27 Tobias Burnus <burnus@net-b.de>
3 * doc/invoke.texi: Fixed typo.
5 2006-11-27 Michael Matz <matz@suse.de>
6 Andreas Krebbel <krebbel1@de.ibm.com>
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.
14 2006-11-27 Jan Hubicka <jh@suse.cz>
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
29 * config/i386/i386.opt (minline-stringops-dynamically,
30 mstringop-strategy): New
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.
62 * invoke.texi (minline-stringops-dynamically): New command line option.
63 (mstringop-strategy): Likewise.
65 2006-11-27 Jan Hubicka <jh@suse.cz>
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
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
79 2006-11-27 Richard Guenther <rguenther@suse.de>
80 Zdenek Dvorak <dvorakz@suse.cz>
82 * target.h (struct gcc_target): Add builtin_vectorized_function
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
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.
98 2006-11-27 Richard Guenther <rguenther@suse.de>
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.
105 2006-11-27 Ira Rosen <irar@il.ibm.com>
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
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
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
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
128 (vect_update_ivs_after_vectorizer): Use the correct type in stmt
131 2006-11-27 Uros Bizjak <ubizjak@gmail.com>
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.
139 * config/i386/i386.md: Add new splitter pattern to split
140 float_extended load of constant from constant pool into
143 2006-11-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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
151 * builtins.c (fold_builtin_fmin_fmax): Handle NaN arguments.
153 2006-11-26 Razya Ladklesky <razya@il.ibm.com>
155 * testsuite/gcc.dg/ipa/ipa-6.c: New.
157 2006-11-26 Razya Ladklesky <razya@il.ibm.com>
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.
163 2006-11-25 Uros Bizjak <ubizjak@gmail.com>
165 * reg-stack.c (get_true_reg): Fix UNSPEC_TRUNC_NOOP handling.
167 2006-11-25 Steven Bosscher <steven@gcc.gnu.org>
169 * cse.c (cse_altered): Remove.
170 (record_jump_equiv): Make true/false argument a bool instead
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
177 (cse_basic_block): Check any_condjump_p before calling
179 (cse_main): Don't set/check cse_altered. Remove USE_C_ALLOCA.
181 2006-11-25 Brooks Moses <brooks.moses@codesourcery.com>
183 * c.opt: Remove -ffixed-form, -ffixed-line-length-none, and
184 -ffixed-line-length-* options.
186 2006-11-25 Uros Bizjak <ubizjak@gmail.com>
188 * config/i386/i386.md (fpremxf4): Rename to fpremxf4_i387.
189 (fprem1xf4): Rename to fprem1xf4_i387.
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.
197 2006-11-25 Joseph Myers <joseph@codesourcery.com>
199 * function.c (instantiate_virtual_regs_in_insn): Call force_reg
200 inside start_sequence / end_sequence pair.
202 2006-11-25 Steven Bosscher <steven@gcc.gnu.org>
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
208 * cfgrtl.c (commit_one_edge_insertion): Don't set bb->aux when
210 (commit_edge_insertions): Do not allow insertion of instructions
211 with control flow insns when in cfglayout mode.
213 2006-11-25 Zdenek Dvorak <dvorakz@suse.cz>
215 * tree-vrp.c (execute_vrp): Do not pass loops structure through
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):
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):
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):
298 2006-11-24 Uros Bizjak <ubizjak@gmail.com>
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.
314 (fmodsf3, fmoddf3, remaindersf3, remainderdf3): Use noop
317 * reg-stack.c (get_true_reg): Handle UNSPEC_TRUNC_NOOP.
319 2006-11-24 Jakub Jelinek <jakub@redhat.com>
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.
329 * c-common.c (handle_vector_size_attribute): Disallow VECTOR_TYPE
330 or UNION_TYPE inner types.
332 2006-11-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
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
341 2006-11-24 Joseph Myers <joseph@codesourcery.com>
343 * config/rs6000/eabispe.h (TARGET_DEFAULT): Include
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
350 2006-11-24 Andreas Krebbel <krebbel1@de.ibm.com>
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.
356 2006-11-23 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
358 * pa.c (return_addr_rtx): Change 0xe0400002 to -532676606.
360 2006-11-24 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
364 * c-common.c (conversion_warning): New.
365 (convert_and_check): Call conversion_warning unless there is an
367 * doc/invoke.texi (-Wconversion): Update description.
369 2006-11-23 Daniel Berlin <dberlin@dberlin.org>
371 * tree-ssa-alias.c (tree_pointer_compare): New function.
372 (compact_name_tags): New function.
373 (group_aliases): Call compact_name_tags.
375 2006-11-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
377 * real.h (real_isinteger): Declare.
378 * real.c (real_isinteger): Define.
379 * builtins.c (integer_valued_real_p): Use it.
381 2006-11-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
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.
394 2006-11-23 Andrew Pinski <pinskia@gmail.com>
396 * predict.c (tree_estimate_probability): Check to make
397 sure current_loops is non null before calling flow_loops_dump.
399 2006-11-23 Bernd Schmidt <bernd.schmidt@analog.com>
401 * var-tracking.c (emit_note_insn_var_location): Revert previous patch.
403 2006-11-23 David Ung <davidu@mips.com>
405 * config/mips/mips.h (ISA_HAS_FP4): Add MIPS32R2 + 64bit fpu
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
418 (mips_class_max_nregs): Handle float registers case seperately.
419 * config/mips/mips.md (define_constants): Add UNSPEC_MFHC1,
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.
430 2006-11-23 Bernd Schmidt <bernd.schmidt@analog.com>
432 * var-tracking.c (emit_note_insn_var_location): Take care not to
433 cause verify_flow_info failures.
435 2006-11-22 Daniel Berlin <dberlin@dberlin.org>
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.
460 (collapse_nodes): Ditto.
461 (process_unification_queue): 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.
470 2006-11-23 Ulrich Weigand <uweigand@de.ibm.com>
472 * config/spu/spu_intrinsics.h (SPU_RdEventStatMask): Rename to
474 * config/spu/spu_mfcio.h (spu_read_event_mask): Update.
476 * config/spu/spu_mfcio.h (struct mfc_list_element): Change width
479 2006-11-23 Ben Elliston <bje@au.ibm.com>
481 * config/spu/spu-elf.h (LIB_SPEC): Do not link with -lc_p.
483 2006-11-23 Zdenek Dvorak <dvorakz@suse.cz>
485 PR tree-optimization/29921
486 * fold-const.c (operand_equal_p): Without HONOR_SIGNED_ZEROS, consider
487 signed and unsigned zero equal.
489 2006-11-22 Peter Bergner <bergner@vnet.ibm.com>
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.
495 2006-11-22 Joseph Myers <joseph@codesourcery.com>
497 * config/rs6000/spe.md (SPE64): New mode macro.
498 (mov_sidf_e500_subreg0): Change to mov_si<mode>_e500_subreg0. Add
500 (mov_si<mode>_e500_subreg0_2): New.
501 (mov_sidf_e500_subreg4): Change to mov_si<mode>_e500_subreg4. Add
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
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.
512 2006-11-22 Kaz Kojima <kkojima@gcc.gnu.org>
515 2006-11-12 Kaz Kojima <kkojima@gcc.gnu.org>
516 * reorg.c (emit_delay_sequence): Copy the delay slot insn.
518 2006-11-22 Bernd Schmidt <bernd.schmidt@analog.com>
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
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.
534 2006-11-22 Ira Rosen <irar@il.ibm.com>
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
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
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
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
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
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
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
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.
594 2006-11-22 Steven Bosscher <steven@gcc.gnu.org>
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.
605 2006-11-22 Zdenek Dvorak <dvorakz@suse.cz>
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.
613 2006-11-22 Zdenek Dvorak <dvorakz@suse.cz>
615 * tree-loop-linear.c (linear_transform_loops): Use single_exit accessor
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):
626 * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
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):
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
649 2006-11-22 Zdenek Dvorak <dvorakz@suse.cz>
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.
655 2006-11-21 Bob Wilson <bob.wilson@acm.org>
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
673 2006-11-21 Janis Johnson <janis187@us.ibm.com>
675 * config/dfp-bits.c (DFP_TO_INT): Remove code to saturate result
676 of conversion that doesn't fit.
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.
682 * config/dfp-bit.c (dfp_binary_func): Fix typedef.
684 2006-11-21 Douglas Gregor <doug.gregor@gmail.com>
686 * c-common.h (enum rid): Add RID_STATIC_ASSERT.
688 2006-11-21 Richard Guenther <rguenther@suse.de>
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.
695 2006-11-21 Bernd Schmidt <bernd.schmidt@analog.com>
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
703 (add_to_reg): Renamed from add_to_sp. All callers changed. Lose some
706 * config/bfin/bfin.c (hard_regno_mode_ok): Only allow first 31
708 (bfin_register_move_cost): Bump costs if trying to move plain
709 integer values through accumulators.
711 2006-11-21 Ben Elliston <bje@au.ibm.com>
713 * config/spu/spu.c (spu_expand_vector_init): Initialise x.
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>
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.
754 2006-11-21 Zdenek Dvorak <dvorakz@suse.cz>
756 * cfgloopmanip.c (add_loop, duplicate_loop): Do not set level
758 * cfgloop.c (flow_loop_level_compute, flow_loops_level_compute):
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.
764 2006-11-21 Zdenek Dvorak <dvorakz@suse.cz>
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
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.
780 2006-11-20 Zack Weinberg <zackw@panix.com>
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.
787 2006-11-20 Andrew Pinski <andrew_pinski@playstation.sony.com>
790 * tree-sra.c (single_scalar_field_in_record_p): New function.
791 (decide_block_copy): Use it.
793 2006-11-20 David Daney <ddaney@avtrex.com>
795 * config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
796 PC to point to following instruction.
798 2006-11-20 Anatoly Sokolov <aesok@post.ru>
802 * config/avr/avr.h (OBJECT_FORMAT_ELF): Define.
804 * config/avr/avr.h (DWARF2_DEBUGGING_INFO): Define.
806 2006-11-20 J"orn Rennecke <joern.rennecke@st.com>
808 * config.gcc (sh*-superh-elf): Add t-superh to tmake_file.
809 Add sh/superh.h to tm_file.
811 2006-11-20 Carlos O'Donell <carlos@codesourcery.com>
812 Mark Mitchell <mark@codesourcery.com>
814 * cppdefault.c: Define cpp_PREFIX, cpp_PREFIX_len, and
816 (cpp_relocated): New function.
817 * cppdefault.h: Declare cpp_PREFIX, cpp_PREFIX_len, gcc_exec_prefix
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.
823 2006-11-20 Bernd Schmidt <bernd.schmidt@analog.com>
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
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
835 (TARGET_CANNOT_FORCE_CONST_MEM): New macro.
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
847 (TARGET_SWITCHES): Add -mleaf-id-shared-library and -msep-data.
848 * doc/invoke.texi (Blackfin Options): Document new switches.
850 * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Handle some
851 edge cases with local functions and TARGET_ID_SHARED_LIBRARY.
853 * tree-ssa-loop-ivopts.c (get_address_cost): Do not artificially
854 inflate costs for addresses with an out-of-bounds address.
856 2006-11-19 Andrew Pinski <pinskia@gmail.com>
859 * fwprop.c (loops): Remove.
860 (forward_propagate_into): Use current_loops instead of
862 (fwprop_init): Call loop_optimizer_init instead of
864 (fwprop_done): Call loop_optimizer_finalize instead of
866 (fwprop): Use current_loops instead of loops.
868 2006-11-19 Gabriel Dos Reis <gdr@integrable-solutions.net>
871 * c-opts.c (c_common_handle_option): Enable -Wwrite-strings if -Wall.
873 2006-11-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
876 * pa.c (emit_move_sequence): Don't split constants with PLUS for modes
877 larger than BITS_PER_WORD.
879 2006-11-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
883 * stor-layout.c (set_sizetype): Limit precision of *bitsizetypes types
884 to MAX_FIXED_MODE_SIZE.
886 2006-11-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
888 * builtins.c (integer_valued_real_p): Handle fmin/fmax.
889 (fold_builtin_fmin_fmax): New.
890 (fold_builtin_1): Use it.
892 * fold-const.c (fold_strip_sign_ops): Handle copysign.
894 2006-11-18 Richard Guenther <rguenther@suse.de>
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.
902 2006-11-18 Vladimir Makarov <vmakarov@redhat.com>
904 * doc/invoke.texi (core2): Add item.
906 * config/i386/i386.h (TARGET_CORE2, TARGET_CPU_DEFAULT_core2): New
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.
913 * config/i386/i386.md (cpu): Add core2.
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.
930 2006-11-18 Aldy Hernandez <aldyh@redhat.com>
932 * doc/invoke.texi: Fix mno-isel typo.
934 2006-11-18 Joseph Myers <joseph@codesourcery.com>
936 * config/rs6000/spe.md (movv4hi_internal): Add alternative for
937 easy vector constant loads.
939 2006-11-18 Joseph Myers <joseph@codesourcery.com>
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
947 2006-11-17 DJ Delorie <dj@redhat.com>
949 * reload1.c (reloads_unique_chain): New.
950 (reloads_conflict): Call it.
952 2006-11-17 Bob Wilson <bob.wilson@acm.org>
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.
963 (*subx2, *subx4, *subx8): Delete.
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.
978 2006-11-17 Bob Wilson <bob.wilson@acm.org>
980 * config/xtensa/xtensa.md (tstsi): Delete
982 2006-11-17 Bob Wilson <bob.wilson@acm.org>
984 * config/xtensa/xtensa.md (entry): Do not emit .frame directive.
986 2006-11-17 Bob Wilson <bob.wilson@acm.org>
988 * config/xtensa/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
990 2006-11-17 Bob Wilson <bob.wilson@acm.org>
992 * config/xtensa/lib1funcs.asm (__umulsidi3): Restore a0 on exit.
994 2006-11-17 Zdenek Dvorak <dvorakz@suse.cz>
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
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
1022 (redirect_edge_and_branch_force, split_block, delete_basic_block,
1023 split_edge, merge_blocks, make_forwarder_block, duplicate_block):
1025 * cfgloopanal.c (mark_irreducible_loops): Work if the function contains
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
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
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
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
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.
1077 2006-11-17 Zdenek Dvorak <dvorakz@suse.cz>
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
1084 (visit_assignment): Ignore VDEFs of read-only variables.
1086 2006-11-17 Zdenek Dvorak <dvorakz@suse.cz>
1088 * tree-vect-transform.c (vect_create_epilog_for_reduction): Fix
1090 (vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
1091 vect_gen_niters_for_prolog_loop): Fold the emited expressions.
1093 2006-11-17 Zdenek Dvorak <dvorakz@suse.cz>
1095 * tree-ssa-alias.c (new_type_alias): Do not use offset of expr to
1096 select subvars of var.
1098 2006-11-17 Jakub Jelinek <jakub@redhat.com>
1101 * tree-ssa-forwprop.c (simplify_switch_expr): Don't
1102 optimize if DEF doesn't have integral type.
1104 2006-11-16 Mike Stump <mrs@apple.com>
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.
1114 2006-11-16 Richard Earnshaw <rearnsha@arm.com>
1116 * arm.h (CONSTANT_ALIGNMENT): Don't over-align strings when
1117 optimizing for size.
1119 2006-11-16 Mike Stump <mrs@apple.com>
1121 * Makefile.in (targhooks.o): Add $(OPTABS_H).
1123 2006-11-16 Dirk Mueller <dmueller@suse.de>
1125 * tree-vrp.c (get_value_range): Use XCNEW instead
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.
1139 2006-11-16 Eric Botcazou <ebotcazou@adacore.com>
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.
1148 2006-11-16 Joseph Myers <joseph@codesourcery.com>
1150 * config/rs6000/spe.md (frob_di_df_2): Handle non-offsettable
1153 2006-11-16 Richard Earnshaw <rearnsha@arm.com>
1155 * arm.md (abssi2): Allow Thumb as well. Use an SImode scratch for
1157 (arm_neg_abssi2): Renamed from neg_abssi2.
1158 (thumb_abssi2, thumb_neg_abssi2): New patterns with splitters.
1160 2006-11-16 Uros Bizjak <ubizjak@gmail.com>
1162 * config/i386/i386.c (ix86_function_sseregparm): Fix comment:
1163 number of arguments passed to local functions in SSE registers is 3.
1165 * doc/invoke.texi (Function Attributes) [sseregparm]: Correct
1166 number of arguments passed in SSE registers to 3.
1168 2006-11-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
1171 * cfgrtl.c (rtl_delete_block): Move the code for getting last insn of
1173 (get_last_bb_insn): ... new global function.
1174 (basic_block.h): Declare it.
1175 * haifa-sched.c (create_recovery_block): Use it.
1177 2006-11-15 H.J. Lu <hongjiu.lu@intel.com>
1180 * real.c (mpfr_from_real): Call mpfr_set_str before gcc_assert.
1182 2006-11-15 Paul Brook <paul@codesourcery.com>
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.
1189 2006-11-15 Bernd Schmidt <bernd.schmidt@analog.com>
1191 * tree-ssa-loop-ivopts.c (get_address_cost): Make sure memory
1192 addresses we generate for testing are aligned.
1194 2006-11-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
1197 * fold-const.c (fold_indirect_ref_1): Fold *&CONST_DECL down
1198 to what is the const decl is a place holder for.
1200 2006-11-15 Uros Bizjak <ubizjak@gmail.com>
1202 * config/i386/i386.opt: New target option -mx87regparm.
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.
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
1216 (init_cumulative_args): Initialize x87_nregs and float_in_x87
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.
1224 * reg-stack.c (convert_regs_entry): Disable NaN load for
1225 stack registers that are used for argument passing.
1227 * doc/extend.texi: Document x87regparm function attribute.
1228 * doc/invoke.texi: Document -mx87regparm.
1230 2006-11-15 Bernd Schmidt <bernd.schmidt@analog.com>
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.
1238 2006-11-15 Rask Ingemann Lambertsen <rask@sygehus.dk>
1239 J"orn Rennecke <joern.rennecke@st.com>
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.
1245 2006-11-15 Bernd Schmidt <bernd.schmidt@analog.com>
1247 * tree-ssa-loop-ivopts.c (determine_iv_costs): Fix formatting.
1249 * config/bfin/bfin.c (legitimize_pic_address): Lose dead code
1250 that tests for CONSTANT_POOL_ADDRESS_P.
1252 2006-11-15 Jakub Jelinek <jakub@redhat.com>
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.
1261 2006-11-15 Paolo Bonzini <bonzini@gnu.org>
1264 * gimplify.c (fold_indirect_ref_rhs): Use
1265 STRIP_USELESS_TYPE_CONVERSION rather than STRIP_NOPS.
1267 2006-11-14 Richard Earnshaw <rearnsha@arm.com>
1269 * expmed.c (emit_store_flag_1): New function.
1270 (emit_store_flag): Call it. If we can't find a suitable scc 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.
1280 2006-11-14 Caroline Tice <ctice@apple.com>
1282 * dwarf2out.c (debug_pubtypes_section): New static global variable.
1283 (pubname_entry): Add DEF_VEC_O and DEF_VEC_ALLOC_O statements for
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
1309 * config/darwin.h (DEBUG_PUBTYPES_SECTION): Define new global variable.
1311 2006-11-14 Joseph Myers <joseph@codesourcery.com>
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.
1318 2006-11-14 Eric Christopher <echristo@apple.com>
1320 * configure: Regenerate with autoconf 2.59.
1322 2006-11-14 Daniel Berlin <dberlin@dberlin.org>
1324 Fix PR tree-optimization/27755
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+.
1346 2006-11-14 Paolo Bonzini <bonzini@gnu.org>
1348 PR rtl-optimization/29798
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.
1355 2006-11-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1357 * fold-const.c (fold_strip_sign_ops): Handle COMPOUND_EXPR and
1360 2006-11-13 DJ Delorie <dj@redhat.com>
1362 * config/m32c/m32c.c (m32c_prepare_shift): Use a separate
1363 temporary for intermediates.
1365 2006-11-13 Kaz Kojima <kkojima@gcc.gnu.org>
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}.
1371 2006-11-13 Roger Sayle <roger@eyesopen.com>
1373 * fold-const.c (optimize_bit_field_compare): Recursively call
1374 fold when simplifying non-constant comparisons between bit-fields.
1376 2006-11-13 Jakub Jelinek <jakub@redhat.com>
1378 * configure.ac: Add changequote around __LONG_DOUBLE_MATH_OPTIONAL
1380 * configure: Rebuilt.
1382 2006-11-13 Andrew Pinski <andrew_pinski@playstation.sony.com>
1384 * config/rs6000/cell.md: New file.
1385 * config/rs6000/rs6000.c (rs6000_cell_dont_microcode): New
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
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
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.
1412 2006-11-13 Jakub Jelinek <jakub@redhat.com>
1414 * configure.ac (ld_vers): Parse GNU ld version 2.17.50.0.3-6 20060715
1416 * configure: Rebuilt.
1418 2006-11-13 Richard Guenther <rguenther@suse.de>
1420 * config/i386/i386.c (ix86_expand_lround): Handle expand_simple_binop
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.
1430 2006-11-13 Carlos O'Donell <carlos@codesourcery.com>
1431 Mark Mitchell <mark@codesourcery.com>
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.
1443 2006-11-13 H.J. Lu <hongjiu.lu@intel.com>
1445 * config/i386/i386.c: Fix a typo in comment.
1447 2006-11-13 Michael Matz <matz@suse.de>
1449 * genemit.c (gen_expand): Allocate enough memory.
1451 2006-11-13 Joseph Myers <joseph@codesourcery.com>
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.
1461 2006-11-13 H.J. Lu <hongjiu.lu@intel.com>
1462 Zdenek Dvorak <dvorakz@suse.cz>
1464 PR tree-optimization/29680
1465 * tree-ssa-operands.c (access_can_touch_variable): Revert fix for
1468 2006-11-12 Jason Merrill <jason@redhat.com>
1469 Andrew Pinski <pinskia@physics.uc.edu>
1472 * gimplify.c (gimplify_init_constructor): Don't reduce TREE_CONSTANT
1474 * tree-cfg.c (verify_expr): Don't look into TREE_CONSTANT
1476 * expmed.c (make_tree): Handle CONST, SYMBOL_REF.
1477 * tree.c (build_vector): Handle non-_CST elements.
1479 2006-11-12 Kaz Kojima <kkojima@gcc.gnu.org>
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.
1490 2006-11-12 Roger Sayle <roger@eyesopen.com>
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.
1497 2006-11-12 Daniel Berlin <dberlin@dberlin.org>
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.
1503 2006-11-12 Michael Matz <matz@suse.de>
1504 Roger Sayle <roger@eyesopen.com>
1506 PR rtl-optimization/29797
1507 * ifcvt.c (noce_try_bitop): Correct calculation of bitnum on
1508 BITS_BIG_ENDIAN targets.
1510 2006-11-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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.
1518 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
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.
1525 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
1527 * tree-ssa-loop.c (tree_vectorize): Return the result of
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.
1534 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
1536 * tree-ssa-loop-prefetch.c (schedule_prefetches): Cleanup and improve
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.
1546 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
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
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
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
1585 (struct loop): Changed type of estimated_nb_iterations to double_int.
1586 Added estimate_state field.
1587 (record_estimate): Declaration removed.
1589 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
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):
1606 * config/i386/i386.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
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):
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.
1623 2006-11-12 Roger Sayle <roger@eyesopen.com>
1625 PR tree-optimization/13827
1626 * fold-const.c (fold_binary) <EQ_EXPR, NE_EXPR>: Fold (X&C) op (Y&C)
1629 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
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.
1638 2006-11-12 Andreas Schwab <schwab@suse.de>
1640 * except.c (sjlj_emit_function_enter): Remove unused variable.
1642 2006-11-11 Roger Sayle <roger@eyesopen.com>
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.
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.
1658 2006-11-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
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
1665 2006-11-12 Jie Zhang <jie.zhang@analog.com>
1668 2006-11-11 Jie Zhang <jie.zhang@analog.com>
1669 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __bfin__
1672 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Use builtin_define_std
1673 instead of builtin_define for bfin and BFIN.
1675 2006-11-11 Jie Zhang <jie.zhang@analog.com>
1677 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __bfin__
1680 2006-11-11 Jan Hubicka <jh@suse.cz>
1682 * extend.texi (__builtin_expect): We no longer require second argument
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.
1702 2006-11-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1704 * tree-pretty-print.c (dump_generic_node): Print sign of Inf.
1706 2006-11-11 Jan Hubicka <jh@suse.cz>
1708 * predict.c (predict_loops): Kill RTL variant.
1710 2006-11-11 Jan Hubicka <jh@suse.cz>
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):
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
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.
1745 2006-11-11 Richard Guenther <rguenther@suse.de>
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.
1763 2006-11-11 Zdenek Dvorak <dvorakz@suse.cz>
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.
1769 2006-11-11 Richard Sandiford <richard@codesourcery.com>
1772 * stmt.c (expand_asm_operands): Use EXPAND_INITIALIZER if the
1773 constraints accept neither registers or memories.
1775 2006-11-11 Jie Zhang <jie.zhang@analog.com>
1777 * config/bfin/bfin.h (FUNCTION_PROFILER): Don't use LABELNO.
1778 (NO_PROFILE_COUNTERS): Define as 1.
1780 2006-11-10 Roger Sayle <roger@eyesopen.com>
1782 * fold-const.c (operand_equal_p) <INTEGER_CST, REAL_CST, VECTOR_CST>:
1783 Don't check for TREE_CONSTANT_OVERFLOW when comparing constants.
1785 2006-11-10 Peter Bergner <bergner@vnet.ibm.com>
1787 * rtl.h (MEM_COPY_ATTRIBUTES): Copy MEM_POINTER.
1789 2006-11-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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.
1795 * fold-const.c (negate_mathfn_p): Add BUILT_IN_ERF.
1797 2006-11-10 Roger Sayle <roger@eyesopen.com>
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.
1804 2006-11-10 Jan Hubicka <jh@suse.cz>
1806 * cse.c (cse_process_notes): Copy the propagated value.
1807 * local-alloc.c (update_equiv_regs): Copy the memory RTX to be used
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
1815 2006-11-10 Jan Hubicka <jh@suse.cz>
1817 * final.c (final): Walk from first instruction.
1818 * cfglayout.c (insn_locators_initialize): Remove line number notes.
1820 2006-11-10 Uros Bizjak <ubizjak@gmail.com>
1823 * config/i386/sse.md (smulv8hi3_highpart): Change from define_insn
1825 (umulv8hi3_highpart): Ditto.
1826 (vec_widen_smult_hi_v8hi): New expander.
1827 (vec_widen_smult_lo_v8hi): Ditto.
1829 2006-11-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1832 * builtins.c (do_mpfr_arg3): New.
1833 (fold_builtin_1): Handle builtins fma, fmin and fmax.
1835 2006-11-09 Eric Christopher <echristo@apple.com>
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.
1847 2006-11-09 Steve Ellcey <sje@cup.hp.com>
1849 * config/ia64/ia64.c (ia64_hpux_init_libfuncs): Use HP-UX millicode
1850 routines for integer division.
1852 2006-11-09 Daniel Jacobowitz <dan@codesourcery.com>
1854 * config/arm/t-linux (LIBGCC2_DEBUG_CFLAGS): Delete.
1856 2006-11-09 Serge Belyshev <belyshev@depni.sinp.msu.ru>
1859 * fold-const.c (fold_binary) <EQ_EXPR>: Fix typo in variable name.
1861 2006-11-09 Andreas Krebbel <krebbel1@de.ibm.com>
1863 * simplify-rtx.c (avoid_constant_pool_reference): Avoid calling
1864 simplify_subreg with BLKmode outer mode.
1866 2006-11-08 Brooks Moses <brooks.moses@codesourcery.com>
1868 * doc/invoke.texi: Minor formatting fixes in option lists.
1870 2006-11-08 Zdenek Dvorak <dvorakz@suse.cz>
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
1879 (get_value): Always use get_default_value on uninitialized
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
1891 2006-11-08 Andrew Pinski <Andrew_Pinski@playstation.sony.com>
1893 * tree-pretty-print.c (dump_generic_node) <INTEGER_CST>: Use
1894 HOST_WIDE_INT_PRINT_DOUBLE_HEX instead of format buffer.
1896 2006-11-08 Roger Sayle <roger@eyesopen.com>
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.
1907 2006-11-08 Carlos O'Donell <carlos@codesourcery.com>
1909 * configure.ac: Do not set PREFIX_INCLUDE_DIR if $prefix is NONE.
1910 * configure: Regenerate.
1912 2006-11-08 Dorit Nuzman <dorit@il.ibm.com>
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):
1927 * tree-vect-generic.c (expand_vector_operations_1): Consider correct
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
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
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.
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.
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
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.
1994 2006-11-08 Richard Henderson <rth@redhat.com>
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.
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.
2009 2006-11-08 Dorit Nuzman <dorit@il.ibm.com>
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
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
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.
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):
2033 (vec_pack_mod_optab, vec_pack_ssat_optab, vec_pack_usat_optab): New
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.
2040 2006-11-08 Richard Henderson <rth@redehat.com>
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.
2048 2006-11-08 Dorit Nuzman <dorit@il.ibm.com>
2050 * tree-vect-transform.c (vectorizable_reduction): Support multiple
2052 (vect_transform_stmt): Removed redundant code.
2054 2006-11-08 Dorit Nuzman <dorit@il.ibm.com>
2056 * tree-vect-transform.c (vectorizable_operation): Support multiple
2059 2006-11-08 Dorit Nuzman <dorit@il.ibm.com>
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
2068 (vect_setup_realignment): Call vect_create_data_ref_ptr with additional
2070 (vectorizable_reduction, vectorizable_assignment): Not supported yet if
2071 VF is greater than the number of elements that can fit in one vector
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
2086 2006-11-07 Eric Christopher <echristo@apple.com>
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.
2094 2006-11-07 Jakub Jelinek <jakub@redhat.com>
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.
2102 2006-11-07 Steve Ellcey <sje@cup.hp.com>
2105 * config/ia64/t-hpux (LIB1ASMFUNCS): Filter out _fixtfdi,
2106 _fixunstfdi, and _floatditf
2108 2006-11-06 Anatoly Sokolov <aesok@post.ru>
2110 * config/avr/avr-protos.h (mask_one_bit_p, const_int_pow2_p): Remove
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.
2117 2006-11-07 Richard Sandiford <richard@codesourcery.com>
2119 * config/mips/mips.h (ISA_HAS_PREFETCHX): Fix typo.
2121 2006-11-07 Josh Conner <jconner@apple.com>
2123 * doc/invoke.texi (fstrict-aliasing): Move implementation
2125 * doc/tree-ssa.texi (Alias analysis): ...here.
2127 2006-11-07 Richard Guenther <rguenther@suse.de>
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.
2133 * g++.dg/other/pr29610.C: New testcase.
2135 2006-11-07 David Ung <davidu@mips.com>
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
2142 2006-11-07 Jie Zhang <jie.zhang@analog.com>
2144 * gcc.c (process_command): Treat -b as normal switch if its argument
2147 2006-11-07 David Ung <davidu@mips.com>
2149 * config/mips/mips.h (ISA_HAS_PREFETCHX): Add ISA_MIPS32R2 to the
2152 2006-11-06 Eric Christopher <echristo@apple.com>
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.
2159 2006-11-06 Janis Johnson <janis187@us.ibm.com>
2161 * gcc/doc/sourcebuild.texi (Test Directives): Add output-exists
2162 and output-exists-not.
2164 2006-11-06 Andrew Pinski <andrew_pinski@playstation.sony.com>
2167 * tree-vrp.c (vrp_int_const_binop): Use the correct tree when
2168 checking for overflow.
2170 2006-11-06 Jan van Dijk <jan@etpmod.phys.tue.nl>
2172 * configure.ac: Fixed typo in case statement: :: changed to ;;
2174 2006-11-06 Bob Wilson <bob.wilson@acm.org>
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.
2200 2006-11-06 Vladimir Prus <vladimir@codesourcery.com>
2202 * config/arm/t-strongarm-pe: (TARGET_LIBGCC2_CFLAGS): Do no
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.
2212 2006-11-05 Kaz Kojima <kkojima@gcc.gnu.org>
2214 * config/sh/lib1funcs-4-300.asm: Guard entire file with
2217 2006-11-05 Jakub Jelinek <jakub@redhat.com>
2220 * fold-const.c (fold_ternary): Fix A < 0 ? <sign bit of A> : 0
2223 2006-11-04 Uros Bizjak <ubizjak@gmail.com>
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
2233 2006-11-04 Richard Earnshaw <rearnsha@arm.com>
2235 * arm.c (thumb_legitimate_addres_p): Allow any constant offset
2236 from the soft-frame, argument and virtual registers.
2238 2006-11-04 Uros Bizjak <ubizjak@gmail.com>
2240 * config/i386/i386.md (*movxf_nointeger, *movxf_integer): Enable
2241 patterns for standard 80387 constants.
2243 2006-11-03 Paolo Bonzini <bonzini@gnu.org>
2244 Steven Bosscher <steven@gcc.gnu.org>
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
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
2260 (fold_rtx): Process SUBREGs and MEMs with equiv_constant, make
2261 simplification loop more straightforward by not calling fold_rtx
2263 (equiv_constant): Move here a small part of fold_rtx_subreg,
2264 do not call fold_rtx. Call avoid_constant_pool_reference
2266 * recog.h (canonicalize_change_group): New.
2268 * doc/invoke.texi (Optimization Options): Document fwprop.
2269 * doc/passes.texi (RTL passes): Document fwprop.
2271 2006-11-03 Geoffrey Keating <geoffk@apple.com>
2273 * c-decl.c (WANT_C99_INLINE_SEMANTICS): New, set to 1.
2274 (merge_decls): Implement WANT_C99_INLINE_SEMANTICS.
2275 (grokdeclarator): Likewise.
2277 2006-11-03 Steven Bosscher <steven@gcc.gnu.org>
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
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.
2294 2006-11-03 Paul Brook <paul@codesourcery.com>
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.
2301 2006-11-03 David Ung <davidu@mips.com>
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.
2313 2006-11-03 J"orn Rennecke <joern.rennecke@st.com>
2315 * config/sh/crt1.asm: Fix #ifdef indent.
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:
2350 * config/sh/embed-elf.h (LIBGCC_SPEC): Use -lgcc-4-300 for -m4-300* /
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.
2362 (movsi_ie, movsi_i_lowpart): Likewise.
2363 (movqi_i): Split ri alternative into two separate alternatives.
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.
2381 * sh.md (mulsf3): Remove special expansion code.
2382 (mulsf3_ie): Now a define_insn_and_split.
2383 (macsf3): Allow for TARGET_SH4.
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.
2401 2006-11-02 Andrew Pinski <andrew_pinski@playstation.sony.com>
2403 * doc/md.texi (RS6000 constraints): Document H, Z, a, t, and W
2406 2006-11-02 Brooks Moses <brooks.moses@codesourcery.com>
2408 * doc/invoke.texi: Fix mfp-trap-mode typo.
2410 2006-11-02 Carlos O'Donell <carlos@codesourcery.com>
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):
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.
2423 2006-11-02 Ben Elliston <bje@au.ibm.com>
2425 * tree-ssa.c (warn_uninit): Use expand_location variables for
2426 locus and declaration locus.
2428 2006-11-02 Kaz Kojima <kkojima@gcc.gnu.org>
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
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
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.
2449 2006-11-02 Eric Botcazou <ebotcazou@libertysurf.fr>
2451 * doc/install.texi (sparc-sun-solaris2*): Update GMP/MPFR build
2453 (sparc64-sun-solaris2*): Likewise.
2455 2006-11-02 Paul Brook <paul@codesourcery.com>
2457 * config/arm/arm.c (arm_elf_asm_constructor): Remove ATTRIBUTE_UNUSED
2458 from priority argument. Use different section for non-default
2460 * config/arm/elf.h: Remove definition of SUPPORTS_INIT_PRIORITY.
2462 2006-11-02 Eric Botcazou <ebotcazou@adacore.com>
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.
2469 2006-11-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2472 * builtins.c (do_mpfr_sincos): New.
2473 (fold_builtin_1): Use it to fold builtin sincos.
2475 2006-11-01 Roger Sayle <roger@eyesopen.com>
2477 * config/darwin.h (CPP_SPEC): Handle -pthread, transforming
2478 it into -D_REENTRANT.
2480 2006-11-01 Roger Sayle <roger@eyesopen.com>
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.
2491 2006-11-01 Pete Steinmetz <steinmtz@us.ibm.com>
2492 Peter Bergner <bergner@vnet.ibm.com>
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
2558 * config/rs6000/power6.md: New file.
2560 2006-11-01 Adam Nemet <anemet@caviumnetworks.com>
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.
2567 2006-11-01 Chris Johns <chris@contemporary.net.au>
2570 * Makefile.in (install-driver): Use exeext when installing
2571 $target-gcc-$version.
2573 2006-11-01 Douglas Gregor <doug.gregor@gmail.com>
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.
2586 2006-11-01 Richard Guenther <rguenther@suse.de>
2588 * config/i386/i386.c (ix86_expand_rint): Fix issues with
2590 (ix86_expand_floorceildf_32): Likewise.
2591 (ix86_expand_floorceil): Likewise.
2592 (ix86_expand_trunc): Likewise.
2594 2006-10-31 Andrew Pinski <pinskia@gmail.com>
2596 * doc/invoke.texi (-fkeep-inline-functions): Change "GNU C"
2599 2006-11-01 Danny Smith <dannysmith@users.sourceforge.net>
2601 * target.h (targetm.cxx.use_atexit_for_cxa_atexit): New target
2603 * target-def.h: (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT): Define
2605 * config/i386/mingw32.h (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT):
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.
2614 2006-11-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2616 * builtins.def (gamma, lgamma): Use ATTR_MATHFN_FPROUNDING_STORE.
2618 2006-10-31 Geoffrey Keating <geoffk@apple.com>
2621 * c-decl.c (start_struct): Don't create self-containing
2623 * config/rs6000/rs6000.c (darwin_rs6000_special_round_type_align):
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.
2630 2006-10-31 Geoffrey Keating <geoffk@apple.com>
2632 * toplev.c (compile_file): Call final_write_globals
2633 even if there have been errors.
2635 2006-10-31 Eric Christopher <echristo@apple.com>
2636 Falk Hueffner <falk@debian.org>
2638 * doc/extend.texi (__builtin_bswap32): Document.
2639 (__builtin_bswap64): Ditto.
2640 * doc/libgcc.texi (bswapsi2): Document.
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
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
2661 * builtin-types.def (BT_UINT32): New.
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
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.
2684 2006-10-31 Geoffrey Keating <geoffk@apple.com>
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
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.
2700 2006-10-31 Geoffrey Keating <geoffk@apple.com>
2702 * config/i386/darwin.h (PREFERRED_DEBUGGING_TYPE): Remove.
2703 * config/darwin.h (PREFERRED_DEBUGGING_TYPE): Set to DWARF2_DEBUG.
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
2709 2006-10-31 Geoffrey Keating <geoffk@apple.com>
2712 * config/darwin.h (NO_IMPLICIT_EXTERN_C): Define.
2714 2006-10-31 Geoffrey Keating <geoffk@apple.com>
2716 * c-decl.c (grokdeclarator): Don't set DECL_EXTERNAL on
2717 inline static functions in c99 mode.
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'
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
2734 (c_push_function_context): Don't push current_extern_inline.
2735 (c_pop_function_context): Don't restore current_extern_inline.
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.
2743 2006-10-31 Roger Sayle <roger@eyesopen.com>
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.
2751 2006-10-31 Eric Botcazou <ebotcazou@libertysurf.fr>
2754 * gthr-posix.h (__gthread_active_p): New implementation on Solaris.
2755 * gthr-posix95.h (__gthread_active_p): Likewise.
2757 2006-10-31 Richard Guenther <rguenther@suse.de>
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
2769 2006-10-31 Steven Bosscher <steven@gcc.gnu.org>
2771 * opts.c (decode_options): Disable CSE skip blocks.
2773 2006-10-30 Dirk Mueller <dmueller@suse.de>
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.
2780 2006-10-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2783 * builtins.c (fold_builtin_1): Evaluate tgamma using MPFR.
2785 2006-10-30 Pete Steinmetz <steinmtz@us.ibm.com>
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
2791 2006-10-30 Richard Sandiford <richard@codesourcery.com>
2793 * config/mips/mips.md (mul<mode>3): Split into...
2794 (mulsi3, muldi3): ...these separate patterns.
2796 2006-10-30 Richard Sandiford <richard@codesourcery.com>
2798 * config/mips/linux64.h (DRIVER_SELF_SPECS): Use a single spec,
2799 but with each set of options separated by spaces.
2801 2006-10-30 J"orn Rennecke <joern.rennecke@st.com>
2803 * unwind-dw2.c (uw_init_context_1): Fix test that checks if
2804 dwarf_reg_size_table has been initialized.
2806 2006-10-30 Roger Sayle <roger@eyesopen.com>
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.
2817 2006-10-30 David Daney <ddaney@avtrex.com>
2819 * config/mips/linux.h (NO_SHARED_SPECS): Correct syntax error.
2821 2006-10-30 Jakub Jelinek <jakub@redhat.com>
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.
2827 2006-10-30 Danny Smith <dannysmith@users.sourceforge.net>
2829 * dwarf2out.c (file_name_acquire): Correct typo.
2831 2006-10-29 Daniel Berlin <dberlin@dberlin.org>
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
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.
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.
2858 (set_remove): Ditto.
2859 (set_contains_value): Ditto.
2860 (insert_into_set): 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.
2884 (compute_antic_aux): Ditto. Mark changed blocks.
2885 (compute_antic): Ditto. Iterate in postorder and only over
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.
2903 2006-10-29 Roger Sayle <roger@eyesopen.com>
2905 * builtins.c (fold_builtin_floor): Check for the availability of
2906 the C99 trunc function before transforming floor into trunc.
2908 2006-10-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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,
2915 2006-10-29 Roger Sayle <roger@eyesopen.com>
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.
2922 2006-10-29 Richard Sandiford <richard@codesourcery.com>
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
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.
2949 2006-10-29 Roger Sayle <roger@eyesopen.com>
2951 PR tree-optimization/15458
2952 * fold-const.c (fold_binary): Optimize ~X ^ C as X ^ ~C, where C
2955 2006-10-29 Richard Guenther <rguenther@suse.de>
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.
2966 2006-10-29 Joseph Myers <joseph@codesourcery.com>
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.
2977 2006-10-29 Richard Guenther <rguenther@suse.de>
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.
2988 2006-10-29 Richard Guenther <rguenther@suse.de>
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
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.
3004 2006-10-29 Richard Guenther <rguenther@suse.de>
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.
3016 2006-10-29 Richard Guenther <rguenther@suse.de>
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
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):
3038 * doc/md.texi (lfloorMN, lceilMN): Document.
3040 2006-10-29 Richard Sandiford <richard@codesourcery.com>
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.
3049 2006-10-29 Richard Sandiford <richard@codesourcery.com>
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.
3054 2006-10-29 Kazu Hirata <kazu@codesourcery.com>
3056 * config/darwin.c, config/darwin.opt, config/ia64/itanium1.md,
3057 config/ia64/itanium2.md, real.c, tree-ssa-structalias.c: Fix
3060 2006-10-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3063 * builtins.c (do_mpfr_arg2, fold_builtin_hypot): New.
3064 (fold_builtin_pow): Evaluate constant arguments at compile-time
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.
3071 2006-10-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
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.
3078 2006-10-28 Richard Guenther <rguenther@suse.de>
3080 * fold-const.c (maybe_canonicalize_comparison): Fix code
3083 2006-10-28 Uros Bizjak <uros@kss-loka.si>
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.
3101 2006-10-28 Eric Botcazou <ebotcazou@adacore.com>
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.
3115 2006-10-28 Richard Guenther <rguenther@suse.de>
3118 * fold-const.c (maybe_canonicalize_comparison_1): Helper
3119 for maybe_canonicalize_comparison.
3120 (maybe_canonicalize_comparison): New function for canonicalizing
3122 (fold_comparison): Call it to canonicalize comparisons with
3125 2006-10-28 Richard Guenther <rguenther@suse.de>
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
3138 (ix86_expand_lround): New function.
3139 * config/i386/i386.md (lround<mode>di2, lround<mode>si2):
3141 * doc/md.texi (lroundMN2): Document.
3143 2006-10-28 Uros Bizjak <uros@kss-loka.si>
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.
3151 2006-10-28 Uros Bizjak <uros@kss-loka.si>
3153 * config/i386/i386.c (output_387_ffreep): Create output from a
3154 template string for !HAVE_AS_IX86_FFREEP.
3156 2006-10-27 Eric Christopher <echristo@apple.com>
3158 * config/darwin.c: Fix formatting and grammar.
3160 2006-10-27 Jan Hubicka <jh@suse.cz>
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.
3168 2006-10-27 Vladimir Makarov <vmakarov@redhat.com>
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
3179 (TARGET_CPU_DEFAULT_NAMES): Add geode.
3180 (processor_type): Add PROCESSOR_GEODE.
3182 * config/i386/i386.md: Include geode.md.
3185 * config/i386/i386.c (geode_cost): New initialized global
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.
3197 * config/i386/geode.md: New file.
3199 * doc/invoke.texi: Add entry about geode processor.
3201 2006-10-27 Mike Stump <mrs@apple.com>
3203 * config/darwin-c.c (darwin_cpp_builtins): Move __STATIC__ and
3204 __DYNAMIC__ from here back to ...
3205 * config/darwin.h (CPP_SPEC): ... here.
3207 2006-10-26 Nathan Froyd <froydnj@codesourcery.com>
3208 Nathan Sidwell <nathan@codesourcery.com>
3210 * ggc-common.c (ggc_min_heapsize_heuristic): Be more conservative
3211 when choosing the minimum heapsize.
3213 2006-10-26 Nathan Froyd <froydnj@codesourcery.com>
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.
3227 2006-10-26 Andreas Krebbel <krebbel1@de.ibm.com>
3229 * config/s390/s390.c (s390_init_frame_layout): Check positive
3232 2006-10-26 Ben Elliston <bje@au.ibm.com>
3234 * gimplify.c (get_name): Remove extraneous break.
3235 (gimplify_omp_for): Initialise ret with GS_OK.
3237 2006-10-25 Steve Ellcey <sje@cup.hp.com>
3239 * config/ia64/hpux.h: Define _INCLUDE__STDC_A1_SOURCE in C++.
3240 Add unix98.o to link line.
3242 2006-10-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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.
3250 2006-10-25 Bob Wilson <bob.wilson@acm.org>
3252 * config/xtensa/lib2funcs.S: Use C-style comments.
3254 2006-10-24 Nathan Froyd <froydnj@codesourcery.com>
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.
3261 2006-10-25 Daniel Berlin <dberlin@dberlin.org>
3263 * tree-ssa-structalias.c (intra_create_variable_infos):
3264 Don't recreate nonlocal_all if it already exists.
3266 2006-10-25 Richard Guenther <rguenther@suse.de>
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.
3290 2006-10-25 Uros Bizjak <uros@kss-loka.si>
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.
3310 2006-10-25 Uros Bizjak <uros@kss-loka.si>
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.
3324 (expand_builtin) [BUILT_IN_FMOD, BUILT_IN_DREM]: Do not
3325 depend on flag_unsafe_math_optimizations.
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.
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.
3338 * doc/md.texi (fmod, remainder): Document standard named pattern.
3340 2006-10-24 Richard Sandiford <richard@codesourcery.com>
3341 David Daney <ddaney@avtrex.com>
3344 * rtlanal.c (nonzero_address_p): Remove check for values wrapping.
3346 2006-10-25 Ben Elliston <bje@au.ibm.com>
3348 * doc/extend.texi (Variable Attributes): Typo fix.
3350 2006-10-24 Uros Bizjak <uros@kss-loka.si>
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.
3359 * config/i386/i386.c (regclass_map): Add fpcr entry.
3360 (dbx_register_map, dbx64_register_map, svr4_dbx_register_map):
3362 (print_reg): Assert REGNO (x) != FPCR_REG.
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.
3371 * config/i386/mmx.md (mmx_emms, mmx_femms): Renumber
3372 hardcoded MMX register numbers.
3374 2006-10-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3377 * builtins.c (fold_builtin_sin, fold_builtin_atan): Remove.
3378 (do_mpfr_arg1): Add `min', `max' and `inclusive' arguments.
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.
3385 2006-10-24 Richard Guenther <rguenther@suse.de>
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.
3393 2006-10-24 Richard Guenther <rguenther@suse.de>
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