1 2007-10-01 Alexandre Oliva <aoliva@redhat.com>
4 * tree-sra.c (struct sra_elt): Add in_bitfld_block.
5 (sra_hash_tree): Handle BIT_FIELD_REFs.
6 (sra_elt_hash): Don't hash bitfld blocks.
7 (sra_elt_eq): Skip them in parent compares as well. Handle
9 (build_element_name_1): Handle BIT_FIELD_REFs.
10 (instantiate_element): Propagate nowarn from parents. Create
11 BIT_FIELD_REF for variables that are widened by scalarization.
12 Gimple-zero-initialize all bit-field variables that are not
13 part of parameters that are going to be scalarized on entry.
14 (instantiate_missing_elements_1): Return the sra_elt.
15 (canon_type_for_field): New.
16 (try_instantiate_multiple_fields): New. Infer widest possible
17 access mode from decl or member type, but clip it at word
18 size, and only widen it if a field crosses an alignment
20 (instantiate_missing_elements): Use them.
21 (generate_one_element_ref): Handle BIT_FIELD_REFs.
22 (scalar_bitfield_p): New.
23 (sra_build_assignment): Optimize assignments from scalarizable
24 BIT_FIELD_REFs. Use BITS_BIG_ENDIAN to determine shift
27 (sra_build_bf_assignment): New. Optimize assignments to
28 scalarizable BIT_FIELD_REFs.
29 (sra_build_elt_assignment): New. Optimize BIT_FIELD_REF
30 assignments to full variables.
31 (generate_copy_inout): Use the new macros and functions.
32 (generate_element_copy): Likewise. Handle bitfld differences.
33 (generate_element_zero): Don't recurse for blocks. Use
34 sra_build_elt_assignment.
35 (generate_one_element_init): Take elt instead of var. Use
36 sra_build_elt_assignment.
37 (generate_element_init_1): Adjust.
38 (bitfield_overlap_info): New struct.
39 (bitfield_overlaps_p): New.
40 (sra_explode_bitfield_assignment): New. Adjust widened
41 variables to account for endianness.
42 (sra_sync_for_bitfield_assignment): New.
43 (scalarize_use): Re-expand assignment to/from scalarized
44 BIT_FIELD_REFs. Explode or sync needed members for
45 BIT_FIELD_REFs accesses or assignments. Use REPLDUP.
46 (scalarize_copy): Use REPLDUP.
47 (scalarize_ldst): Move assert before dereference. Adjust EH
49 (dump_sra_elt_name): Handle BIT_FIELD_REFs.
51 2007-10-01 Paolo Bonzini <bonzini@gnu.org>
53 * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
54 Rename CR_* constants to CMP_*. Fix spacing.
56 2007-10-01 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
59 * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
60 to be processed with the special script doc/install.texi2html.
62 2007-09-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
64 * doc/invoke.texi (Wall): List the options enabled by Wall.
65 (Wstrict-aliasing): Add missing @option.
67 2007-09-30 Richard Sandiford <rsandifo@nildram.co.uk>
69 * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
70 rather than gen_lowpart to change a register from DImode to DFmode.
71 (mips_cannot_change_mode_class): Only allow FPRs to change mode if
72 both FROM and TO are integer modes that are no bigger than 4 bytes.
73 (mips_mode_ok_for_mov_fmt_p): New function.
74 (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
75 (mips_secondary_reload_class): Tweak formatting and comments.
76 Use reg_class_subset_p instead of direct comparisons with
77 classes. Only allow direct FPR<->FPR moves for modes that
78 satisfy mips_mode_ok_for_mov_fmt_p. Only allow loads and stores
79 for 4- and 8-byte types. Handle reloads in which X is an FPR.
80 * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
81 (*movdi_64bit): Likewise.
82 (*movsi_internal): Likewise.
83 (*movhi_internal): Likewise.
84 (*movqi_internal): Likewise.
86 2007-09-30 Diego Novillo <dnovillo@google.com>
89 * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
92 2007-09-30 Uros Bizjak <ubizjak@gmail.com>
94 PR tree-optimization/33597
95 * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
96 for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
98 2007-09-28 Uros Bizjak <ubizjak@gmail.com>
100 * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
101 instead of variants of (!reload_in_progress && !reload_completed).
102 (x86_expand_vector_move): Ditto.
104 2007-09-28 Ollie Wild <aaw@google.com>
107 2007-09-27 Ollie Wild <aaw@google.com>
109 * varasm.c (compare_constant): Removed call to
110 lang_hooks.expand_constant.
111 (copy_constants): Removed call to lang_hooks.expand_constant.
112 (compute_reloc_for_constant): Removed call to
113 lang_hooks.expand_constant.
114 (output_addressed_constants): Removed call to
115 lang_hooks.expand_constant.
116 (constructor_static_from_elts_p): Removed call to
117 lang_hooks.expand_constant.
118 (output_constant): Removed calls to lang_hooks.expand_constant.
119 * langhooks.h (struct lang_hooks): Removed field expand_constant.
120 * langhooks-def.h (lhd_return_tree): Removed.
121 (LANG_HOOKS_EXPAND_CONSTANT): Removed.
122 (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
123 * langhooks.c (lhd_return_tree): Removed.
125 2007-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
128 * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
129 argument to gen_selb.
131 2007-09-28 Chao-ying Fu <fu@mips.com>
133 * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
134 * doc/libgcc.texi (Fixed-point fractional library routines):
135 Fix typos for neg and cmp functions.
137 2007-09-28 Michael Matz <matz@suse.de>
139 PR rtl-optimization/33552
140 * function.c (match_asm_constraints_1): Check for overlap in
141 inputs and replace all occurences.
143 2007-09-28 Richard Sandiford <rsandifo@nildram.co.uk>
145 * config/mips/mips.c (override_options): Fix comment typo.
147 2007-09-28 Jie Zhang <jie.zhang@analog.com>
149 * config.gcc (bfin*-linux-uclibc*): Set extra_parts
150 to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
151 * config/bfin/t-bfin-linux (crti.o): Don't build.
153 (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
154 * config/bfin/t-bfin-uclinux (crti.o): Don't build.
156 (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
158 2007-09-27 Ollie Wild <aaw@google.com>
160 * varasm.c (compare_constant): Removed call to
161 lang_hooks.expand_constant.
162 (copy_constants): Removed call to lang_hooks.expand_constant.
163 (compute_reloc_for_constant): Removed call to
164 lang_hooks.expand_constant.
165 (output_addressed_constants): Removed call to
166 lang_hooks.expand_constant.
167 (constructor_static_from_elts_p): Removed call to
168 lang_hooks.expand_constant.
169 (output_constant): Removed calls to lang_hooks.expand_constant.
170 * langhooks.h (struct lang_hooks): Removed field expand_constant.
171 * langhooks-def.h (lhd_return_tree): Removed.
172 (LANG_HOOKS_EXPAND_CONSTANT): Removed.
173 (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
174 * langhooks.c (lhd_return_tree): Removed.
176 2007-09-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
179 * expr.c (emit_group_load_1): Split constant double when destination
180 length is half source length.
182 2007-09-27 Richard Sandiford <rsandifo@nildram.co.uk>
184 * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
185 (mips_cpu_info): Add tune_flags.
186 (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
187 * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
189 (override_options): Remove deprecation code. Use branch-likely
190 instructions for optimize_size or if the tuning flags do not
191 suggest otherwise. Tweak warning.
192 (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
194 2007-09-27 Matthias Klose <doko@ubuntu.com>
196 * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
197 multilib osdirname if it exists.
198 * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
200 2007-09-27 Ian Lance Taylor <iant@google.com>
202 PR tree-optimization/33565
203 * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
204 assignments of comparisons.
205 * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
206 parameter. Change caller. Defer overflow warnings around call to
208 * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
209 TREE_NO_WARNING is set on the statement.
210 * tree-ssa-forwprop.c
211 (tree_ssa_forward_propagate_single_use_vars): Don't test
212 TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
213 * tree-cfg.c (fold_cond_expr_cond): Likewise.
215 2007-09-27 Joseph Myers <joseph@codesourcery.com>
217 * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
218 reduce offset by units of 0x10000 for SPE vector modes or modes
219 used with E500 double instructions.
221 2007-09-04 Paolo Bonzini <bonzini@gnu.org>
223 * simplify-rtx.c (comparison_result): New.
224 (simplify_const_relational_operation): Use it instead of the five
225 "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
226 Improve bounds-checking optimizations; remove subsumed POPCOUNT
227 optimizations. Extract nonzero_address_p optimizations into a
228 separate "if" together with optimizations where op1 is const0_rtx.
229 Optimize comparing an IOR with zero. Simplify op0 RELOP op0 for
230 floating-point arguments too when appropriate. Hoist test for ABS
231 outside the final switch statement.
232 * cse.c (fold_rtx): Don't look for an IOR equivalent of
233 folded_arg0 if we found a constant equivalent. Remove
234 transformations done in simplify-rtx.c for "op0 RELOP op0".
236 2007-09-27 Jakub Jelinek <jakub@redhat.com>
238 * builtins.c (expand_builtin, expand_builtin_object_size,
239 expand_builtin_memory_chk, maybe_emit_chk_warning,
240 maybe_emit_sprintf_chk_warning): Use new %K format string specifier
242 * expr.c (expand_expr_real_1): Likewise.
243 * langhooks-def.h (struct diagnostic_info): Add forward decl.
244 (lhd_print_error_function): Add third argument.
245 * langhooks.h (struct diagnostic_info): Add forward decl.
246 (struct lang_hooks): Add third argument to print_error_function.
247 * diagnostic.h (diagnostic_info): Add abstract_origin field.
248 (diagnostic_last_function_changed, diagnostic_set_last_function): Add
250 (diagnostic_report_current_function): Likewise.
251 * toplev.c (announce_function): Pass NULL as second argument to
252 diagnostic_set_last_function.
253 * diagnostic.c (diagnostic_report_current_function): Add second
254 argument, pass it as third argument to lang_hooks.print_error_function.
255 (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
256 to diagnostic_report_current_function.
257 (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
258 and message.abstract_origin.
259 (verbatim): Initialize abstract_origin.
260 * pretty-print.h (text_info): Add abstract_origin field.
261 * pretty-print.c (pp_base_format): Handle %K.
262 * langhooks.c (lhd_print_error_function): Add third argument. If
263 diagnostic->abstract_origin, print virtual backtrace.
264 * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
265 gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
266 (init_dynamic_diag_info): Likewise.
268 2007-09-26 David Daney <ddaney@avtrex.com>
271 * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
272 sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
273 sync_old_nand<mode>, sync_new_nand<mode>,
274 sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
275 Update length attributes.
276 (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
277 sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
279 * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
280 MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
281 MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
284 2007-09-26 Richard Guenther <rguenther@suse.de>
286 PR tree-optimization/33563
287 * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
288 (get_kill_of_stmt_lhs): ... this. Re-structure. Handle
290 (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
293 2007-09-26 Joseph Myers <joseph@codesourcery.com>
296 * c-common.c (complete_array_type): Diagnose too-large arrays and
297 set type to error_mark_node.
299 2007-09-26 Richard Guenther <rguenther@suse.de>
301 PR tree-optimization/30375
302 PR tree-optimization/33560
303 * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
307 2006-05-22 Aldy Hernandez <aldyh@redhat.com>
309 * tree-ssa-dse.c (aggregate_vardecl_d): New.
310 (dse_global_data): Add aggregate_vardecl field.
311 (dse_possible_dead_store_p): New.
312 Add prev_defvar variable.
313 Allow immediate uses and previous immediate uses to differ
314 if they are setting different parts of the whole.
315 (get_aggregate_vardecl): New.
316 (dse_record_partial_aggregate_store): New.
317 (dse_whole_aggregate_clobbered_p): New.
318 (dse_partial_kill_p): New.
319 Call dse_maybe_record_aggregate_store().
320 When checking whether a STMT and its USE_STMT refer to the
321 same memory address, check also for partial kills that clobber
323 Move some variable definitions to the block where they are used.
324 (aggregate_vardecl_hash): New.
325 (aggregate_vardecl_eq): New.
326 (aggregate_vardecl_free): New.
327 (aggregate_whole_store_p): New.
328 (tree_ssa_dse): Initialize and free aggregate_vardecl.
329 Mark which aggregate stores we care about.
331 2007-09-25 DJ Delorie <dj@redhat.com>
334 * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
337 2007-09-25 Michael Meissner <michael.meissner@amd.com>
340 * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
341 gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
342 for vector int32 -> int64 conversions. Don't write beyond the end
343 of the allocated vector for int32 -> int64 conversions.
345 2007-09-25 Revital Eres <eres@il.ibm.com>
347 * config/rs6000/paired.h (paired_sel): New.
348 * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
349 (rs6000_expand_ternop_builtin): Pass zero const_double operand
350 when expanding selv2sf.
351 * config/rs6000/rs6000.h (rs6000_builtins): Add
352 PAIRED_BUILTIN_SELV2SF4.
354 2007-09-25 Joseph Myers <joseph@codesourcery.com>
357 * c-typeck.c (default_conversion): Call require_complete_type
358 before perform_integral_promotions.
359 (build_unary_op): Call require_complete_type except for ADDR_EXPR.
360 (build_c_cast): Call require_complete_type except for casts to
362 (convert_for_assignment): Call require_complete_type.
364 2007-09-25 Revital Eres <eres@il.ibm.com>
366 * config/spu/spu.md: Fix doloop pattern.
368 2007-09-25 Bernd Schmidt <bernd.schmidt@analog.com>
370 * config/bfin/bfin.c (expand_prologue_reg_save,
371 expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and
373 (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
374 ... from here. New argument ALL; callers changed.
375 (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
376 (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
377 have the "saveall" attribute.
379 2007-09-25 Hans-Peter Nilsson <hp@bitrange.com>
381 * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
383 (INCOMING_REGNO, OUTGOING_REGNO): Define.
384 * config/mmix/mmix.c (mmix_opposite_regno): New function.
385 * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
387 * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
388 with REG_P tests before REGNO access.
390 2007-09-24 DJ Delorie <dj@redhat.com>
393 * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
395 (movqicc_<code>_<mode>): Likewise.
396 (movhicc_<code>_<mode>): Likewise.
398 2007-09-24 Rask Ingemann Lambertsen <rask@sygehus.dk>
401 * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
404 2007-09-24 Danny Smith <dannysmith@user.sourceforge.net>
407 * config/i386/i386.c (ix86_comp_type_attributes): Check
410 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
412 * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
413 "move.l %a4,%a4" to produce nops.
414 * config/m68k/m68k.c (override_options): Reset align options,
415 if neccessary align macro isn't avaible.
417 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
419 config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
421 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
423 * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
425 * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
427 (peephole pattern): Convert most of them to RTL peephole pattern.
429 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
431 * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
432 (moved from fp compare patterns).
433 * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
434 Cleanup predicates to relieve reload.
435 (conditional_trap): Reject conditional trap with fp condition.
436 * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
437 certain constants early.
439 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
441 * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
443 2007-09-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
445 * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
446 Allow --with-tune=cell and --with-cpu=cell.
448 2007-09-24 David Edelsohn <edelsohn@gnu.org>
450 * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
451 * config/rs6000/rs6000.opt (swdiv): Change option to ...
453 * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
455 (TARGET_BUILTIN_RECIPROCAL): Use it.
456 (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
457 (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
458 (rs6000_emit_swrsqrtsf): New.
459 * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
461 * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
462 (divsf3): Remove swdiv support.
465 (rsqrt_internal1): New.
466 (divdf3): Remove swdiv support.
469 2007-09-24 Jakub Jelinek <jakub@redhat.com>
472 * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
474 * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
475 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
476 * tree.c (type_hash_eq): For FUNCTION_TYPE use
477 lang_hooks.type.type_hash_eq in addition to generic tests.
479 2007-09-24 Pranav Bhandarkar <pranav.bhandarkar@celunite.com>
480 Ramana Radhakrishnan <ramana@hercules.pun.celunite.com>
482 * tree-inline.h (eni_weights): Add field target_builtin_cost to
483 reflect the cost per call to a target specific builtin.
484 * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
485 call to a target specific builtin, then use target_builtin_call_cost.
486 (init_inline_once): Initialize target_builtin_call_cost field.
488 2007-09-24 Kai Tietz <kai.tietz@onevision.com>
491 * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
494 2007-09-23 H.J. Lu <hongjiu.lu@intel.com>
496 * configure.ac (ld_vers): Support GNU linker version xx.xx.*
497 * configure: Regenerated.
499 2007-09-23 Ollie Wild <aaw@google.com>
501 * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
503 (get_pointer_modulus_and_residue): New function.
505 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
507 * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
508 combine an SC return value into a single register.
510 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
512 * opth-gen.awk (target_flags_explicit): Declare.
513 * toplev.h (target_flags_explicit): Delete declaration.
514 * toplev.c (target_flags): Likewise.
515 * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
516 (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
517 Never return true for TARGET_MIPS16.
518 * config/mips/mips.c (mips_llsc): Delete.
519 (mips_handle_option): Remove -mllsc handling.
520 (mips_strip_unspec_address): Tweak comment.
521 * config/mips/mips.opt (mllsc): Use a target mask.
523 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
525 * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
526 word_mode as well as Pmode.
528 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
530 * function.c (assign_parm_setup_block): Explicitly convert BLKmode
531 parameters from word_mode to the subword type if such a truncation
534 2007-09-23 Jakub Jelinek <jakub@redhat.com>
536 * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
537 * configure: Regenerated.
539 2007-09-23 Jan Hubicka <jh@suse.cz>
541 * params.def (INLINE_CALL_COST): Set to 12.
542 * invoke.texi (inline-call-cost): Update default value.
544 2007-09-23 Eric Botcazou <ebotcazou@adacore.com>
546 * config/alpha/alpha.md (movti): Use operand_subword for the split.
548 2007-09-23 Ayal Zaks <zaks@il.ibm.com>
549 Revital Eres <eres@il.ibm.com>
551 * modulo-sched.c (doloop_register_get): Rewrite the loop which
552 checks whether the count_reg is found outside the control part.
554 2007-09-23 Jakub Jelinek <jakub@redhat.com>
556 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
557 instead of checking CALL_EXPR_FN directly to test for builtins.
558 If error or warning attributes are present, print
560 * c-common.c (handle_error_attribute): New function.
561 (c_common_attribute_table): Add error and warning
563 * doc/extend.texi: Document error and warning attributes.
565 * tree.h (block_nonartificial_location): New prototype.
566 * tree.c (block_nonartificial_location): New function.
567 * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
568 if artificial attribute is present on abstract inline decl.
569 * c-common.c (handle_artificial_attribute): New function.
570 (c_common_attribute_table): Add artificial attribute.
571 * final.c (override_filename, override_linenum): New variables.
572 (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
573 and override_linenum if inside of a block inlined from
574 __attribute__((__artificial__)) function.
575 (notice_source_line): Honor override_filename and override_linenum.
576 * doc/extend.texi: Document __attribute__((__artificial__)).
577 * config/i386/emmintrin.h: Add __artificial__ attribute to
578 all __always_inline__ functions.
579 * config/i386/mmintrin.h: Likewise.
580 * config/i386/tmmintrin.h: Likewise.
581 * config/i386/mm3dnow.h: Likewise.
582 * config/i386/pmmintrin.h: Likewise.
583 * config/i386/ammintrin.h: Likewise.
584 * config/i386/xmmintrin.h: Likewise.
585 * config/i386/smmintrin.h: Likewise.
586 * config/i386/bmmintrin.h: Likewise.
587 * config/i386/mmintrin-common.h: Likewise.
590 * expr.c (expand_constructor): New function.
591 (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
592 (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
595 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
597 * config/mips/mips.c (dump_constants_1): Generalize to include
598 fractional and accumulator modes.
600 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
602 * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
603 * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
605 (override_options): Check TARGET_HARD_FLOAT_ABI instead of
606 TARGET_HARD_FLOAT when testing whether -mpaired-single is
608 (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
610 * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
612 * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
613 (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
615 (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
616 ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
617 * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
619 * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
621 * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
622 instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
623 * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
625 2007-09-22 Jason Merrill <jason@redhat.com>
628 * attribs.c (lookup_attribute_spec): Split out...
629 (decl_attributes): From here.
630 * tree.h: Declare it.
632 2007-09-22 Richard Sandiford <rsandifo@nildram.co.uk>
634 * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
636 2007-09-22 Eric Botcazou <ebotcazou@adacore.com>
638 * tree-inline.c (remap_type_1): Correctly chain variants.
640 2007-09-22 Richard Guenther <rguenther@suse.de>
642 PR tree-optimization/33146
643 * fold-const.c (fold_binary): Use the original tree
645 * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
648 2007-09-22 Eric Botcazou <ebotcazou@adacore.com>
651 * except.c (finish_eh_generation): Call commit_edge_insertions if
652 there are insns queued on the entry edge.
653 * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
656 2007-09-22 Richard Sandiford <rsandifo@nildram.co.uk>
658 * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
660 2007-09-19 Michael Meissner <michael.meissner@amd.com>
662 * gcc/config/i386/i386.c: Delete trailing whitespace.
663 * gcc/config/i386/i386.h: Ditto.
664 * gcc/config/i386/bmmintrin.h: Ditto.
665 * gcc/config/i386/sync.md: Ditto.
666 * gcc/config/i386/ppro.md: Ditto.
667 * gcc/config/i386/mmx.md: Ditto.
668 * gcc/config/i386/constraints.md: Ditto.
669 * gcc/config/i386/sse.md: Ditto.
670 * gcc/config/i386/athlon.md: Ditto.
671 * gcc/config/i386/i386.md: Ditto.
673 2007-09-21 Richard Guenther <rguenther@suse.de>
675 PR tree-optimization/33508
676 * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
677 quadratic loop by keeping a bitmap of variables we have
678 to clobber all subvariables for.
679 (set_initial_properties): Likewise.
681 2007-09-21 Richard Sandiford <rsandifo@nildram.co.uk>
683 * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
685 2007-09-20 Nigel Stephens <nigel@mips.com>
686 Chao-ying Fu <fu@mips.com>
688 * c-decl.c (finish_declspecs): When _Sat is used without
689 _Fract or _Accum, set the default type to cts_fract.
690 This avoids a warning of "type defaults to int".
692 2007-09-20 Joseph Myers <joseph@codesourcery.com>
694 * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
695 bit-fields wider than one bit.
697 2007-09-20 Jakub Jelinek <jakub@redhat.com>
700 * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
702 * dbxout.c (dbxout_type): Likewise.
706 * gimplify.c (gimplify_vla_decl): New function.
707 (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
709 (gimplify_target_expr): Handle variable length TARGET_EXPRs.
711 2007-09-20 Richard Sandiford <rsandifo@nildram.co.uk>
713 * doc/invoke.texi (-minterlink-mips16): Document.
714 * config/mips/mips.opt (minterlink-mips16): New option.
715 * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
718 2007-09-20 Joseph Myers <joseph@codesourcery.com>
720 * doc/extend.texi (Attribute Syntax): Remove old speculative
723 2007-09-20 Mark Shinwell <shinwell@codesourcery.com>
725 * combine.c: Include cgraph.h.
726 (setup_incoming_promotions): Rework to allow more aggressive
727 elimination of sign extensions when all call sites of the
728 current function are known to lie within the current unit.
730 2007-09-20 Richard Sandiford <rsandifo@nildram.co.uk>
732 * dse.c (find_shift_sequence): No-op rework of control flow.
734 2007-09-19 Richard Sandiford <rsandifo@nildram.co.uk>
736 * config/mips/mips.c (build_mips16_call_stub): Tidy. Fix second
737 GPR for DCmode on 64-bit targets. Remove redundant fallback.
739 2007-09-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
741 * cfgexpand.c (dump_stack_var_partition): Use the correct
742 index for the offset.
744 2007-09-19 Joseph Myers <joseph@codesourcery.com>
746 * config/mips/sde.h: Switch to GPLv3.
748 2007-09-19 Eric Botcazou <ebotcazou@adacore.com>
750 * tree-sra.c (decide_block_copy): Decide if there are groups.
752 2007-09-19 Roman Zippel <zippel@linux-m68k.org>
754 * config/m68k/m68k.c (output_move_himode): Remove jump table
756 config/m68k/m68k.md (lea): Likewise.
757 * config/m68k/m68k.c (print_operand_address): Use simple pc
760 2007-09-19 Bernd Schmidt <bernd.schmidt@analog.com>
762 * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
763 * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
765 (asm_insn_count): Pass template as second argument to it.
766 * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
767 * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
768 * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
769 * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
770 * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
771 (sh_insn_length_adjustment): Pass template as second argument to it.
772 * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
774 * config/bfin/bfin.md (define_asm_attributes): New.
776 2007-09-19 Jie Zhang <jie.zhang@analog.com>
778 * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
780 * config/bfin/print-sysroot-suffix.sh: New.
781 * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
782 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
783 MULTILIB_EXCEPTIONS): Redefine with new multilibs.
784 * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
785 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
786 MULTILIB_EXCEPTIONS): Redefine with new multilibs.
787 * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
788 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
789 MULTILIB_EXCEPTIONS): Redefine with new multilibs.
790 (linux-sysroot-suffix.h): New target.
791 * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
792 (mspecld-anomaly): Likewise.
793 * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
794 (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
795 BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
796 BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
797 (bfin_si_revision): Declare.
798 (bfin_workarounds): Declare.
799 (WA_SPECULATIVE_LOADS): Define.
800 (ENABLE_WA_SPECULATIVE_LOADS): Define.
801 (WA_SPECULATIVE_SYNCS): Define.
802 (ENABLE_WA_SPECULATIVE_SYNCS): Define.
803 * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
804 (LIB_SPEC): Add %s to the linker scripts.
805 Use proper linker script for bf522, bf525, bf527,
806 bf538, bf539, bf542, bf544, bf548, and bf549.
807 * config/bfin/bfin.c (bfin_si_revision): Define.
808 (bfin_workarounds): Define.
809 (struct bfin_cpu): New.
811 (bfin_handle_option): Handle silicon revision part of -mcpu option.
812 (override_options): Set bfin_workarounds.
813 (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
814 ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
815 ENABLE_WA_SPECULATIVE_LOADS.
816 (bfin_reorg): Likewise.
817 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
818 macros for bf522, bf525, bf527, bf538, bf539,
819 bf542, bf544, bf548, and bf549.
820 Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
821 Don't define __ID_SHARED_LIB__ when -msep-data.
822 (TARGET_DEFAULT): Define as 0.
823 (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
824 * doc/invoke.texi (Blackfin Options): Document silicon
825 revision part of -mcpu option and it now accepts bf522, bf525,
826 bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
828 2007-09-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
830 * alias.c (memory_modified_1): Deconstify.
831 (memory_modified_in_insn_p): Don't use const_note_stores.
832 * rtl.h (const_note_stores): Delete.
833 * rtlanal.c (const_note_stores): Likewise.
835 2007-09-18 Richard Sandiford <rsandifo@nildram.co.uk>
837 * dse.c (find_shift_sequence): Temporarily revert to forbidding
840 2007-09-18 Rask Ingemann Lambertsen <rask@sygehus.dk>
844 * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
845 (addsi_small_int): Likewise.
846 (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
847 (one_cmplsi2): Likewise.
849 (enter_func): Expand insn using hard_frame_pointer_rtx and
852 * config/fr30/fr30.c (fr30_expand_prologue): Check for
853 hard_frame_pointer_rtx instead of using REGNO() check.
854 Properly sign extend GEN_INT() argument.
856 2007-09-18 Roman Zippel <zippel@linux-m68k.org>
858 * config/m68k/m68k.c (override_options): Remove USE_GAS,
860 (output_dbcc_and_branch, output_scc_di): Replace all jbcc
861 alternatives with just jcc.
862 * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
863 bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
864 bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
865 dbge_hi, dbge_si): Likewise.
867 2007-09-18 Roman Zippel <zippel@linux-m68k.org>
869 * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
870 bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
871 bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
872 bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
873 bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
875 2007-09-18 Maxim Kuvyrkov <maxim@codesourcery.com>
877 * config/m68k/m68k-devices.def (51qe): New device.
878 * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit. Add it
879 to all uses of FL_FOR_isa_c for compatibility.
880 (all_microarchs): Add cfv1 microarchitecture.
881 (m68k_handle_option): Handle m51qe option.
882 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
883 (TUNE_CFV1): New macro.
884 (enum uarch_type): Add ucfv1.
885 * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
887 2007-09-18 Richard Guenther <rguenther@suse.de>
889 PR tree-optimization/31863
890 * tree-ssa-structalias.c (create_variable_info_for): Always
893 2007-09-18 Dorit Nuzman <dorit@il.ibm.com>
895 * opts.c (decode_options): Enable vectorization under -O3.
897 2007-09-18 Richard Guenther <rguenther@suse.de>
899 PR tree-optimization/33340
900 * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
901 SSA_NAMEs that occur in abnormal PHI nodes.
903 2007-09-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
905 * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
906 Don't use const_get_call_expr_in.
907 * tree-gimple.c (const_get_call_expr_in): Delete.
908 * tree-gimple.h (const_get_call_expr_in): Likewise.
910 2007-09-18 Richard Sandiford <rsandifo@nildram.co.uk>
912 * df-scan.c (df_notes_rescan): Do nothing if the instruction does
913 not yet have a basic block.
914 * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
916 2007-09-18 Richard Sandiford <rsandifo@nildram.co.uk>
918 * config/mips/mips.c (mips_file_start): Add ".previous" directives
921 2007-09-17 Richard Sandiford <rsandifo@nildram.co.uk>
923 * config/mips/mips.c (mips_output_mi_thunk): Use
924 mips_function_ok_for_sibcall and const_call_insn_operand
925 to determine if a direct sibcall is allowed. Use
926 mips_classify_symbol to determine a global pointer is needed.
928 2007-09-17 Richard Sandiford <rsandifo@nildram.co.uk>
930 * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
932 2007-09-17 Chao-ying Fu <fu@mips.com>
933 Nigel Stephens <nigel@mips.com>
935 * config/fixed-bit.h: New file.
936 * config/fixed-bit.c: New file.
937 * doc/libgcc.texi (Fixed-point fractional library routines): New node.
939 2007-09-18 Jakub Jelinek <jakub@redhat.com>
941 * c-format.h (format_kind_info): Add alloc_char field.
942 * c-format.c (scanf_flag_specs): Add 'm'.
943 (scanf_flag_pairs): Add 'a', 'm' pair.
944 (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
945 (format_types_orig): Add alloc_char fields.
946 (check_format_info_main): Rename aflag to alloc_flag.
947 Handle fki->alloc_char. modifier after width and before length
948 modifiers. Move FMT_FLAG_SCANF_A_KLUDGE handling before
949 length modifiers as well.
950 * config/sol2-c.c (solaris_format_types): Add alloc_char field.
953 * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
954 returned by build_call_expr.
956 2007-09-17 Eric Botcazou <ebotcazou@adacore.com>
958 * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
959 NULL for variable-sized records too.
960 (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
962 2007-09-17 Tom Tromey <tromey@redhat.com>
964 * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
965 (c_builtin_function): Likewise.
966 (grokdeclarator): Likewise.
968 2007-09-17 Zdenek Dvorak <ook@ucw.cz>
970 PR rtl-optimization/26449
971 * loop-invariant.c (move_invariant_reg): Do not use force_operand.
972 (seq_insns_valid_p): Removed.
974 2007-09-17 Eric Botcazou <ebotcazou@adacore.com>
976 * tree-nomudflap.c (gate_mudflap): New static function.
977 (pass_mudflap_1): Use it as gate function.
978 (pass_mudflap_2): Likewise.
980 2007-09-17 Jan Hubicka <jh@suse.cz>
984 * loop-invariant.c (move_invariant_reg): Unshare sequence.
986 2007-09-17 Victor Kaplansky <victork@il.ibm.com>
988 PR tree-optimization/33319
989 * tree-vect-analyze.c (vect_same_range_drs): New.
990 (vect_vfa_range_equal): New.
991 (vect_is_duplicate_ddr): Removed.
992 (vect_mark_for_runtime_alias_test): Do not perform marking when
993 optimizing for size or max_param for alias checking is zero.
994 Move the function before vect_analyze_data_ref_dependence.
995 (vect_analyze_data_ref_dependence): Add call to
996 vect_mark_for_runtime_alias_test in two cases when dependence
998 (vect_analyze_data_ref_dependences): Do not call to
999 vect_mark_for_runtime_alias_test.
1000 (vect_prune_runtime_alias_test_list): New.
1001 (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
1002 * tree-vect-transform.c (vect_estimate_min_profitable_iters):
1003 Update vec_outside_cost.
1004 (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
1005 (vect_create_cond_for_alias_checks): Build the base address of data
1006 reference from DR_GROUP_FIRST_DR.
1007 (vect_loop_versioning): New.
1008 (vect_transform_loop): Add a call to vect_loop_versioning.
1009 Remove factored out code.
1011 2007-09-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1014 * expr.c (store_expr): Call adjust_address to change mode of dest_mem
1017 2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
1019 * dse.c (find_shift_sequence): Allow word as well as subword shifts.
1020 Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
1021 Fix the call to insn_rtx_cost. Skip access sizes that require a
1022 real truncation of the store register. Use convert_move instead
1023 of gen_lowpart when narrowing the result.
1024 (replace_read): Use convert_move instead of gen_lowpart when
1025 narrowing the store rhs.
1027 2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
1029 * config/mips/mips.md (SHORT): Fix long line.
1030 (SUBDI): New mode iterator. Extend the shift-and-truncate insns
1031 to QImode and HImode.
1033 2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
1035 * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
1037 2007-09-15 Zdenek Dvorak <ook@ucw.cz>
1039 * tree-parloops.c: New file.
1040 * tree-ssa-operands.h (free_stmt_operands): Declare.
1041 * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
1043 * tree-pass.h (pass_parallelize_loops): Declare.
1044 * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
1046 (build_omp_regions_1): Allow analysing just a single OMP region and
1048 ( build_omp_regions_root, omp_expand_local): New functions.
1049 (build_omp_regions): Add argument to build_omp_regions_1 call.
1050 * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
1051 autoparallelization is run.
1052 * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
1053 * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
1054 pass_parallelize_loops): New.
1055 * common.opt (ftree-parallelize-loops): New.
1056 * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
1057 parallelize_loops): Declare.
1058 (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
1059 * Makefile.in (tree-parloops.o): Added.
1060 * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
1062 (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
1063 (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
1064 one extra edge as well.
1065 (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
1066 Use VEC_free to free doms vector.
1067 (move_block_to_fn): Update loop info. Remove phi nodes for virtual
1068 operands. Recompute operand caches in the new function.
1069 (move_sese_region_to_fn): Update loop info.
1070 * passes.c (init_optimization_passes): Add pass_parallelize_loops.
1071 * tree-ssa-operands.c (free_stmt_operands): New function.
1073 * doc/passes.texi: Document autoparallelization.
1074 * doc/invoke.texi (-ftree-parallelize-loops): New option.
1076 2007-09-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1079 * pa.c (function_value): Use GET_MODE_BITSIZE instead of
1082 2007-09-15 Dorit Nuzman <dorit@il.ibm.com>
1084 * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if
1085 the VEC is not NULL.
1086 (vectorizable_type_demotion, vectorizable_type_promotion): Check that
1087 get_vectype_for_scalar_type succeeded.
1088 (vectorizable_conversion): Likewise.
1090 2007-09-14 Jan Hubicka <jh@suse.cz>
1092 * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
1095 2007-09-14 Uros Bizjak <ubizjak@gmail.com>
1098 * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
1099 register when operands[2] equals operands[1].
1100 (remainderxf3): Ditto.
1102 2007-09-14 Sandra Loosemore <sandra@codesourcery.com>
1103 Nigel Stephens <nigel@mips.com>
1105 * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
1106 * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
1107 (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
1109 (_Unwind_ForcedUnwind): Likewise.
1110 (_Unwind_Resume): Likewise.
1111 (_Unwind_Resume_or_Rethrow): Likewise.
1112 (_Unwind_Backtrace): Likewise.
1113 (_Unwind_SjLj_RaiseException): Likewise.
1114 (_Unwind_SjLj_ForcedUnwind): Likewise.
1115 (_Unwind_SjLj_Resume): Likewise.
1116 (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
1117 * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
1119 (_Unwind_ForcedUnwind): Likewise.
1120 (_Unwind_Resume): Likewise.
1121 (_Unwind_Resume_or_Rethrow): Likewise.
1122 (_Unwind_Backtrace): Likewise.
1123 * unwind-compat.c (_Unwind_Backtrace): Likewise.
1124 (_Unwind_ForcedUnwind): Likewise.
1125 (_Unwind_RaiseException): Likewise.
1126 (_Unwind_Resume): Likewise.
1127 (_Unwind_Resume_or_Rethrow): Likewise.
1129 * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
1130 nomips16 mode when IN_LIBGCC2 with hard float.
1132 2007-09-14 Richard Sandiford <rsandifo@nildram.co.uk>
1134 * config/mips/sdemtk.opt: Update to GPLv3.
1135 * config/mips/sdemtk.h: Likewise.
1137 2007-09-14 Nigel Stephens <nigel@mips.com>
1139 * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
1140 MIPS_ISA_DEFAULT appropriately. Don't make soft-float the default
1141 for mipsisa32-*-linux*.
1143 2007-09-14 Nigel Stephens <nigel@mips.com>
1144 David Ung <davidu@mips.com>
1145 Thiemo Seufer <ths@mips.com>
1146 Richard Sandiford <richard@codesourcery.com>
1148 * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
1149 * configure.ac: Add a mipssde threading type.
1150 * configure: Regenerate.
1151 * config/mips/sdemtk.h: New file.
1152 * config/mips/t-sdemtk: Likewise.
1153 * config/mips/sdemtk.opt: Likewise.
1154 * gthr-mipssde.h: Likewise.
1155 * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
1156 * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
1157 (MIPS_ICACHE_SYNC): New macro, split from ...
1158 * config/mips/mips.md (clear_cache): ...here.
1159 * config/mips/mips.c (mips_save_reg_p): Check
1160 MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
1161 (build_mips16_function_stub): Use targetm.strip_name_encoding.
1162 (build_mips16_call_stub): Likewise.
1164 2007-09-14 Richard Sandiford <richard@codesourcery.com>
1166 * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
1168 2007-09-14 Jakub Jelinek <jakub@redhat.com>
1171 * config/ia64/ia64.c (find_gr_spill): Don't decrement
1172 current_frame_info.n_local_regs. Don't return emitted local
1174 (ia64_compute_frame_size): Improve unwind hack to put
1175 RP, PFS, FP in that order by allowing some of the registers
1176 been already emitted, as long as they are emitted to the
1179 2007-09-14 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1181 * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
1182 vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
1183 vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
1185 2007-09-13 Eric Christopher <echristo@apple.com>
1186 Kenneth Zadeck <zadeck@naturalbridge.com>
1188 * dse.c (find_shift_sequence): New function.
1189 (replace_read): Add case to remove read if it requires shift.
1190 * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
1192 2007-09-13 Tom Tromey <tromey@redhat.com>
1194 * c-common.c (fname_as_string): Update.
1195 * c-parser.c (c_parser) <lex_untranslated_string>: New field.
1196 (c_lex_one_token): Update. Add 'parser' argument.
1197 (c_parser_simple_asm_expr): Update.
1198 (c_parser_attributes): Update.
1199 (c_parser_asm_statement): Update.
1200 (c_parser_asm_operands): Update.
1201 (c_parser_peek_token): Update.
1202 (c_parser_peek_2nd_token): Update.
1203 * c-lex.c (c_lex_string_translate): Remove.
1204 (c_lex_return_raw_strings): Likewise.
1205 (c_lex_with_flags): Added 'lex_flags' argument.
1206 (lex_string): Added 'translate' argument.
1207 * c-pragma.h (c_lex_with_flags): Update.
1208 (c_lex_string_translate, c_lex_return_raw_strings): Remove.
1209 (C_LEX_STRING_NO_TRANSLATE): New define.
1210 (C_LEX_RAW_STRINGS): Likewise.
1212 2007-09-13 Bernd Schmidt <bernd.schmidt@analog.com>
1215 * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
1216 BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
1217 BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
1218 (bfin_init_builtins): Initialize __builtin_bfin_ones,
1219 __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
1220 __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
1221 __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
1222 __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
1223 __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
1224 (bdesc_1arg): Add __builtin_bfin_ones.
1225 (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
1226 __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
1227 and __builtin_bfin_csqu_fr16.
1228 * config/bfin/bfin.md (UNSPEC_ONES): New constant.
1229 (ones): New define_insn.
1230 (ssaddhi3_parts): New define_insn.
1231 (sssubhi3_parts): New define_insn.
1232 (flag_mulhi_parts): New define_insn.
1234 2007-09-13 Seongbae Park <seongbae.park@gmail.com>
1236 * common.opt (femit-class-debug-always): Turn off by default.
1238 2007-09-13 Bernd Schmidt <bernd.schmidt@analog.com>
1240 * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
1241 * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
1243 2007-09-13 James E. Wilson <wilson@specifix.com>
1245 PR tree-optimization/33389
1246 * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
1247 then set build_loads before returning.
1249 2007-09-13 Sandra Loosemore <sandra@codesourcery.com>
1250 David Ung <davidu@mips.com>
1252 * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
1253 {d}addiu and a negative immediate such that it works with MIPS16
1256 2007-09-13 H.J. Lu <hongjiu.lu@intel.com>
1259 * configure.ac (ld_vers): Support Linux linker.
1260 * configure: Regenerated.
1262 2007-09-13 Richard Sandiford <richard@codesourcery.com>
1263 Sandra Loosemore <sandra@codesourcery.com>
1265 * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
1266 (SYMBOL_REF_MIPS16_FUNC_P): Delete.
1267 * config/mips/mips.c (mips_attribute_table): Turn mips16 and
1268 nomips16 into decl attributes.
1269 (TARGET_INSERT_ATTRIBUTES): Override.
1270 (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
1271 (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
1272 (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
1273 (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
1274 (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
1275 (mips_use_mips16_mode_p): Reimplement as a function that takes
1276 a decl and considers only decl attributes. If the decl is nested
1277 function, use its parent attributes.
1278 (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
1279 instead of SYMBOL_REF_MIPS16_FUNC_P.
1280 (mips_set_mips16_mode): Move call to sorry here from old
1281 mips_use_mips16_mode_p.
1282 (mflip_mips16_entry): New structure.
1283 (mflip_mips16_htab): New variable.
1284 (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
1285 (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
1286 (mips_merge_decl_attributes): New function.
1287 (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
1288 Use mips_use_mips16_mode_p.
1289 (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
1290 SYMBOL_REF_MIPS16_FUNC_P.
1291 (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
1293 2007-09-13 Richard Sandiford <richard@codesourcery.com>
1295 * c-parser.c (c_parser_struct_declaration): Check for a null return.
1297 2007-09-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
1300 * gcc.c (xputenv): Make argument const, and use CONST_CAST.
1302 2007-09-12 Michael Meissner <michael.meissner@amd.com>
1303 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
1304 Tony Linthicum <tony.linthicum@amd.com>
1306 * tree.h (function_args_iterator): New type to iterate over
1308 (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
1309 function arguments providing a pointer to the argument.
1310 (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
1311 function arguments providing the argument.
1312 (function_args_iter_init): Inline function to initialize
1313 function_args_iterator.
1314 (function_args_iter_cond_ptr): Inline function to return the next
1315 pointer to hold the argument.
1316 (function_args_iter_cond): Inline function to return the next
1318 (function_args_iter_cond_next): Advance the function args
1320 (stdarg_p): New function, return true if variable argument
1322 (prototype_p): New function, return true if function is
1324 (function_args_count): New function, count the number of arguments
1327 * tree.c (stdarg_p): New function, return true if variable
1329 (prototype_p): New function, return true if function is
1332 * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
1333 (TARGET_ROUND): New macro for the round/ptest instructions which
1334 are shared between SSE4.1 and SSE5.
1335 (OPTION_MASK_ISA_ROUND): Ditto.
1336 (OPTION_ISA_ROUND): Ditto.
1337 (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
1338 (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
1340 * config/i386/i386.opt (-msse5): New switch for SSE5 support.
1341 (-mfused-madd): New switch to give users control over whether the
1342 compiler optimizes to use the multiply/add SSE5 instructions.
1344 * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
1345 m_ATHLON_K8_AMDFAM10, and change all uses.
1346 (enum pta_flags): Add PTA_SSE5.
1347 (ix86_handle_option): Turn off 3dnow if -msse5.
1348 (override_options): Add SSE5 support.
1349 (print_operand): %Y prints comparison codes for SSE5 com/pcom
1351 (ix86_expand_sse_movcc): Add SSE5 support.
1352 (ix86_expand_sse5_unpack): New function to use pperm to unpack a
1353 vector type to the next largest size.
1354 (ix86_expand_sse5_pack): New function to use pperm to pack a
1355 vector type to the next smallest size.
1356 (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
1357 (IX86_BUILTIN_FMADDSD): Ditto.
1358 (IX86_BUILTIN_FMADDPS): Ditto.
1359 (IX86_BUILTIN_FMADDPD): Ditto.
1360 (IX86_BUILTIN_FMSUBSS): Ditto.
1361 (IX86_BUILTIN_FMSUBSD): Ditto.
1362 (IX86_BUILTIN_FMSUBPS): Ditto.
1363 (IX86_BUILTIN_FMSUBPD): Ditto.
1364 (IX86_BUILTIN_FNMADDSS): Ditto.
1365 (IX86_BUILTIN_FNMADDSD): Ditto.
1366 (IX86_BUILTIN_FNMADDPS): Ditto.
1367 (IX86_BUILTIN_FNMADDPD): Ditto.
1368 (IX86_BUILTIN_FNMSUBSS): Ditto.
1369 (IX86_BUILTIN_FNMSUBSD): Ditto.
1370 (IX86_BUILTIN_FNMSUBPS): Ditto.
1371 (IX86_BUILTIN_FNMSUBPD): Ditto.
1372 (IX86_BUILTIN_PCMOV_V2DI): Ditto.
1373 (IX86_BUILTIN_PCMOV_V4SI): Ditto.
1374 (IX86_BUILTIN_PCMOV_V8HI): Ditto.
1375 (IX86_BUILTIN_PCMOV_V16QI): Ditto.
1376 (IX86_BUILTIN_PCMOV_V4SF): Ditto.
1377 (IX86_BUILTIN_PCMOV_V2DF): Ditto.
1378 (IX86_BUILTIN_PPERM): Ditto.
1379 (IX86_BUILTIN_PERMPS): Ditto.
1380 (IX86_BUILTIN_PERMPD): Ditto.
1381 (IX86_BUILTIN_PMACSSWW): Ditto.
1382 (IX86_BUILTIN_PMACSWW): Ditto.
1383 (IX86_BUILTIN_PMACSSWD): Ditto.
1384 (IX86_BUILTIN_PMACSWD): Ditto.
1385 (IX86_BUILTIN_PMACSSDD): Ditto.
1386 (IX86_BUILTIN_PMACSDD): Ditto.
1387 (IX86_BUILTIN_PMACSSDQL): Ditto.
1388 (IX86_BUILTIN_PMACSSDQH): Ditto.
1389 (IX86_BUILTIN_PMACSDQL): Ditto.
1390 (IX86_BUILTIN_PMACSDQH): Ditto.
1391 (IX86_BUILTIN_PMADCSSWD): Ditto.
1392 (IX86_BUILTIN_PMADCSWD): Ditto.
1393 (IX86_BUILTIN_PHADDBW): Ditto.
1394 (IX86_BUILTIN_PHADDBD): Ditto.
1395 (IX86_BUILTIN_PHADDBQ): Ditto.
1396 (IX86_BUILTIN_PHADDWD): Ditto.
1397 (IX86_BUILTIN_PHADDWQ): Ditto.
1398 (IX86_BUILTIN_PHADDDQ): Ditto.
1399 (IX86_BUILTIN_PHADDUBW): Ditto.
1400 (IX86_BUILTIN_PHADDUBD): Ditto.
1401 (IX86_BUILTIN_PHADDUBQ): Ditto.
1402 (IX86_BUILTIN_PHADDUWD): Ditto.
1403 (IX86_BUILTIN_PHADDUWQ): Ditto.
1404 (IX86_BUILTIN_PHADDUDQ): Ditto.
1405 (IX86_BUILTIN_PHSUBBW): Ditto.
1406 (IX86_BUILTIN_PHSUBWD): Ditto.
1407 (IX86_BUILTIN_PHSUBDQ): Ditto.
1408 (IX86_BUILTIN_PROTB): Ditto.
1409 (IX86_BUILTIN_PROTW): Ditto.
1410 (IX86_BUILTIN_PROTD): Ditto.
1411 (IX86_BUILTIN_PROTQ): Ditto.
1412 (IX86_BUILTIN_PROTB_IMM): Ditto.
1413 (IX86_BUILTIN_PROTW_IMM): Ditto.
1414 (IX86_BUILTIN_PROTD_IMM): Ditto.
1415 (IX86_BUILTIN_PROTQ_IMM): Ditto.
1416 (IX86_BUILTIN_PSHLB): Ditto.
1417 (IX86_BUILTIN_PSHLW): Ditto.
1418 (IX86_BUILTIN_PSHLD): Ditto.
1419 (IX86_BUILTIN_PSHLQ): Ditto.
1420 (IX86_BUILTIN_PSHAB): Ditto.
1421 (IX86_BUILTIN_PSHAW): Ditto.
1422 (IX86_BUILTIN_PSHAD): Ditto.
1423 (IX86_BUILTIN_PSHAQ): Ditto.
1424 (IX86_BUILTIN_FRCZSS): Ditto.
1425 (IX86_BUILTIN_FRCZSD): Ditto.
1426 (IX86_BUILTIN_FRCZPS): Ditto.
1427 (IX86_BUILTIN_FRCZPD): Ditto.
1428 (IX86_BUILTIN_CVTPH2PS): Ditto.
1429 (IX86_BUILTIN_CVTPS2PH): Ditto.
1430 (IX86_BUILTIN_COMEQSS): Ditto.
1431 (IX86_BUILTIN_COMNESS): Ditto.
1432 (IX86_BUILTIN_COMLTSS): Ditto.
1433 (IX86_BUILTIN_COMLESS): Ditto.
1434 (IX86_BUILTIN_COMGTSS): Ditto.
1435 (IX86_BUILTIN_COMGESS): Ditto.
1436 (IX86_BUILTIN_COMUEQSS): Ditto.
1437 (IX86_BUILTIN_COMUNESS): Ditto.
1438 (IX86_BUILTIN_COMULTSS): Ditto.
1439 (IX86_BUILTIN_COMULESS): Ditto.
1440 (IX86_BUILTIN_COMUGTSS): Ditto.
1441 (IX86_BUILTIN_COMUGESS): Ditto.
1442 (IX86_BUILTIN_COMORDSS): Ditto.
1443 (IX86_BUILTIN_COMUNORDSS): Ditto.
1444 (IX86_BUILTIN_COMFALSESS): Ditto.
1445 (IX86_BUILTIN_COMTRUESS): Ditto.
1446 (IX86_BUILTIN_COMEQSD): Ditto.
1447 (IX86_BUILTIN_COMNESD): Ditto.
1448 (IX86_BUILTIN_COMLTSD): Ditto.
1449 (IX86_BUILTIN_COMLESD): Ditto.
1450 (IX86_BUILTIN_COMGTSD): Ditto.
1451 (IX86_BUILTIN_COMGESD): Ditto.
1452 (IX86_BUILTIN_COMUEQSD): Ditto.
1453 (IX86_BUILTIN_COMUNESD): Ditto.
1454 (IX86_BUILTIN_COMULTSD): Ditto.
1455 (IX86_BUILTIN_COMULESD): Ditto.
1456 (IX86_BUILTIN_COMUGTSD): Ditto.
1457 (IX86_BUILTIN_COMUGESD): Ditto.
1458 (IX86_BUILTIN_COMORDSD): Ditto.
1459 (IX86_BUILTIN_COMUNORDSD): Ditto.
1460 (IX86_BUILTIN_COMFALSESD): Ditto.
1461 (IX86_BUILTIN_COMTRUESD): Ditto.
1462 (IX86_BUILTIN_COMEQPS): Ditto.
1463 (IX86_BUILTIN_COMNEPS): Ditto.
1464 (IX86_BUILTIN_COMLTPS): Ditto.
1465 (IX86_BUILTIN_COMLEPS): Ditto.
1466 (IX86_BUILTIN_COMGTPS): Ditto.
1467 (IX86_BUILTIN_COMGEPS): Ditto.
1468 (IX86_BUILTIN_COMUEQPS): Ditto.
1469 (IX86_BUILTIN_COMUNEPS): Ditto.
1470 (IX86_BUILTIN_COMULTPS): Ditto.
1471 (IX86_BUILTIN_COMULEPS): Ditto.
1472 (IX86_BUILTIN_COMUGTPS): Ditto.
1473 (IX86_BUILTIN_COMUGEPS): Ditto.
1474 (IX86_BUILTIN_COMORDPS): Ditto.
1475 (IX86_BUILTIN_COMUNORDPS): Ditto.
1476 (IX86_BUILTIN_COMFALSEPS): Ditto.
1477 (IX86_BUILTIN_COMTRUEPS): Ditto.
1478 (IX86_BUILTIN_COMEQPD): Ditto.
1479 (IX86_BUILTIN_COMNEPD): Ditto.
1480 (IX86_BUILTIN_COMLTPD): Ditto.
1481 (IX86_BUILTIN_COMLEPD): Ditto.
1482 (IX86_BUILTIN_COMGTPD): Ditto.
1483 (IX86_BUILTIN_COMGEPD): Ditto.
1484 (IX86_BUILTIN_COMUEQPD): Ditto.
1485 (IX86_BUILTIN_COMUNEPD): Ditto.
1486 (IX86_BUILTIN_COMULTPD): Ditto.
1487 (IX86_BUILTIN_COMULEPD): Ditto.
1488 (IX86_BUILTIN_COMUGTPD): Ditto.
1489 (IX86_BUILTIN_COMUGEPD): Ditto.
1490 (IX86_BUILTIN_COMORDPD): Ditto.
1491 (IX86_BUILTIN_COMUNORDPD): Ditto.
1492 (IX86_BUILTIN_COMFALSEPD): Ditto.
1493 (IX86_BUILTIN_COMTRUEPD): Ditto.
1494 (IX86_BUILTIN_PCOMEQUB): Ditto.
1495 (IX86_BUILTIN_PCOMNEUB): Ditto.
1496 (IX86_BUILTIN_PCOMLTUB): Ditto.
1497 (IX86_BUILTIN_PCOMLEUB): Ditto.
1498 (IX86_BUILTIN_PCOMGTUB): Ditto.
1499 (IX86_BUILTIN_PCOMGEUB): Ditto.
1500 (IX86_BUILTIN_PCOMFALSEUB): Ditto.
1501 (IX86_BUILTIN_PCOMTRUEUB): Ditto.
1502 (IX86_BUILTIN_PCOMEQUW): Ditto.
1503 (IX86_BUILTIN_PCOMNEUW): Ditto.
1504 (IX86_BUILTIN_PCOMLTUW): Ditto.
1505 (IX86_BUILTIN_PCOMLEUW): Ditto.
1506 (IX86_BUILTIN_PCOMGTUW): Ditto.
1507 (IX86_BUILTIN_PCOMGEUW): Ditto.
1508 (IX86_BUILTIN_PCOMFALSEUW): Ditto.
1509 (IX86_BUILTIN_PCOMTRUEUW): Ditto.
1510 (IX86_BUILTIN_PCOMEQUD): Ditto.
1511 (IX86_BUILTIN_PCOMNEUD): Ditto.
1512 (IX86_BUILTIN_PCOMLTUD): Ditto.
1513 (IX86_BUILTIN_PCOMLEUD): Ditto.
1514 (IX86_BUILTIN_PCOMGTUD): Ditto.
1515 (IX86_BUILTIN_PCOMGEUD): Ditto.
1516 (IX86_BUILTIN_PCOMFALSEUD): Ditto.
1517 (IX86_BUILTIN_PCOMTRUEUD): Ditto.
1518 (IX86_BUILTIN_PCOMEQUQ): Ditto.
1519 (IX86_BUILTIN_PCOMNEUQ): Ditto.
1520 (IX86_BUILTIN_PCOMLTUQ): Ditto.
1521 (IX86_BUILTIN_PCOMLEUQ): Ditto.
1522 (IX86_BUILTIN_PCOMGTUQ): Ditto.
1523 (IX86_BUILTIN_PCOMGEUQ): Ditto.
1524 (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
1525 (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
1526 (IX86_BUILTIN_PCOMEQB): Ditto.
1527 (IX86_BUILTIN_PCOMNEB): Ditto.
1528 (IX86_BUILTIN_PCOMLTB): Ditto.
1529 (IX86_BUILTIN_PCOMLEB): Ditto.
1530 (IX86_BUILTIN_PCOMGTB): Ditto.
1531 (IX86_BUILTIN_PCOMGEB): Ditto.
1532 (IX86_BUILTIN_PCOMFALSEB): Ditto.
1533 (IX86_BUILTIN_PCOMTRUEB): Ditto.
1534 (IX86_BUILTIN_PCOMEQW): Ditto.
1535 (IX86_BUILTIN_PCOMNEW): Ditto.
1536 (IX86_BUILTIN_PCOMLTW): Ditto.
1537 (IX86_BUILTIN_PCOMLEW): Ditto.
1538 (IX86_BUILTIN_PCOMGTW): Ditto.
1539 (IX86_BUILTIN_PCOMGEW): Ditto.
1540 (IX86_BUILTIN_PCOMFALSEW): Ditto.
1541 (IX86_BUILTIN_PCOMTRUEW): Ditto.
1542 (IX86_BUILTIN_PCOMEQD): Ditto.
1543 (IX86_BUILTIN_PCOMNED): Ditto.
1544 (IX86_BUILTIN_PCOMLTD): Ditto.
1545 (IX86_BUILTIN_PCOMLED): Ditto.
1546 (IX86_BUILTIN_PCOMGTD): Ditto.
1547 (IX86_BUILTIN_PCOMGED): Ditto.
1548 (IX86_BUILTIN_PCOMFALSED): Ditto.
1549 (IX86_BUILTIN_PCOMTRUED): Ditto.
1550 (IX86_BUILTIN_PCOMEQQ): Ditto.
1551 (IX86_BUILTIN_PCOMNEQ): Ditto.
1552 (IX86_BUILTIN_PCOMLTQ): Ditto.
1553 (IX86_BUILTIN_PCOMLEQ): Ditto.
1554 (IX86_BUILTIN_PCOMGTQ): Ditto.
1555 (IX86_BUILTIN_PCOMGEQ): Ditto.
1556 (IX86_BUILTIN_PCOMFALSEQ): Ditto.
1557 (IX86_BUILTIN_PCOMTRUEQ): Ditto.
1558 (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
1559 OPTION_MASK_ISA_ROUND for instructions that are shared between
1561 (bdesc_2arg): Ditto.
1562 (bdesc_sse_3arg): Ditto.
1563 (enum multi_arg_type): New enum for describing the various SSE5
1564 intrinsic argument types.
1565 (bdesc_multi_arg): New table for SSE5 intrinsics.
1566 (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
1567 (ix86_expand_multi_arg_builtin): New function for creating SSE5
1569 (ix86_expand_builtin): Add SSE5 intrinsic support.
1570 (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
1571 operand instructions.
1572 (ix86_expand_sse5_multiple_memory): New function to split the
1573 second memory reference from SSE5 instructions.
1574 (type_has_variadic_args_p): Delete in favor of stdarg_p.
1575 (ix86_return_pops_args): Use stdarg_p to determine if the function
1576 has variable arguments.
1577 (ix86_setup_incoming_varargs): Ditto.
1578 (x86_this_parameter): Ditto.
1580 * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
1582 (ix86_expand_sse5_pack): Ditto.
1583 (ix86_sse5_valid_op_p): Ditto.
1584 (ix86_expand_sse5_multiple_memory): Ditto.
1586 * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
1587 constant for SSE5 support.
1588 (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
1589 (UNSPEC_SSE5_TRUEFALSE): Ditto.
1590 (UNSPEC_SSE5_PERMUTE): Ditto.
1591 (UNSPEC_SSE5_ASHIFT): Ditto.
1592 (UNSPEC_SSE5_LSHIFT): Ditto.
1593 (UNSPEC_FRCZ): Ditto.
1594 (UNSPEC_CVTPH2PS): Ditto.
1595 (UNSPEC_CVTPS2PH): Ditto.
1596 (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
1598 (COM_FALSE_S): Ditto.
1599 (COM_FALSE_P): Ditto.
1600 (COM_TRUE_S): Ditto.
1601 (COM_TRUE_P): Ditto.
1602 (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
1603 (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
1605 (memory attribute): Ditto.
1606 (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
1607 Use SSE4_1_ROUND_* constants instead of hard coded numbers.
1608 (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
1609 (floor<mode>2): Ditto.
1610 (ceil<mode>2): Ditto.
1611 (btrunc<mode>2): Ditto.
1612 (nearbyintdf2): Ditto.
1613 (nearbyintsf2): Ditto.
1614 (sse_setccsf): Disable if SSE5.
1615 (sse_setccdf): Ditto.
1616 (sse5_setcc<mode>): New support for SSE5 conditional move.
1617 (sse5_pcmov_<mode>): Ditto.
1619 * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
1621 (SSEMODEF2P): Ditto.
1622 (ssemodesuffixf4): New mode attribute for SSE5.
1623 (ssemodesuffixf2s): Ditto.
1624 (ssemodesuffixf2c): Ditto.
1625 (sserotatemax): Ditto.
1626 (ssescalarmode): Ditto.
1627 (sse_maskcmpv4sf3): Disable if SSE5.
1628 (sse_maskcmpv2df3): Ditto.
1629 (sse_vmmaskcmpv4sf3): Ditto.
1630 (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
1632 (sse5_vmfmadd<mode>4): Ditto.
1633 (sse5_fmsub<mode>4): Ditto.
1634 (sse5_vmfmsub<mode>4): Ditto.
1635 (sse5_fnmadd<mode>4): Ditto.
1636 (sse5_vmfnmadd<mode>4): Ditto.
1637 (sse5_fnmsub<mode>4): Ditto.
1638 (sse5_vmfnmsub<mode>4): Ditto.
1639 (sse5i_fmadd<mode>4): Ditto.
1640 (sse5i_fmsub<mode>4): Ditto.
1641 (sse5i_fnmadd<mode>4): Ditto.
1642 (sse5i_fnmsub<mode>4): Ditto.
1643 (sse5i_vmfmadd<mode>4): Ditto.
1644 (sse5i_vmfmsub<mode>4): Ditto.
1645 (sse5i_vmfnmadd<mode>4): Ditto.
1646 (sse5i_vmfnmsub<mode>4): Ditto.
1647 (mulv16qi3): Add SSE5 support.
1649 (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
1650 (sse2_mulv4si3): Disable if SSE5.
1651 (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
1652 (sse4_1_roundps): Ditto.
1653 (sse4_1_roundsd): Ditto.
1654 (sse4_1_roundss): Ditto.
1655 (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
1657 (sse_maskcmpsf3): Ditto.
1658 (sse_vmmaskcmpv4sf3): Ditto.
1659 (sse2_maskcmpv2df3): Ditto.
1660 (sse2_maskcmpdf3): Ditto.
1661 (sse2_vmmaskcmpv2df3): Ditto.
1662 (sse2_eq<mode>3): Ditto.
1663 (sse2_gt<mode>3): Ditto.
1664 (sse5_pcmov_<mode>): Add SSE5 support.
1665 (vec_unpacku_hi_v16qi): Ditto.
1666 (vec_unpacks_hi_v16qi): Ditto.
1667 (vec_unpacku_lo_v16qi): Ditto.
1668 (vec_unpacks_lo_v16qi): Ditto.
1669 (vec_unpacku_hi_v8hi): Ditto.
1670 (vec_unpacks_hi_v8hi): Ditto.
1671 (vec_unpacku_lo_v8hi): Ditto.
1672 (vec_unpacks_lo_v8hi): Ditto.
1673 (vec_unpacku_hi_v4si): Ditto.
1674 (vec_unpacks_hi_v4si): Ditto.
1675 (vec_unpacku_lo_v4si): Ditto.
1676 (vec_unpacks_lo_v4si): Ditto.
1677 (sse5_pmacsww): New SSE5 intrinsic insn.
1678 (sse5_pmacssww): Ditto.
1679 (sse5_pmacsdd): Ditto.
1680 (sse5_pmacssdd): Ditto.
1681 (sse5_pmacssdql): Ditto.
1682 (sse5_pmacssdqh): Ditto.
1683 (sse5_pmacsdqh): Ditto.
1684 (sse5_pmacsswd): Ditto.
1685 (sse5_pmacswd): Ditto.
1686 (sse5_pmadcsswd): Ditto.
1687 (sse5_pmadcswd): Ditto.
1688 (sse5_pcmov_<move>): Conditional move support on SSE5.
1689 (sse5_phaddbw): New SSE5 intrinsic insn.
1690 (sse5_phaddbd): Ditto.
1691 (sse5_phaddbq): Ditto.
1692 (sse5_phaddwd): Ditto.
1693 (sse5_phaddwq): Ditto.
1694 (sse5_phadddq): Ditto.
1695 (sse5_phaddubw): Ditto.
1696 (sse5_phaddubd): Ditto.
1697 (sse5_phaddubq): Ditto.
1698 (sse5_phadduwd): Ditto.
1699 (sse5_phadduwq): Ditto.
1700 (sse5_phaddudq): Ditto.
1701 (sse5_phsubbw): Ditto.
1702 (sse5_phsubwd): Ditto.
1703 (sse5_phsubdq): Ditto.
1704 (sse5_pperm): Ditto.
1705 (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
1706 (sse5_pperm_zero_v16qi_v8hi): Ditto.
1707 (sse5_pperm_sign_v8hi_v4si): Ditto.
1708 (sse5_pperm_zero_v8hi_v4si): Ditto.
1709 (sse5_pperm_sign_v4si_v2di): Ditto.
1710 (sse5_pperm_sign_v4si_v2di): Ditto.
1711 (sse5_pperm_pack_v2di_v4si): Ditto.
1712 (sse5_pperm_pack_v4si_v8hi): Ditto.
1713 (sse5_pperm_pack_v8hi_v16qi): Ditto.
1714 (sse5_perm<mode>): New SSE5 intrinsic insn.
1715 (rotl<mode>3): Ditto.
1716 (sse5_rotl<mode>3): Ditto.
1717 (sse5_ashl<mode>3): Ditto.
1718 (sse5_lshl<mode>3): Ditto.
1719 (sse5_frcz<mode>2): Ditto.
1720 (sse5s_frcz<mode>2): Ditto.
1721 (sse5_cvtph2ps): Ditto.
1722 (sse5_cvtps2ph): Ditto.
1723 (sse5_vmmaskcmp<mode>3): Ditto.
1724 (sse5_com_tf<mode>3): Ditto.
1725 (sse5_maskcmp<mode>3): Ditto.
1726 (sse5_maskcmp_uns<mode>3): Ditto.
1727 (sse5_maskcmp_uns2<mode>3): Ditto.
1728 (sse5_pcom_tf<mode>3): Ditto.
1730 * config/i386/predicates.md (const_0_to_31_operand): New predicate
1732 (sse5_comparison_float_operator): New predicate to match the
1733 comparison operators supported by the SSE5 com instruction.
1734 (ix86_comparison_int_operator): New predicate to match just the
1735 signed int comparisons.
1736 (ix86_comparison_uns_operator): New predicate to match just the
1737 unsigned int comparisons.
1739 * doc/invoke.texi (-msse5): Add documentation.
1740 (-mfused-madd): Ditto.
1742 * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
1744 * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
1746 (x86_64-*-*): Ditto.
1748 * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
1750 * config/i386/bmmintrin.h: New file, provide common x86 compiler
1751 intrinisics for SSE5.
1753 * config/i386/smmintrin.h: Move instructions shared with SSE5 to
1756 * config/i386/mmintrin-common.h: New file, to contain common
1757 instructions between SSE4.1 and SSE5.
1759 * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
1760 FOREACH_FUNCTION_ARGS to iterate over the argument list.
1761 (gen_regparm_prefix): Ditto.
1763 * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
1764 FOREACH_FUNCTION_ARGS to iterate over the argument list. Use
1765 prototype_p to determine if a function is prototyped.
1767 2007-09-12 Janis Johnson <janis187@us.ibm.com>
1769 * config/dfp-bit.c (dfp_conversion_exception): New function.
1770 (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
1771 (DFP_TO_INT): Ditto.
1772 (INT_TO_DFP): Ditto.
1773 * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
1775 2007-09-12 Jakub Jelinek <jakub@redhat.com>
1778 * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
1779 before sp restoration even when total_size is 0, but
1780 frame_pointer_needed.
1782 2007-09-12 Bob Wilson <bob.wilson@acm.org>
1784 * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
1785 (xtensa_copy_incoming_a7): Use start_sequence instead of
1786 push_to_sequence. Stash insns in vararg_a7_copy for builtin_saveregs.
1787 (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
1788 of the saveregs sequence.
1790 2007-09-12 Richard Sandiford <richard@codesourcery.com>
1792 * c-tree.h (grokfield): Add a "tree *" argument.
1793 * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
1794 Chain nested decl attributes to it. Don't call decl_attributes here.
1795 (groktypename): Pass grokdeclarator a pointer to the attribute list.
1796 (start_decl, grokparm, push_parm_decl, start_function): Likewise.
1797 (grokfield): Take a pointer to the decl's attributes and pass
1798 it to grokdeclarator.
1799 * c-parser.c (c_parser_struct_declaration): Update the calls to
1800 grokfield. Call decl_attributes for anonymous struct and union
1803 2007-09-12 Jan Hubicka <jh@suse.cz>
1805 * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
1807 2007-09-12 Ira Rosen <irar@il.ibm.com>
1809 PR tree-optimization/32377
1810 * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
1811 between positive and negative dependence distance using DDR_REVERSED_P.
1813 2007-09-12 Dorit Nuzman <dorit@il.ibm.com>
1815 PR tree-optimization/33373
1816 * tree-vect-analyze (vect_determine_vectorization_factor): Call
1817 TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT.
1819 2007-09-12 Jan Hubicka <jh@suse.cz>
1822 * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
1825 2007-09-12 Christian Bruel <christian.bruel@st.com>
1827 * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
1828 * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed.
1830 2007-09-12 Ira Rosen <irar@il.ibm.com>
1832 * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
1833 for oprnd1 if not required.
1834 (vectorizable_operation): Use scalar operand in SLP in case of
1835 shift with scalar argument.
1837 2007-09-12 Ira Rosen <irar@il.ibm.com>
1839 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum
1842 2007-09-11 James E. Wilson <wilson@specifix.com>
1844 * defaults.h (DWARF2_UNWIND_INFO): Don't define if
1845 TARGET_UNWIND_INFO is defined.
1846 * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
1849 2007-09-12 Kaz Kojima <kkojima@gcc.gnu.org>
1851 * config/sh/sh.c (calc_live_regs): Use
1852 current_function_saves_all_registers instead of
1853 current_function_has_nonlocal_label.
1854 (sh_allocate_initial_value): Likewise.
1855 (sh_get_pr_initial_val): Likewise.
1856 * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
1857 * config/sh/sh.md (load_ra): Likewise.
1859 2007-09-12 Hans-Peter Nilsson <hp@axis.com>
1861 * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
1864 * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
1865 GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
1867 2007-09-12 Sa Liu <saliu@de.ibm.com>
1869 * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
1870 operands to DFmode GE or LE compares.
1872 2007-09-12 Bernd Schmidt <bernd.schmidt@analog.com>
1874 * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
1875 REG_CLASS_NAMES): Add P0REGS.
1876 (REGNO_REG_CLASS): Return it where appropriate.
1877 (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
1878 (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
1879 * doc/md.texi (Blackfin family): Document 'q' constraints.
1881 2007-09-11 Steve Kenton <skenton@ou.edu>
1883 * pa/linux-unwind.h: Guard with inhibit_libc.
1884 * pa/hpux-unwind.h: Likewise.
1886 2007-09-11 David Daney <ddaney@avtrex.com>
1888 * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
1889 * doc/install.texi: Document new --with-llsc and --without-llsc
1891 * config.gcc: Handle --with-llsc and --without-llsc configure options.
1892 * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
1893 in %| and %- operand codes. Depend on GENERATE_SYNC instead of
1895 (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
1896 sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
1897 sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
1898 sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
1899 sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
1900 GENERATE_LL_SC instead of ISA_HAS_LL_SC.
1901 * config/mips/mips.opt (mllsc): New option.
1902 * config/mips/mips.c (mips_llsc): Define variable.
1903 (mips_handle_option): Handle mllsc option.
1904 (override_options): Set mips_print_operand_punct for '|' and '-'.
1905 (print_operand): Add new %| and %- operand codes.
1906 * config/mips/mips.h (mips_llsc_setting): New enum type.
1907 (mips_llsc): Declare.
1908 (OPTION_DEFAULT_SPECS): Add llsc handling.
1909 (GENERATE_SYNC): New macro.
1910 (GENERATE_LL_SC): New macro.
1911 (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
1912 MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
1913 MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
1914 in %| and %- operand codes.
1916 2007-09-11 Eric Botcazou <ebotcazou@adacore.com>
1918 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
1919 TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
1921 2007-09-11 Jason Merrill <jason@redhat.com>
1924 * stor-layout.c (layout_decl): Do pack variable size fields.
1926 2007-09-11 Maxim Kuvyrkov <maxim@codesourcery.com>
1928 * config/m68k/predicates.md (movsi_const0_operand,
1929 non_symbolic_call_operand): New predicates.
1931 * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
1933 * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
1934 Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
1935 CW, CZ, CS, Ap and Ac.
1937 * config/m68k/m68k.md (UNSPEC_IB): New constant.
1938 (constraints.md): New include.
1939 (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
1940 opx_mem, opy_mem, op_mem, guess, split): New attributes.
1941 (movdf_internal): Name pattern. Fix to use alternatives. Add split.
1943 (pushdi): Add split.
1944 (tstsi_internal): Name pattern. Fix to use alternatives. Specify
1945 attributes. Split tstsi_internal_68020_cf from it.
1946 (tstsi_internal_68020_cf): New pattern.
1947 (tsthi_internal, tstqi_internal): Name pattern. Specify attributes.
1948 (tst<mode>_cf): Specify attributea.
1949 (cmpsi_cf): Name pattern. Specify attributes.
1950 (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
1951 (pushexthisi_const): Fix to use alternatives. Specify
1953 (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
1954 from it. Fix to use alternatives. Specify attributes.
1955 (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
1956 (movsi_cf, movstrictqi_cf): Fix to use alternatives. Specify
1958 (movsf_cf_soft): Specify attributes.
1959 (movdf_cf_soft): Add split.
1960 (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
1961 cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
1962 68k_extendqisi2, truncdfsf2_cf): Specify attributes.
1963 (truncdfsf2_68881): Name pattern. Specify attributes.
1964 (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
1965 floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
1966 fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
1968 (addsi3_5200): Fix to use alternatives. Specify attributes.
1970 (add<mode>3_cf, subdi_dishl32): Specify attributes.
1971 (subsi3): Add alternative for subq.l. Specify attributes.
1972 (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
1973 (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern. Specify
1975 (umulhisi3): Specify attributes.
1976 (mulhisisi3_z): Name pattern. Specify attributes.
1977 (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
1978 sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
1979 subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
1980 bsetmemqi): Specify attributes.
1981 (bsetmemqi_ext): Name pattern. Specify attributes.
1982 (bclrmemqi): Specify attributes.
1983 (bclrmemqi_ext, scc, sls): Name pattern. Specify attributes.
1984 (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
1986 (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
1987 pattern. Specify attributes.
1988 (jump): Specify attributes.
1989 (tablejump_internal): Name pattern. Specify attributes.
1990 (call_value): Split into non_symbolic_call_value,
1991 symbolic_call_value_jsr, symbolic_call_value_bsr. Fix to use
1992 alternatives. Specify attributes.
1993 (non_symbolic_call_value, symbolic_call_value_jsr,
1994 symbolic_call_value_bsr): New patterns.
1995 (nop, return, unlink, indirect_jump): Specify attributes.
1996 (trap): Fix condition. Specify attributes.
1999 * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
2000 (override_options): Initialize it. Initialize m68k_sched_cpu.
2001 (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
2002 (const_method): Make global, rename to m68k_const_method.
2003 (const_int_cost, output_move_const_into_data_reg): Update.
2004 (output_move_double): Parametrize to emit rtl code, rename to
2006 (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
2007 emit_movsi): New static functions.
2008 (output_move_double): New function with semantics of old
2010 (m68k_emit_move_double): New function.
2011 (m68k_sched_cpu): New variable.
2012 (attr_op_type): New enum.
2013 (sched_guess_p): New variable.
2014 (sched_address_type, sched_operand_type, sched_attr_op_type):
2015 New static functions.
2016 (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2017 m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
2018 (sched_branch_type): New static variable.
2019 (m68k_sched_branch_type): New function.
2020 * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
2021 (m68k_symbolic_call_var): Declare.
2022 (M68K_CONST_METHOD): Rename from CONST_METHOD. Move here from m68k.c.
2023 (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
2024 m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2025 m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
2028 2007-09-11 Jakub Jelinek <jakub@redhat.com>
2030 * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
2031 * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
2032 error if __builtin_va_arg_pack_len () wasn't optimized out during
2034 * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
2035 with the number of inline's anonymous arguments.
2036 * doc/extend.texi: Document __builtin_va_arg_pack_len ().
2038 2007-09-11 Zdenek Dvorak <ook@ucw.cz>
2040 * fold-const.c (extract_muldiv_1): Do not simplify
2043 2007-09-11 Jan Hubicka <jh@suse.cz>
2045 * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
2046 (TARGET_INTER_UNIT_CONVERSIONS): New.
2047 * i386.md (floatsi expanders): Remove redundant check for SImode
2048 source; offload to memory when asked for.
2049 (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
2050 floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2052 (floatsisf2_mixed_memory, floatsisf2_sse_memory,
2053 floatsidf2_mixed_memory, floatsidf2_sse_memory
2054 floatdisf2_mixed_memory, floatsisf2_sse_memory,
2055 floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
2057 2007-09-11 Jan Hubicka <jh@suse.cz>
2059 * toplev.c (process_options): all frontends now do unit-at-a-time.
2060 * cgraphunit.c: update comments.
2061 (cgraph_expand_function): call passmanager dirrectly; emit thunks.
2062 * c-decl.c (finish_function): use cgraph_add_new_function.
2063 * function.c (expand_function_end): We are always unit-at-a-time.
2065 2007-09-11 Richard Sandiford <richard@codesourcery.com>
2067 * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
2068 settings for MIPS16.
2069 (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
2071 2007-09-11 Richard Sandiford <richard@codesourcery.com>
2073 * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
2074 SYMBOL_FORCE_TO_MEM constants.
2075 (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
2076 (mips16_rewrite_pool_refs_info): New structure.
2077 (mips16_rewrite_pool_constant): New function, split out from...
2078 (mips16_rewrite_pool_refs): ...here. Take a pointer to a
2079 mips16_rewrite_pool_refs_info structure rather than a pointer
2080 to a constant pool. Force force_to_mem_operands into memory.
2081 (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
2082 * config/mips/predicates.md (force_to_mem_operand): New predicate.
2083 * config/mips/constraints.md (kf): New constraint.
2084 * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
2085 (*movsi_mips16): Likewise.
2087 2007-09-11 Richard Sandiford <richard@codesourcery.com>
2088 Nigel Stephens <nigel@mips.com>
2089 David Ung <davidu@mips.com>
2091 * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
2092 * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
2093 (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
2094 (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
2095 (mips_zero_extend_cost): New functions.
2096 (mips_rtx_costs): Treat COMPARE constants as having zero cost.
2097 Use the new functions. Tweak many cost estimates, both here
2098 and in the new subroutines. Return false when the cost of the
2099 operands has not been calculated. Check for *clear_upper32.
2100 Check for floating-point multiply-add, reciprocal and rsqrt
2101 patterns. Handle comparison and rotation codes.
2103 2007-09-11 Danny Smith <dannysmith@users.sourceforge.net>
2105 * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
2107 * config/i386/i386.c (get_dllimport_decl): Don't strip
2110 2007-09-10 Janis Johnson <janis187@us.ibm.com>
2113 * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
2114 declarations to top.
2115 (DFP_TO_BFP): Use for either XFmode or TFmode.
2116 (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
2118 * config/dfp-bit.h: Include float.h.
2119 (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
2120 double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
2121 which doesn't mean the same thing.
2122 (BFP_KIND): Use 4 to mean TFmode.
2123 (BFP_FMT): Specify the number of decimal digits based on the
2124 number of mantissa digits.
2125 (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
2126 (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
2127 (STR_TO_BFP): Use strtold for XFmode or TFmode.
2128 (TFtype): Define if TFmode is supported.
2129 * doc/libgcc.texi (Decimal float library routines): Document
2130 TF conversion functions.
2132 2007-09-10 Chao-ying Fu <fu@mips.com>
2134 * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
2135 (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
2136 (mips_emit_compare): Process fixed-point modes.
2137 (mips_pad_arg_upward): Support fixed-point types.
2138 (override_options): Allow fixed-point modes in accumulators.
2139 (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
2140 (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
2141 V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
2142 (mips_scalar_mode_supported_p): New function to accept fixed-point
2143 modes if the width is not greater than two BITS_PER_WORD.
2144 * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2145 LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2146 SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2147 LONG_LONG_ACCUM_TYPE_SIZE): Define.
2148 * config/mips/mips.md ("d"): Update mode attribute for fixed-point
2150 ("IMODE"): New mode attribute.
2151 (mips-fixed.md): Include.
2152 * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
2154 * config/mips/mips-fixed.md: New file.
2156 2007-09-11 Ben Elliston <bje@au.ibm.com>
2158 * config/spu/spu.md: Formatting fixes.
2160 2007-09-10 Janis Johnson <janis187@us.ibm.com>
2162 * config/dfp-bit.c (dfp_unary_func): Delete.
2163 (dfp_unary_op): Delete.
2164 (dfp_binary_op): Use decFloat functions instead of decNumber
2165 functions for binary operations.
2166 (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
2167 (dnn_binary_op): Call dfp_binary_op with decFloat rather than
2169 (dfp_compare_op): Use decFloat functions insteadof decNumber
2170 functions for comparisons.
2171 (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
2172 (dnn_binary_op): Call dfp_compare_op with decFloat rather than
2174 (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
2175 call to dxx_binary_op and decFloat function.
2176 (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
2177 calls to dxx_binary_op and decFloat function.
2178 * config/dfp-bit.h: Include decFloat header files.
2179 (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
2180 DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
2181 DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
2182 DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
2184 2007-09-10 Harsha Jagasia <harsha.jagasia@amd.com>
2185 Jan Sjodin <jan.sjodin@amd.com>
2187 * tree-vect-analyze.c (vect_analyze_operations): Change
2188 comparison of loop iterations with threshold to less than
2189 or equal to instead of less than. Reduce
2190 min_scalar_loop_bound by one.
2191 * tree-vect-transform.c (vect_estimate_min_profitable_iters):
2192 Change prologue and epilogue iterations estimate to vf/2,
2193 when unknown at compile-time. Change versioning guard
2194 cost to taken_branch_cost. If peeling for alignment is
2195 unknown at compile-time, change peel guard costs to one
2196 taken branch and one not-taken branch per peeled loop.
2197 If peeling for alignment is known but number of scalar loop
2198 iterations is unknown at compile-time, change peel guard
2199 costs to one taken branch per peeled loop. Change the cost
2200 model equation to consider vector iterations as the loop
2201 iterations less the prologue and epilogue iterations.
2202 Change outside vector cost check to less than or equal to
2203 zero instead of equal to zero.
2204 (vect_do_peeling_for_loop_bound): Reduce
2205 min_scalar_loop_bound by one.
2206 * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
2207 TARG_COND_NOT_TAKEN_BRANCH_COST.
2208 * config/i386/i386.h (processor_costs): Add
2209 scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
2210 vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
2211 vec_align_load_cost, vect_unalign_load_cost,
2212 vec_store_cost, cond_taken_branch_cost,
2213 cond_not_taken_branch_cost.
2214 Define macros for x86 costs.
2215 * config/i386/i386.c:
2216 (size_cost): Set scalar_stmt_cost, scalar_load_cost,
2217 scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
2218 scalar_to_vec_cost, vec_align_load_cost,
2219 vect_unalign_load_cost, vec_store_cost,
2220 cond_taken_branch_cost, cond_not_taken_branch_cost to one.
2221 (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
2222 geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost,
2223 core2_cost, generic64_cost, generic32_cost): Set to default
2225 (k8_cost, amdfam10_cost): Costs for vectorization tuned.
2226 (x86_builtin_vectorization_cost): New.
2228 2007-09-10 Janis Johnson <janis187@us.ibm.com>
2229 Ben Elliston <bje@au.ibm.com>
2231 * dfp.c: Include decimal128Local.h;
2232 (dfp_byte_swap): Remove.
2233 (encode_decimal32, decode_decimal32): Don't handle endianness.
2234 (encode_decimal64, decode_decimal64): Ditto.
2235 (encode_decimal128, decode_decimal128): Ditto.
2236 * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
2238 (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
2240 (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
2241 * Makefile.in (DECNUM_H): Add decimal128Local.h.
2243 2007-09-10 David Daney <ddaney@avtrex.com>
2245 * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
2247 (memory_barrier): Rewrote as an insn that clobbers memory.
2249 2007-09-10 Richard Sandiford <richard@codesourcery.com>
2251 * config/mips/mips.c (mips_global_pointer): Check
2252 call_really_used_regs instead of call_used_regs.
2253 (mips_save_reg_p): Likewise. Save all call-saved registers
2254 if current_function_saves_all_registers. Fix indentation.
2255 No longer treat $18 as a special case.
2256 (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
2258 2007-09-10 Richard Sandiford <richard@codesourcery.com>
2260 * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
2261 * config/mips/mips.c (mips_cpu_info_table): Mention it in the
2262 the introductory comment.
2263 (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2264 (override_options): Don't test for it.
2265 * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2266 (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
2267 * config/mips/vr.h: As for config/mips/sde.h.
2269 2007-09-10 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
2270 Revital Eres <eres@il.ibm.com>
2272 * target.h (struct gcc_target.sched): New field: sms_res_mii.
2273 (struct ddg): Define.
2274 * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
2275 (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
2276 * config/spu/spu.c: Include ddg.h.
2277 (TARGET_SCHED_SMS_RES_MII): Define.
2278 (spu_sms_res_mii): New function to calculate mii.
2279 * modulo-sched (res_MII): Use it.
2280 * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
2282 2007-09-10 Andreas Krebbel <krebbel1@de.ibm.com>
2284 * config/s390/s390.c (s390_dump_pool): Create copy of constant
2285 pool entries since they might hold values that must not be shared.
2287 2007-09-10 Uros Bizjak <ubizjak@gmail.com>
2290 * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
2291 Use 'N' operand constraint for op2.
2292 (lshr<mode>3): Ditto.
2293 (ashl<mode>3): Ditto.
2294 (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
2295 (vec_shr_<mode>): Ditto.
2296 * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
2297 IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
2299 2007-09-10 Andreas Krebbel <krebbel1@de.ibm.com>
2301 * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
2302 Change mode macro in the last real_2expN parameter to uppercase.
2304 2007-09-10 Michael Matz <matz@suse.de>
2306 * tree-pass.h (pass_cselim): Declare new pass.
2307 * passes.c (init_optimization_passes): Link in pass_cselim.
2308 * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
2309 tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
2310 cond_store_replacement.
2311 (condstoretemp): New static variable.
2312 (cond_store_replacement): New function.
2313 (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
2314 tree_ssa_phiopt_worker.
2315 (struct name_to_bb): New.
2316 (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
2317 nt_init_block, nt_fini_block): New static functions.
2318 (seen_ssa_names, nontrap_set): New static variables.
2319 (gate_cselim, pass_cselim): Define new pass.
2320 * common.opt (ftree-cselim): New flag.
2321 * toplev.c (process_options): Set flag_tree_cselim if required.
2323 2007-09-10 Hans-Peter Nilsson <hp@axis.com>
2325 * simplify-rtx.c (simplify_relational_operation_1): For recent
2326 canonicalization, don't recurse if op1 equals both PLUS arguments.
2328 2007-09-09 David Daney <ddaney@avtrex.com>
2330 * optabs.c (expand_sync_operation): Use plus insn if minus
2332 (expand_sync_fetch_operation): Ditto.
2334 2007-09-09 H.J. Lu <hongjiu.lu@intel.com>
2336 * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
2338 (*floatsisf2_sse_vector): Likewise.
2340 2007-09-09 Krister Walfridsson <cato@df.lth.se>
2342 * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2344 2007-09-09 H.J. Lu <hongjiu.lu@intel.com>
2346 * config/i386/i386.h (ix86_tune_indices): Rename
2347 X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
2348 (TARGET_USE_VECTOR_CONVERTS): Updated.
2349 * config/i386/i386.c: Likewise.
2351 2007-09-09 Sandra Loosemore <sandra@codesourcery.com>
2352 Nigel Stephens <nigel@mips.com>
2354 * doc/invoke.texi (Overall Options): Add .sx file extension
2355 as a synonym for .S.
2356 * cppspec.c (known_suffixes): Likewise.
2357 * gcc.c (default_compilers): Likewise.
2359 2007-09-09 Rask Ingemann Lambertsen <rask@sygehus.dk>
2362 * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
2363 * simplify-rtx.c (simplify_relational_operation_1): Add the
2364 canonicalization from i386.h.
2365 * doc/md.texi (Canonicalization of Instructions): Document it.
2367 2007-09-09 Jan Hubicka <jh@suse.cz>
2368 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2370 * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
2371 (TARGET_USE_VECTOR_CONVERTS): New.
2372 * i386.md: New post-reload splitters for converting SF to DF and DF to
2374 (floatsi* expander): Special case vector conversions.
2375 (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
2376 floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
2377 floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
2378 (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2379 Disable when doing vector converts.
2380 (floatsi<mode>2_i387): Disable when
2381 * sse.md (vec_dupv2df): Export.
2382 * i386.c (ix86_tune_features): Enable SSE conversions.
2384 2007-09-09 Richard Guenther <rguenther@suse.de>
2386 * tree-ssa-operands.c (add_virtual_operand): Only mark
2387 stores as has_volatile_ops if alias information is not available.
2389 2007-09-09 Revital Eres <eres@il.ibm.com>
2391 * doc/contrib.texi: Add myself.
2393 2007-09-09 Ira Rosen <irar@il.ibm.com>
2395 * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
2396 stmt_vinfo_set_outside_of_loop_cost): New functions.
2397 * tree-vect-transform.c (vect_get_cost_fields): Remove.
2398 (vect_model_simple_cost): Call
2399 stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
2400 field instead of calling vect_get_cost_fields.
2401 (vect_model_store_cost, vect_model_load_cost): Likewise.
2403 2007-09-09 Revital Eres <eres@il.ibm.com>
2405 * config/rs6000/rs6000.c (paired_init_builtins): Add const
2406 declaration to bdesc_paired_preds variable.
2407 (paired_expand_builtin): Likewise.
2409 2007-09-09 Revital Eres <eres@il.ibm.com>
2411 * dbgcnt.def (sms_sched_loop): New counter.
2412 * modulo-sched.c: Use sms_sched_loop instead of
2413 MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
2414 perform swing modulo scheduling on. Include dbgcnt.h.
2415 * Makefile.in: Add DBGCNT_H to modulo-sched.o.
2416 * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
2418 2007-09-09 Uros Bizjak <ubizjak@gmail.com>
2420 * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
2421 Substitute all uses with ...
2422 (MODEF): New mode iterator.
2424 (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
2425 from pre-regalloc define_insn_and_split splitter pattern.
2426 (*fix_trunc<mode>_i387_1): Ditto.
2427 (*fistdi2_1): Ditto.
2428 (*fist<mode>2_1): Ditto.
2429 (frndintxf2_floor): Ditto.
2430 (*fist<mode>2_floor_1): Ditto.
2431 (frndintxf2_ceil): Ditto.
2432 (*fist<mode>2_ceil_1): Ditto.
2433 (frndintxf2_trunc): Ditto.
2434 (frndintxf2_mask_pm): Ditto.
2436 (prologue): Use (const_int 0) as never generated filler insn.
2438 (sibcall_epilogue): Ditto.
2439 (eh_return_si): Ditto.
2440 (eh_return_di): Ditto.
2442 (add<mode>3): Rename from adddf3 and addsf3. Macroize expander
2443 using MODEF mode iterator.
2444 (sub<mode>3): Rename from subdf3 and subsf3. Macroize expander
2445 using MODEF mode iterator.
2446 (mul<mode>3): Rename from muldf3 and mulsf3. Macroize expander
2447 using MODEF mode iterator.
2448 (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
2449 Macroize expander using MODEF mode iterator.
2451 (zero_extendsidi2): Remove operand constraints from expander.
2452 (smuldi3_highpart): Ditto.
2453 (indirect_jump): Ditto.
2456 * config/i386/sse.md (storentv4sf): Ditto.
2457 (storentv2df): Ditto.
2458 (storentv2di): Ditto.
2460 (sse2_cvtpd2ps): Ditto.
2461 (vec_interleave_highv16qi): Ditto.
2462 (vec_interleave_lowv16qi): Ditto.
2463 (vec_interleave_highv8hi): Ditto.
2464 (vec_interleave_lowv8hi): Ditto.
2465 (vec_interleave_highv4si): Ditto.
2466 (vec_interleave_lowv4si): Ditto.
2467 (vec_interleave_highv2di): Ditto.
2468 (vec_interleave_lowv2di): Ditto.
2469 (sse2_maskmovdqu): Ditto.
2470 * config/i386/mmx.md (mmx_maskmovq): Ditto.
2472 2007-09-09 Ira Rosen <irar@il.ibm.com>
2474 * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
2475 (struct _slp_tree, struct _slp_instance): Define new data structures
2476 along macros for their access.
2477 (struct _loop_vec_info): Define new fields: strided_stores,
2478 slp_instances, and slp_unrolling_factor along macros for their access.
2479 (enum slp_vect_type): New.
2480 (struct _stmt_vec_info): Define new field, slp_type, and macros for
2482 (STMT_VINFO_STRIDED_ACCESS): New macro.
2483 (vect_free_slp_tree): Declare.
2484 (vectorizable_load): Add an argument of type slp_tree.
2485 (vectorizable_store, vectorizable_operation, vectorizable_conversion,
2486 vectorizable_assignment): Likewise.
2487 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
2488 Declare (make extern).
2489 * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
2490 (new_loop_vec_info): Likewise.
2491 (destroy_loop_vec_info): Free memory allocated for SLP structures.
2492 * tree-vect-analyze.c: Include recog.h.
2493 (vect_update_slp_costs_according_to_vf): New.
2494 (vect_analyze_operations): Add argument for calls to vectorizable_ ()
2495 functions. For not pure SLP stmts with strided access check that the
2496 group size is power of 2. Update the vectorization factor according to
2497 SLP. Call vect_update_slp_costs_according_to_vf.
2498 (vect_analyze_group_access): New.
2499 (vect_analyze_data_ref_access): Call vect_analyze_group_access.
2500 (vect_free_slp_tree): New functions.
2501 (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
2502 vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
2503 vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
2504 vect_detect_hybrid_slp): Likewise.
2505 (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
2506 and vect_detect_hybrid_slp.
2507 * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
2508 SLP costs into account.
2509 (vect_get_cost_fields): New function.
2510 (vect_model_simple_cost): Make extern, add SLP parameter and handle
2512 (vect_model_store_cost, vect_model_load_cost): Likewise.
2513 (vect_get_constant_vectors): New function.
2514 (vect_get_slp_vect_defs, vect_get_slp_defs,
2515 vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
2516 vect_get_vec_defs): Likewise.
2517 (vectorizable_reduction): Don't handle SLP for now.
2518 (vectorizable_call): Don't handle SLP for now. Add argument to
2519 vect_model_simple_cost.
2520 (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
2521 get SLPed and vectorized defs). Fix indentation and spacing.
2522 (vectorizable_assignment): Handle SLP.
2523 (vectorizable_induction): Don't handle SLP for now.
2524 (vectorizable_operation): Likewise.
2525 (vectorizable_type_demotion): Add argument to
2526 vect_model_simple_cost.
2527 (vectorizable_type_promotion): Likewise.
2528 (vectorizable_store, vectorizable_load): Handle SLP.
2529 (vectorizable_condition): Don't handle SLP for now.
2530 (vect_transform_stmt): Add a new argument for SLP. Check that there is
2531 no SLP transformation required for unsupported cases. Add SLP
2532 argument for supported cases.
2533 (vect_remove_stores): New function.
2534 (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
2535 (vect_transform_loop): Schedule SLP instances.
2536 * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
2538 2007-09-09 Andrew Haley <aph@redhat.com>
2540 * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
2543 2007-09-09 Hans-Peter Nilsson <hp@axis.com>
2545 Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
2546 * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
2547 Similar for what label_refs can go in the JUMP_TARGET field. Split
2548 REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
2549 * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
2550 REG_LABEL when replacing an operand with a LABEL_REF for a
2552 (subst_reloads): When replacing a LABEL_REG with a register,
2553 instead of generating a REG_LABEL note, assert that there already
2554 is one or that the label is a known target for the insn.
2555 * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
2556 note, check the JUMP_LABEL field. Remove "else" after return.
2557 * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
2558 cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
2559 (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
2560 REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
2561 insns. Iterate over all notes; don't assume there's only one.
2562 * cse.c (recorded_label_ref): Adjust comment to refer to
2564 (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
2565 insns, not just NONJUMP_INSN_P.
2566 (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
2567 isn't a jump target.
2568 * jump.c (rebuild_jump_labels): Adjust head comment.
2569 (init_label_info): Ditto. Remove REG_LABEL_OPERAND notes only;
2570 don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
2571 (mark_all_labels): For JUMP_P insns without a target, check if the
2572 the target is noted on the previous nonjump insn.
2573 (mark_jump_label_1): New function, guts from mark_jump_label.
2574 <case IF_THEN_ELSE>: Handle first operand as a non-target when
2575 marking jump target labels.
2576 <case LABEL_REF>: Adjust for whether to generate a
2577 REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
2578 For 'E' format rtl, iterate in descending element order.
2579 (delete_related_insns): Handle both REG_LABEL_TARGET and
2580 REG_LABEL_OPERAND notes. For JUMP_P insns with labels with zero
2581 reference count, delete and fallthrough. Move finding-next-
2582 non-deleted insn last in the function. Look at all INSN_P insns
2583 for REG_LABEL_OPERAND notes.
2584 (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
2586 * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
2587 JUMP_LABEL, output the INSN_UID of it.
2588 * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
2589 and/or REG_LABEL_TARGET.
2590 (add_label_notes): Only add REG_LABEL_OPERAND notes. Put in line
2591 with jump.c copy by only adding notes for labels actually
2592 referenced in the insn.
2593 * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
2594 usage count increment; handle all INSN_P trial insns.
2595 (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
2597 * rtl.h (struct rtx_def) <volatil>: Adjust to mention
2598 REG_LABEL_TARGET and REG_LABEL_OPERAND.
2599 (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
2601 * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
2602 JUMP_P insns and REG_LABEL_OPERAND everywhere.
2603 * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
2604 on all INSN_P insns.
2605 * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
2606 * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
2607 REG_LABEL_OPERAND notes.
2608 * reload1.c (calculate_needs_all_insns): Adjust comments.
2609 (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
2610 * config/alpha/alpha.md (split for load of an address into a
2611 four-insn sequence on Unicos/Mk): Adjust to use
2613 * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
2615 2007-09-09 Laurynas Biveinis <laurynas.biveinis@gmail.com>
2618 2007-09-05 Laurynas Biveinis <laurynas.biveinis@gmail.com>
2619 * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
2620 FOR_BB_INSNS_SAFE instead of for loop.
2621 * cse.c (cse_extended_basic_block): Likewise.
2622 * postreload.c (reload_cse_regs_1): New variable next. Make sure
2623 that the for loop does not invoke NEXT_INSN on a deleted insn.
2624 * function.c (instantiate_virtual_regs): Likewise.
2625 * lower-subreg.c (remove_retval_note): Likewise.
2626 (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
2628 * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
2630 * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
2631 insn, if it's a jump.
2632 (try_redirect_by_replacing_jump): New variable jump_p. Call
2633 tablejump_p before delete_insn_chain.
2634 * reload1.c (reload): New variable next. Make sure that the for
2635 loop does not invoke NEXT_INSN on a deleted insn.
2636 (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
2637 (delete_output_reload): New variable prev. Make sure the the for
2638 loops do not invoke PREV_INSN on a deleted insn.
2640 2007-09-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2642 * pa/constraints.md: Remove 'X' from unused letters comment.
2644 2007-09-08 Richard Guenther <rguenther@suse.de>
2646 * tree-tailcall.c (find_tail_calls): If we don't have aliases
2647 computed check stmt_ann->references_memory instead of counting
2650 2007-09-08 Segher Boessenkool <segher@kernel.crashing.org>
2652 * cse.c (fold_rtx): Use validate_unshare_change() instead of
2653 validate_change() in one more case.
2655 2007-09-08 Zdenek Dvorak <ook@ucw.cz>
2657 PR tree-optimization/32283
2658 * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
2659 estimated_loop_iterations.
2660 (determine_use_iv_cost_condition): Decrease cost of expressions
2661 used in iv elimination.
2663 2007-09-08 Richard Guenther <rguenther@suse.de>
2665 * tree-cfg.c (verify_gimple_expr): Avoid building new
2666 pointer types, use TYPE_POINTER_TO if available instead.
2668 2007-09-08 Uros Bizjak <ubizjak@gmail.com>
2671 PR rtl-optimization/26449
2672 * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
2673 (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
2675 (mulv16qi3): Implement as define_insn_and_split pattern instead of
2676 define_expand. Split insn in split1 pass.
2679 2007-09-08 Dorit Nuzman <dorit@il.ibm.com>
2681 PR tree-optimization/33301
2682 * tree-vect-analyze (analyze_operations): Look at the type of the rhs
2685 2007-09-07 Zdenek Dvorak <ook@ucw.cz>
2687 PR tree-optimization/32183
2688 * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
2690 * tree-ssa-reassoc.c: Include cfgloop.h.
2691 (is_reassociable_op): Add a loop argument and return true only
2693 (linearize_expr): Updated.
2694 (should_break_up_subtract): Likewise.
2695 (linearize_expr_tree): Likewise.
2696 (init_reassoc): Call loop_optimizer_init with
2697 AVOID_CFG_MODIFICATIONS. Remove calculate_dominance_info call
2698 with CDI_DOMINATORS.
2699 (fini_reassoc): Call loop_optimizer_finalize.
2701 2007-09-07 Sterling Augustine <sterling@tensilica.com>
2703 * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
2704 if there is no i-cache.
2706 2007-09-07 Richard Guenther <rguenther@suse.de>
2709 2007-09-06 Richard Guenther <rguenther@suse.de>
2711 PR tree-optimization/32586
2712 * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
2713 folding if nothing changed.
2714 (simplify_unary_expression): New function. Do tree combining
2715 on conversion like codes.
2716 (try_to_simplify): Call it.
2718 2007-09-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2721 * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
2722 (__gthread_active,__gthread_start, __gthread_active_init): New.
2723 * gthr-posix95.h: Likewise.
2725 2007-09-07 Roman Zippel <zippel@linux-m68k.org>
2727 * function.h (struct function): Rename calls_unwind_init
2728 to saves_all_registers.
2729 (current_function_saves_all_registers): Renamed from
2730 current_function_calls_unwind_init.
2731 * reload1.c (reload): Set current_function_saves_all_registers.
2732 * except.c (expand_builtin_unwind_init): Likewise.
2733 * config/m68k/m68k.c (m68k_save_reg): Use
2734 current_function_saves_all_registers to save pic register.
2736 2007-09-07 Janis Johnson <janis187@us.ibm.com>
2738 config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
2739 config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
2741 Reapply reverted changes:
2743 2007-09-06 Jan Hubicka <jh@suse.cz>
2745 * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
2748 2007-09-06 Richard Sandiford <richard@codesourcery.com>
2750 * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
2751 (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
2753 2007-09-05 Janis Johnson <janis187@us.ibm.com>
2755 * optabs.c (expand_float): Convert unsigned integer as signed only
2756 if it provides sufficient accuracy; add mode argument to real_2expN.
2757 (expand_fix): Fix comment typos; extend binary float into mode
2758 wider than destination for converion to unsigned integer; add mode
2759 argument to real_2expN.
2760 * real.c (real_2expN): Add mode argument to special-case decimal
2762 * real.h (real_2expN): Ditto.
2763 * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
2765 (fixed_from_string): Ditto.
2766 (fixed_to_decimal): Ditto.
2767 (fixed_convert_from_real): Ditto.
2768 (real_convert_from_fixed): Ditto.
2769 * config/rs6000/rs6000.md (FP): Include DD and TD modes.
2770 * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
2771 muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
2772 floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
2774 2007-09-07 Diego Novillo <dnovillo@google.com>
2776 * tree-flow.h (const_block_stmt_iterator): Remove.
2777 Update all users to use block_stmt_iterator.
2778 * tree-iterator.h (const_tree_stmt_iterator): Remove.
2779 Update all users to use tree_stmt_iterator.
2781 2007-09-07 Sandra Loosemore <sandra@codesourcery.com>
2783 * config/mips/mips.c (mips_set_current_function): Temporarily
2784 make this a no-op to fix bootstrap errors, pending rewrite.
2786 2007-09-07 Jan Hubicka <jh@suse.cz>
2788 * reorg.c (dbr_schedule): Move code removing placeholder USEs later
2791 2007-09-07 Dorit Nuzman <dorit@il.ibm.com>
2793 PR tree-optimization/33299
2794 * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
2795 uses for all relevant loop-exit phis, not just the first.
2797 2007-09-07 Richard Guenther <rguenther@suse.de>
2800 * tree-ssa-operands.c (access_can_touch_variable): An access
2801 of the form (*p)[0] can touch a variable of same size.
2803 2007-09-07 Jan Hubicka <jh@suse.cz>
2805 * passes.c (init_optimization_passes): Add simple dce and addressable
2807 * tree-ssa.c (execute_update_addresses_taken): New function.
2808 (pass_update_address_taken): New.
2809 * tree-ssa-dse.c (execute_simple_dse): New function.
2810 (pass_simple_dse): New.
2811 * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
2813 2007-09-07 Tobias Burnus <burnus@net-b.de>
2816 * doc/invoke.texi: Fix -Wstrict-overflow= table.
2818 2007-09-07 Richard Guenther <rguenther@suse.de>
2821 2007-09-06 Richard Guenther <rguenther@suse.de>
2823 PR tree-optimization/32586
2824 * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
2825 folding if nothing changed.
2826 (simplify_unary_expression): New function. Do tree combining
2827 on conversion like codes.
2828 (try_to_simplify): Call it.
2830 2007-09-07 Richard Guenther <rguenther@suse.de>
2831 Uros Bizjak <ubizjak@gmail.com>
2833 PR tree-optimization/32821
2834 * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
2835 NULL in the call to set_bb_stmt_list.
2837 2007-09-07 Richard Sandiford <richard@codesourcery.com>
2839 * config/mips/mips.c (build_mips16_call_stub): Emit all direct
2840 float calls here, rather than leaving some to the caller.
2841 Use call_internal_direct and call_value_internal_direct.
2842 * config/mips/mips.md (call_internal_direct): New pattern.
2843 (call_value_internal_direct): Likewise.
2845 2007-09-07 Richard Sandiford <richard@codesourcery.com>
2847 * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
2848 (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
2850 (override_options): Set mips_base_move_loop_invariants.
2852 2007-09-07 Richard Sandiford <richard@codesourcery.com>
2854 * config/mips/mips.opt (mcode-readable=): Move to keep list
2857 2007-09-07 Richard Sandiford <richard@codesourcery.com>
2859 * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
2860 and -mgpopt options. Adjust the -G documentation to match.
2861 * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
2862 * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
2863 function, split out from mips_classify_symbol. Return false for
2864 !TARGET_LOCAL_SDATA.
2865 (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
2866 Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
2867 (override_options): Check whether the -mgpopt setting is consistent
2868 with the other flags.
2869 (symbolic_expression_p): Delete.
2870 (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
2871 and default_elf_select_rtx_section.
2872 (mips_in_small_data_p): Honor section attributes for MIPS16 too.
2873 Return false for local data unless TARGET_LOCAL_SDATA. Likewise
2874 external data and TARGET_EXTERN_SDATA.
2876 2007-09-07 Tobias Burnus <burnus@net-b.de>
2879 * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
2881 2007-09-05 Laurynas Biveinis <laurynas.biveinis@gmail.com>
2883 * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
2884 FOR_BB_INSNS_SAFE instead of for loop.
2885 * cse.c (cse_extended_basic_block): Likewise.
2886 * postreload.c (reload_cse_regs_1): New variable next. Make sure
2887 that the for loop does not invoke NEXT_INSN on a deleted insn.
2888 * function.c (instantiate_virtual_regs): Likewise.
2889 * lower-subreg.c (remove_retval_note): Likewise.
2890 (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
2892 * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
2894 * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
2895 insn, if it's a jump.
2896 (try_redirect_by_replacing_jump): New variable jump_p. Call
2897 tablejump_p before delete_insn_chain.
2898 * reload1.c (reload): New variable next. Make sure that the for
2899 loop does not invoke NEXT_INSN on a deleted insn.
2900 (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
2901 (delete_output_reload): New variable prev. Make sure the the for
2902 loops do not invoke PREV_INSN on a deleted insn.
2904 2007-09-06 Zdenek Dvorak <ook@ucw.cz>
2906 * cgraphbuild.c (rebuild_cgraph_edges): Export.
2907 * cgraph.h (rebuild_cgraph_edges): Declare.
2908 * tree-pass.h (pass_expand_omp_ssa): New.
2909 * omp-low.c (find_omp_clause): Export.
2910 (copy_var_decl): Split from omp_copy_decl_2.
2911 (build_omp_barrier): Return the call to emit instead of emitting
2913 (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
2915 (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
2916 expand_omp_for_generic, expand_omp_for_static_nochunk,
2917 expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
2918 Adapted to work on SSA form.
2919 (execute_expand_omp): Do not invalidate dominance information.
2920 (gate_expand_omp): Do not run with -fopenmp-ssa flag.
2921 (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
2922 * gimplify.c (gimplify_omp_for): Ensure that the control variable is
2924 (force_gimple_operand): Allow gimplifying code expressions without
2926 * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
2927 * common.opt (fopenmp-ssa): New.
2928 * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
2929 * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
2930 * tree-cfg.c: Include tree-inline.h.
2931 (struct move_stmt_d): Replace vars_to_remove by vars_map field.
2932 (replace_by_duplicate_decl, replace_ssa_name,
2933 mark_virtual_ops_in_region): New functions.
2934 (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
2935 to work on SSA form.
2936 * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
2937 * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
2940 2007-09-06 Laurynas Biveinis <laurynas.biveinis@gmail.com>
2942 * tree-loop-linear.c: Include obstack.h.
2943 (linear_transform_loops): New obstack lambda_obstack.
2944 Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
2945 lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
2946 and free afterwards.
2947 * lambda.h (struct obstack): New forward declaration.
2948 (lambda_linear_expression_new): New parameter of type struct
2950 (lambda_loopnest_new): Likewise.
2951 (lambda_loopnest_transform): Likewise.
2952 (lambda_body_vector_new): Likewise.
2953 (lambda_body_vector_compute_new): Likewise.
2954 (gcc_loopnest_to_lambda_loopnest): Likewise.
2955 (lambda_loopnest_to_gcc_loopnest): Likewise.
2956 * lambda-code.c: Include obstack.h.
2957 (lambda_lattice_new): New parameter lambda_obstack. Use it for
2959 (lambda_body_vector_new): Likewise.
2960 (lambda_linear_expression_new): Likewise.
2961 (lambda_lattice_new): Likewise.
2962 (lambda_loopnest_new): Likewise. Additionally use obstack to
2963 allocate LN_LOOPS(ret).
2964 (lambda_lattice_compute_base): New parameter lambda_obstack. Pass
2965 it to lambda_lattice_new.
2966 (lambda_body_vector_compute_new): New parameter lambda_obstack.
2967 Pass it to lambda_body_vector_new.
2968 (lambda_lattice_compute_base): New paramater lambda_obstack. Pass
2969 it to lambda_lattice_new.
2970 (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
2971 Pass it to lambda_loopnest_new, lambda_linear_expression_new.
2972 (lambda_compute_target_space): Likewise.
2973 (lambda_compute_auxillary_space): New parameter lambda_obstack.
2974 Pass it to lambda_lattice_compute_base and
2975 compute_nest_using_fourieer_motzkin.
2976 (lambda_loopnest_transform): New parameter lambda_obstack. Pass
2977 it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
2978 and lambda_lattice_compute_target_space.
2979 (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
2980 Pass it to lambda_linear_expression_new.
2981 (gcc_loop_to_lambda_loop): New parameter lambda_obstack. Pass it
2982 to gcc_tree_to_linear_expression.
2983 (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
2984 Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
2985 (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
2986 Pass it to lambda_body_vector_new and
2987 lambda_body_vector_compute_new.
2988 * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
2989 (lambda-code.o): Likewise.
2991 2007-09-06 Chao-ying Fu <fu@mips.com>
2993 * ginclude/stdfix.h: New file.
2994 * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
2995 (convert.o): Add dependence on fixed-value.h.
2996 * c-convert.c (convert): Support FIXED_POINT_TYPE.
2997 * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
2998 to define fixed-point constants.
2999 (c_cpp_builtins): Define fixed-point constants.
3000 * convert.c (fixed-value.h): New include.
3001 (convert_to_real): Update comment to include fixed-point.
3002 Support FIXED_POINT_TYPE.
3003 (convert_to_integer): Update comment to include fixed-point.
3004 Support FIXED_POINT_TYPE.
3005 (convert_to_complex): Support FIXED_POINT_TYPE.
3006 (convert_to_fixed): New function.
3007 * convert.h (convert_to_fixed): Declare.
3008 * genopinit.c: Add comment about $Q for only fixed-point modes.
3009 (optabs): Add fract_optab, fractuns_optab, satfract_optab,
3010 satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
3011 sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
3012 ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
3013 usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
3014 usneg_optab for fixed-point modes.
3015 (gen_insn): Add force_fixed to track the $Q format for all fixed-point
3017 * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
3018 PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
3019 unsigned saturation optabs, when type is saturating.
3020 (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
3021 (expand_fixed_convert): New function.
3022 (gen_fixed_libfunc, gen_signed_fixed_libfunc,
3023 gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
3024 gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
3025 gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
3026 gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
3027 gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
3029 (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
3030 ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
3031 usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
3032 ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
3033 usneg_optab, fract_optab, fractuns_optab, satfract_optab,
3035 Initialize fixed-point libraries, including add, ssadd, usadd, sub,
3036 sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
3037 ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
3038 fractuns, satfractuns.
3039 * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
3040 OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
3041 OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
3042 OTI_ssmsub_widen, OTI_usmsub_widen.
3043 (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
3044 usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
3045 ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
3046 umsub_widen_optab, usmsub_widen_optab): Define.
3047 (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
3049 (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
3051 (expand_fixed_convert): Declare.
3052 * expr.c (convert_move): Support the move of fixed-point modes.
3053 (emit_move_insn_1): Handle fixed-point mode to move via integer.
3054 (categorize_ctor_elements_1): Handle FIXED_CST.
3055 (count_type_elements): Handle FIXED_POINT_TYPE.
3056 (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
3057 MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3059 For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
3060 multiply and add/subtract for fixed-point types.
3061 For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
3062 mode, we jump to binop directly.
3063 Support FIXED_CONVERT_EXPR.
3064 (do_store_flag): Check FIXED_CST to put a constant second.
3065 (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
3066 MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3067 (const_vector_from_tree): Support FIXED_CST.
3068 * doc/extend.texi (Fixed-Point): New node.
3069 * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
3070 ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
3071 satfract, fractuns, satfractuns): Document them.
3073 2007-09-07 Bernd Schmidt <bernd.schmidt@analog.com>
3075 * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
3076 addresses into I registers.
3078 2007-09-06 Jan Hubicka <jh@suse.cz>
3079 Andreas Tobler <a.tobler@schweiz.org>
3081 * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
3083 (machopic_legitimize_pic_address): Likewise.
3085 2007-09-06 Andrew Pinski <andrew_pinski@playstation.sony.com>
3086 Jan Hubicka <jh@suse.cz>
3088 * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
3089 instead of ufloat_optab->handlers directly.
3090 (floatdidf2): Likewise.
3092 2007-09-06 Sandra Loosemore <sandra@codesourcery.com>
3094 * config/mips/mips.c: Include diagnostic.h.
3095 (mips_set_current_function): Check errorcount and sorrycount
3096 before generating RTL.
3098 2007-09-06 Richard Sandiford <richard@codesourcery.com>
3101 * config/mips/mips.c (mips_classify_symbolic_expression): New function.
3102 (mips_classify_address): Use it instead of mips_symbolic_constant_p.
3103 (print_operand_reloc): Likewise.
3105 2007-09-06 Janis Johnson <janis187@us.ibm.com>
3109 2007-09-06 Jan Hubicka <jh@suse.cz>
3111 * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
3114 2007-09-06 Richard Sandiford <richard@codesourcery.com>
3116 * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3117 (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3119 2007-09-05 Janis Johnson <janis187@us.ibm.com>
3121 * optabs.c (expand_float): Convert unsigned integer as signed only
3122 if it provides sufficient accuracy; add mode argument to real_2expN.
3123 (expand_fix): Fix comment typos; extend binary float into mode
3124 wider than destination for converion to unsigned integer; add mode
3125 argument to real_2expN.
3126 * real.c (real_2expN): Add mode argument to special-case decimal
3128 * real.h (real_2expN): Ditto.
3129 * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3131 (fixed_from_string): Ditto.
3132 (fixed_to_decimal): Ditto.
3133 (fixed_convert_from_real): Ditto.
3134 (real_convert_from_fixed): Ditto.
3135 * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3136 * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3137 muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3138 floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3140 2007-09-06 Tom Tromey <tromey@redhat.com>
3142 * tree-cfg.c (remove_bb): Only warn if line is non-zero.
3143 * c-pch.c (c_common_read_pch): Restore current location after
3145 * tree.c (expand_location): Update.
3146 (expr_filename): Changed return type. Unified the two cases.
3147 (expr_lineno): Likewise.
3148 (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
3150 * toplev.c (line_table): Changed type.
3151 (general_init): Update.
3152 (realloc_for_line_map): New function.
3153 (general_init): Allocate line_table using GC.
3154 * fix-header.c (line_table): Changed type.
3155 (read_scan_file): Update.
3156 (read_scan_file): Update.
3157 * c-ppoutput.c (maybe_print_line): Update.
3158 (print_line): Update.
3159 (cb_line_change): Update.
3160 (cb_define): Update.
3161 (pp_file_change): Update.
3162 * c-opts.c (c_common_init_options): Update.
3163 (finish_options): Update.
3164 (push_command_line_include): Update.
3165 * c-lex.c (cb_line_change): Update.
3166 (cb_def_pragma): Update.
3167 (cb_define): Update.
3169 (c_lex_with_flags): Use cpp_get_token_with_location.
3170 * input.h (line_table): Changed type.
3171 (location_from_locus): New macro.
3172 * tree.h (EXPR_FILENAME): No longer an lvalue.
3173 (EXPR_LINENO): Likewise.
3174 (expr_locus, set_expr_locus): Declare separately for
3175 USE_MAPPED_LOCATION.
3176 (expr_filename, expr_lineno): Changed return type.
3177 * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
3178 * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
3179 (expand_gimple_basic_block): Likewise.
3180 * final.c (final_scan_insn): Use expanded_location.
3182 2007-09-06 Richard Guenther <rguenther@suse.de>
3184 PR tree-optimization/32586
3185 * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3186 folding if nothing changed.
3187 (simplify_unary_expression): New function. Do tree combining
3188 on conversion like codes.
3189 (try_to_simplify): Call it.
3190 * builtins.c (fold_builtin_cexp): Fold the built expressions.
3191 * fold-const.c (fold_unary): Test result of get_callee_fndecl().
3193 2007-09-06 Jan Hubicka <jh@suse.cz>
3196 * cse.c (fold_rtx): Avoid invalid sharing.
3198 2007-09-06 Richard Sandiford <richard@codesourcery.com>
3200 * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3201 (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3203 2007-09-06 Revital Eres <eres@il.ibm.com>
3205 * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
3206 Fix offsettable memory reference for 750CL.
3208 2007-09-06 Pat Haugen <pthaugen@us.ibm.com>
3210 * reload.c (find_reloads_address_1): Try to preserve original
3211 base/index regclass of operands.
3212 * regrename.c (scan_rtx_address): Likewise.
3213 (replace_oldest_value_addr): Likewise.
3215 2007-09-06 Richard Guenther <rguenther@suse.de>
3217 PR tree-optimization/33302
3218 * domwalk.c (walk_dominator_tree): The exit block is
3219 interesting even if it is not reachable.
3221 2007-09-06 Richard Sandiford <richard@codesourcery.com>
3224 * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
3226 2007-09-06 Basile Starynkevitch <basile@starynkevitch.net>
3228 * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for
3231 2007-09-05 Ian Lance Taylor <iant@google.com>
3233 * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
3235 (dump_generic_node): Likewise.
3236 * print-rtl.c (print_decl_name): Likewise.
3237 * print-tree.c (print_node_brief): Likewise.
3238 (print_node): Likewise.
3239 * Makefile.in (RTL_BASE_H): Add alias.h.
3242 2007-09-06 Jesper Nilsson <jesper.nilsson@axis.com>
3244 * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
3246 * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
3247 * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
3249 2007-09-06 Jie Zhang <jie.zhang@analog.com>
3251 * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
3252 (tm_defines): Define UCLIBC_DEFAULT to 1.
3253 (extra_options): Add linux.opt.
3254 * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
3255 (CRT_CALL_STATIC_FUNCTION): Likewise.
3256 (NO_IMPLICIT_EXTERN_C): Likewise.
3257 (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
3258 * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
3259 * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
3260 (ENDFILE_SPEC): Don't define.
3261 (LIB_SPEC): Likewise.
3262 (CRT_CALL_STATIC_FUNCTION): Likewise.
3263 (NO_IMPLICIT_EXTERN_C): Likewise.
3264 (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
3265 (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
3267 2007-09-06 Jan Hubicka <jh@suse.cz>
3269 * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
3272 2007-09-06 Jan Hubicka <jh@suse.cz>
3274 * opts.c (common_handle_option): Enable inlining functions for
3277 2007-09-06 Jakub Jelinek <jakub@redhat.com>
3279 * builtin-attrs.def (ATTR_NONNULL_3): New.
3280 (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
3281 ATTR_NOTHROW_NONNULL_##FA.
3282 (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
3283 (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
3284 ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
3285 ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
3286 ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
3287 ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
3288 ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
3290 (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
3291 ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
3292 ATTR_FORMAT_NOTHROW_3_4): Remove.
3293 * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
3294 vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
3295 __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
3296 instead of ATTR_FORMAT_*_*.
3298 2007-09-06 Hans-Peter Nilsson <hp@axis.com>
3300 * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
3301 parts re-used for REG_FRAME_RELATED_EXPR.
3303 2007-09-05 Janis Johnson <janis187@us.ibm.com>
3305 * optabs.c (expand_float): Convert unsigned integer as signed only
3306 if it provides sufficient accuracy; add mode argument to real_2expN.
3307 (expand_fix): Fix comment typos; extend binary float into mode
3308 wider than destination for converion to unsigned integer; add mode
3309 argument to real_2expN.
3310 * real.c (real_2expN): Add mode argument to special-case decimal
3312 * real.h (real_2expN): Ditto.
3313 * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3315 (fixed_from_string): Ditto.
3316 (fixed_to_decimal): Ditto.
3317 (fixed_convert_from_real): Ditto.
3318 (real_convert_from_fixed): Ditto.
3319 * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3320 * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3321 muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3322 floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3324 2007-09-05 Ian Lance Taylor <iant@google.com>
3326 * init-regs.c (initialize_uninitialized_regs): Call
3327 emit_insn_before rather than add_insn_before.
3329 2007-09-05 Jakub Jelinek <jakub@redhat.com>
3331 * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
3332 * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
3333 * tree-inline.h (copy_body_data): Add call_expr field.
3334 * tree-inline.c (expand_call_inline): Initialize call_expr.
3335 (copy_bb): Append anonymous inline fn arguments to arguments
3336 when inlining a CALL_EXPR_VA_ARG_PACK call.
3337 * builtins.c (expand_builtin): Issue an error if
3338 BUILT_IN_VA_ARG_PACK is seen during expand.
3339 (fold_call_expr, fold_builtin_call_array): Don't fold
3340 CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
3341 __builtin_va_arg_pack () call as last argument.
3342 * gimplify.c (gimplify_call_expr): If last argument to a vararg
3343 function is __builtin_va_arg_pack (), decrease number of call
3344 arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
3345 * expr.c (expand_expr_real_1): Issue an error if
3346 CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
3347 * tree-pretty-print.c (dump_generic_node): Handle printing
3348 CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
3349 * doc/extend.texi (__builtin_va_arg_pack): Document.
3351 2007-09-05 Adam Nemet <anemet@caviumnetworks.com>
3353 PR tree-optimization/21513
3354 * builtins.c (build_builtin_expect_predicate): New function.
3355 (fold_builtin_expect): Add argument for expected value.
3356 Distribute __builtin_expect over short-circuiting operations.
3357 Fold nested builtin_expects.
3358 (fold_builtin_2): Adjust call to fold_builtin_expect.
3360 2007-09-05 Rask Ingemann Lambertsen <rask@sygehus.dk>
3363 PR tree-optimization/13756
3364 * doc/invoke.texi (Options That Control Optimization): Document
3367 2007-09-05 Uros Bizjak <ubizjak@gmail.com>
3369 * gcc/config/i386/cpuid.h: New file.
3370 * gcc/config/i386/driver-i386.c: Include cpuid.h.
3371 (describe_cache): Shrink size and line strings to 100 bytes.
3372 (detect_caches_amd): Return "" for unsupported max_ext_level.
3373 Use __cpuid function.
3374 (detect_caches_intel): Return "" for unsupported max_level.
3375 Use __cpuid function.
3376 (host_detect_local_cpu): Change feature flag variables to
3377 unsigned int. Initialize only extended feature flag variables.
3378 Use __get_cpuid_max to determine max supported cpuid level.
3379 Use __cpuid function to determine supported features. Fix
3380 calculation of family id. Remove is_amd and check signature
3381 directly. Check for Geode signature. Handle family 4 id.
3382 [PROCESSOR_GENERIC32]: New default for unknown family id. Move
3383 cpu discovery code to lower part of the function.
3384 [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
3385 for sub-architecture.
3386 [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
3387 [PROCESSOR_K8]: Add k8-sse3 architecture.
3388 [PROCESSOR_NOCONA]: Remove.
3389 [PROCESSOR_GENERIC64]: Ditto.
3390 * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.