1 2007-10-03 Sebastian Pop <sebastian.pop@amd.com>
3 PR tree-optimization/33576
4 * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
5 * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
6 * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
8 * lambda-code.c (remove_iv): Not static.
9 (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
10 Don't remove ivs there, save ivs in the buffer.
12 2007-10-03 Jason Merrill <jason@redhat.com>
15 * tree-eh.c (same_handler_p): New fn.
16 (optimize_double_finally): New fn.
17 (refactor_eh_r): New fn.
18 (refactor_eh): New fn.
19 (pass_refactor_eh): New pass.
20 * tree-pass.h: Declare it.
21 * passes.c (init_optimization_passes): Add it.
23 2007-10-03 Doug Kwan <dougkwan@google.com>
24 Richard Guenther <rguenther@suse.de>
27 * dwarf2out.c (reference_to_unused): Disable sanity checking,
28 be conservative instead.
30 2007-10-03 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
33 * doc/invoke.texi (-fwhole-program): Document that Fortran
34 doesn't support this option.
36 2007-10-02 Richard Sandiford <rsandifo@nildram.co.uk>
39 * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
42 2007-10-02 David Daney <ddaney@avtrex.com>
44 * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
45 against constant zero.
46 * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Handle constant zero
49 2007-09-02 Kenneth Zadeck <zadeck@naturalbridge.com>
51 * ra-conflict.c: New file.
53 * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
54 usage to DF_LIVE usage.
55 * rtlanal.c (subreg_nregs_with_regno): New function.
56 * df-scan.c (df_def_record_1, df_uses_record): Add code to set
57 DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
58 (df_has_eh_preds): Removed.
59 (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
60 df_exit_block_uses_collect): Changed call from df_has_eh_preds to
62 * global.c (allocno, max_allocno, conflicts, allocno_row_words,
63 reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
64 (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
65 (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
66 mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
67 (global_alloc): Turn off rescanning insns after call to
68 global_conflicts and added call to set_preferences.
69 (global_conflicts): Moved to ra-alloc.c.
70 (set_preferences_1, set_preferences): New function.
71 (mirror_conflicts): Changed types for various variables.
72 (mark_elimination): Change DF_RA_LIVE
73 usage to DF_LIVE usage.
74 (build_insn_chain): Rewritten from scratch and made local.
75 (print_insn_chain, print_insn_chains): New functions.
76 (dump_conflicts): Do not print conflicts for fixed_regs.
77 (rest_of_handle_global_alloc): Turn off insn rescanning.
78 * hard-reg-set.h: Fixed comment.
79 * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
80 usage to DF_LIVE usage and delete refs to TOP sets.
81 (block_alloc): Mark regs as live if they are in the artificial
83 (find_stack_regs): New function.
84 (rest_of_handle_local_alloc): Changed urec problem to live
85 problem and do not turn off df rescanning.
86 * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
87 DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
88 df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
89 (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
90 (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
91 fields in df_ref_flags. The rest have been renumbered.
92 * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
94 * rtl.h (subreg_nregs_with_regno): New function.
95 * df-problems.c: (df_get_live_out, df_get_live_in,
96 df_get_live_top): Removed reference to DF_RA_LIVE.
97 (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
98 df_live_alloc, df_live_reset, df_live_local_finalize,
99 df_live_free): Make top set only if different from in set.
100 (df_lr_top_dump, df_live_top_dump): Only print top set if
101 different from in set.
102 (df_lr_bb_local_compute): Removed unnecessary check.
103 (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info,
104 df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass,
105 df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
106 df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
107 df_urec_local_compute, df_urec_init, df_urec_local_finalize,
108 df_urec_confluence_n, df_urec_transfer_function, df_urec_free,
109 df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
110 df_urec_add_problem): Removed.
111 (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
113 * Makefile.in (ra-conflict.o, ra.h): New dependencies.
114 * basic_block.h (bb_has_abnormal_pred): New function.
115 * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
116 usage to DF_LIVE usage.
118 2007-10-02 Revital Eres <eres@il.ibm.com>
120 * config/rs6000/predicates.md (easy_vector_constant): Return false
121 for 750CL paired vectors.
122 * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
124 (vec_initv2sf): Add new description.
125 (vconcatsf): Likewise.
126 * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
127 * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
129 2007-10-01 Alexandre Oliva <aoliva@redhat.com>
131 * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
132 sinking the last stmt in a BB.
134 2007-10-01 Alexandre Oliva <aoliva@redhat.com>
137 * tree-sra.c (struct sra_elt): Add in_bitfld_block.
138 (sra_hash_tree): Handle BIT_FIELD_REFs.
139 (sra_elt_hash): Don't hash bitfld blocks.
140 (sra_elt_eq): Skip them in parent compares as well. Handle
142 (build_element_name_1): Handle BIT_FIELD_REFs.
143 (instantiate_element): Propagate nowarn from parents. Create
144 BIT_FIELD_REF for variables that are widened by scalarization.
145 Gimple-zero-initialize all bit-field variables that are not
146 part of parameters that are going to be scalarized on entry.
147 (instantiate_missing_elements_1): Return the sra_elt.
148 (canon_type_for_field): New.
149 (try_instantiate_multiple_fields): New. Infer widest possible
150 access mode from decl or member type, but clip it at word
151 size, and only widen it if a field crosses an alignment
153 (instantiate_missing_elements): Use them.
154 (generate_one_element_ref): Handle BIT_FIELD_REFs.
155 (scalar_bitfield_p): New.
156 (sra_build_assignment): Optimize assignments from scalarizable
157 BIT_FIELD_REFs. Use BITS_BIG_ENDIAN to determine shift
160 (sra_build_bf_assignment): New. Optimize assignments to
161 scalarizable BIT_FIELD_REFs.
162 (sra_build_elt_assignment): New. Optimize BIT_FIELD_REF
163 assignments to full variables.
164 (generate_copy_inout): Use the new macros and functions.
165 (generate_element_copy): Likewise. Handle bitfld differences.
166 (generate_element_zero): Don't recurse for blocks. Use
167 sra_build_elt_assignment.
168 (generate_one_element_init): Take elt instead of var. Use
169 sra_build_elt_assignment.
170 (generate_element_init_1): Adjust.
171 (bitfield_overlap_info): New struct.
172 (bitfield_overlaps_p): New.
173 (sra_explode_bitfield_assignment): New. Adjust widened
174 variables to account for endianness.
175 (sra_sync_for_bitfield_assignment): New.
176 (scalarize_use): Re-expand assignment to/from scalarized
177 BIT_FIELD_REFs. Explode or sync needed members for
178 BIT_FIELD_REFs accesses or assignments. Use REPLDUP.
179 (scalarize_copy): Use REPLDUP.
180 (scalarize_ldst): Move assert before dereference. Adjust EH
182 (dump_sra_elt_name): Handle BIT_FIELD_REFs.
184 2007-10-01 Paolo Bonzini <bonzini@gnu.org>
186 * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
187 Rename CR_* constants to CMP_*. Fix spacing.
189 2007-10-01 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
192 * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
193 to be processed with the special script doc/install.texi2html.
195 2007-09-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
197 * doc/invoke.texi (Wall): List the options enabled by Wall.
198 (Wstrict-aliasing): Add missing @option.
200 2007-09-30 Richard Sandiford <rsandifo@nildram.co.uk>
202 * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
203 rather than gen_lowpart to change a register from DImode to DFmode.
204 (mips_cannot_change_mode_class): Only allow FPRs to change mode if
205 both FROM and TO are integer modes that are no bigger than 4 bytes.
206 (mips_mode_ok_for_mov_fmt_p): New function.
207 (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
208 (mips_secondary_reload_class): Tweak formatting and comments.
209 Use reg_class_subset_p instead of direct comparisons with
210 classes. Only allow direct FPR<->FPR moves for modes that
211 satisfy mips_mode_ok_for_mov_fmt_p. Only allow loads and stores
212 for 4- and 8-byte types. Handle reloads in which X is an FPR.
213 * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
214 (*movdi_64bit): Likewise.
215 (*movsi_internal): Likewise.
216 (*movhi_internal): Likewise.
217 (*movqi_internal): Likewise.
219 2007-09-30 Diego Novillo <dnovillo@google.com>
222 * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
225 2007-09-30 Uros Bizjak <ubizjak@gmail.com>
227 PR tree-optimization/33597
228 * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
229 for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
231 2007-09-28 Uros Bizjak <ubizjak@gmail.com>
233 * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
234 instead of variants of (!reload_in_progress && !reload_completed).
235 (x86_expand_vector_move): Ditto.
237 2007-09-28 Ollie Wild <aaw@google.com>
240 2007-09-27 Ollie Wild <aaw@google.com>
242 * varasm.c (compare_constant): Removed call to
243 lang_hooks.expand_constant.
244 (copy_constants): Removed call to lang_hooks.expand_constant.
245 (compute_reloc_for_constant): Removed call to
246 lang_hooks.expand_constant.
247 (output_addressed_constants): Removed call to
248 lang_hooks.expand_constant.
249 (constructor_static_from_elts_p): Removed call to
250 lang_hooks.expand_constant.
251 (output_constant): Removed calls to lang_hooks.expand_constant.
252 * langhooks.h (struct lang_hooks): Removed field expand_constant.
253 * langhooks-def.h (lhd_return_tree): Removed.
254 (LANG_HOOKS_EXPAND_CONSTANT): Removed.
255 (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
256 * langhooks.c (lhd_return_tree): Removed.
258 2007-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
261 * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
262 argument to gen_selb.
264 2007-09-28 Chao-ying Fu <fu@mips.com>
266 * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
267 * doc/libgcc.texi (Fixed-point fractional library routines):
268 Fix typos for neg and cmp functions.
270 2007-09-28 Michael Matz <matz@suse.de>
272 PR rtl-optimization/33552
273 * function.c (match_asm_constraints_1): Check for overlap in
274 inputs and replace all occurences.
276 2007-09-28 Richard Sandiford <rsandifo@nildram.co.uk>
278 * config/mips/mips.c (override_options): Fix comment typo.
280 2007-09-28 Jie Zhang <jie.zhang@analog.com>
282 * config.gcc (bfin*-linux-uclibc*): Set extra_parts
283 to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
284 * config/bfin/t-bfin-linux (crti.o): Don't build.
286 (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
287 * config/bfin/t-bfin-uclinux (crti.o): Don't build.
289 (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
291 2007-09-27 Ollie Wild <aaw@google.com>
293 * varasm.c (compare_constant): Removed call to
294 lang_hooks.expand_constant.
295 (copy_constants): Removed call to lang_hooks.expand_constant.
296 (compute_reloc_for_constant): Removed call to
297 lang_hooks.expand_constant.
298 (output_addressed_constants): Removed call to
299 lang_hooks.expand_constant.
300 (constructor_static_from_elts_p): Removed call to
301 lang_hooks.expand_constant.
302 (output_constant): Removed calls to lang_hooks.expand_constant.
303 * langhooks.h (struct lang_hooks): Removed field expand_constant.
304 * langhooks-def.h (lhd_return_tree): Removed.
305 (LANG_HOOKS_EXPAND_CONSTANT): Removed.
306 (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
307 * langhooks.c (lhd_return_tree): Removed.
309 2007-09-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
312 * expr.c (emit_group_load_1): Split constant double when destination
313 length is half source length.
315 2007-09-27 Richard Sandiford <rsandifo@nildram.co.uk>
317 * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
318 (mips_cpu_info): Add tune_flags.
319 (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
320 * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
322 (override_options): Remove deprecation code. Use branch-likely
323 instructions for optimize_size or if the tuning flags do not
324 suggest otherwise. Tweak warning.
325 (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
327 2007-09-27 Matthias Klose <doko@ubuntu.com>
329 * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
330 multilib osdirname if it exists.
331 * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
333 2007-09-27 Ian Lance Taylor <iant@google.com>
335 PR tree-optimization/33565
336 * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
337 assignments of comparisons.
338 * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
339 parameter. Change caller. Defer overflow warnings around call to
341 * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
342 TREE_NO_WARNING is set on the statement.
343 * tree-ssa-forwprop.c
344 (tree_ssa_forward_propagate_single_use_vars): Don't test
345 TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
346 * tree-cfg.c (fold_cond_expr_cond): Likewise.
348 2007-09-27 Joseph Myers <joseph@codesourcery.com>
350 * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
351 reduce offset by units of 0x10000 for SPE vector modes or modes
352 used with E500 double instructions.
354 2007-09-04 Paolo Bonzini <bonzini@gnu.org>
356 * simplify-rtx.c (comparison_result): New.
357 (simplify_const_relational_operation): Use it instead of the five
358 "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
359 Improve bounds-checking optimizations; remove subsumed POPCOUNT
360 optimizations. Extract nonzero_address_p optimizations into a
361 separate "if" together with optimizations where op1 is const0_rtx.
362 Optimize comparing an IOR with zero. Simplify op0 RELOP op0 for
363 floating-point arguments too when appropriate. Hoist test for ABS
364 outside the final switch statement.
365 * cse.c (fold_rtx): Don't look for an IOR equivalent of
366 folded_arg0 if we found a constant equivalent. Remove
367 transformations done in simplify-rtx.c for "op0 RELOP op0".
369 2007-09-27 Jakub Jelinek <jakub@redhat.com>
371 * builtins.c (expand_builtin, expand_builtin_object_size,
372 expand_builtin_memory_chk, maybe_emit_chk_warning,
373 maybe_emit_sprintf_chk_warning): Use new %K format string specifier
375 * expr.c (expand_expr_real_1): Likewise.
376 * langhooks-def.h (struct diagnostic_info): Add forward decl.
377 (lhd_print_error_function): Add third argument.
378 * langhooks.h (struct diagnostic_info): Add forward decl.
379 (struct lang_hooks): Add third argument to print_error_function.
380 * diagnostic.h (diagnostic_info): Add abstract_origin field.
381 (diagnostic_last_function_changed, diagnostic_set_last_function): Add
383 (diagnostic_report_current_function): Likewise.
384 * toplev.c (announce_function): Pass NULL as second argument to
385 diagnostic_set_last_function.
386 * diagnostic.c (diagnostic_report_current_function): Add second
387 argument, pass it as third argument to lang_hooks.print_error_function.
388 (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
389 to diagnostic_report_current_function.
390 (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
391 and message.abstract_origin.
392 (verbatim): Initialize abstract_origin.
393 * pretty-print.h (text_info): Add abstract_origin field.
394 * pretty-print.c (pp_base_format): Handle %K.
395 * langhooks.c (lhd_print_error_function): Add third argument. If
396 diagnostic->abstract_origin, print virtual backtrace.
397 * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
398 gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
399 (init_dynamic_diag_info): Likewise.
401 2007-09-26 David Daney <ddaney@avtrex.com>
404 * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
405 sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
406 sync_old_nand<mode>, sync_new_nand<mode>,
407 sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
408 Update length attributes.
409 (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
410 sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
412 * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
413 MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
414 MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
417 2007-09-26 Richard Guenther <rguenther@suse.de>
419 PR tree-optimization/33563
420 * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
421 (get_kill_of_stmt_lhs): ... this. Re-structure. Handle
423 (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
426 2007-09-26 Joseph Myers <joseph@codesourcery.com>
429 * c-common.c (complete_array_type): Diagnose too-large arrays and
430 set type to error_mark_node.
432 2007-09-26 Richard Guenther <rguenther@suse.de>
434 PR tree-optimization/30375
435 PR tree-optimization/33560
436 * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
440 2006-05-22 Aldy Hernandez <aldyh@redhat.com>
442 * tree-ssa-dse.c (aggregate_vardecl_d): New.
443 (dse_global_data): Add aggregate_vardecl field.
444 (dse_possible_dead_store_p): New.
445 Add prev_defvar variable.
446 Allow immediate uses and previous immediate uses to differ
447 if they are setting different parts of the whole.
448 (get_aggregate_vardecl): New.
449 (dse_record_partial_aggregate_store): New.
450 (dse_whole_aggregate_clobbered_p): New.
451 (dse_partial_kill_p): New.
452 Call dse_maybe_record_aggregate_store().
453 When checking whether a STMT and its USE_STMT refer to the
454 same memory address, check also for partial kills that clobber
456 Move some variable definitions to the block where they are used.
457 (aggregate_vardecl_hash): New.
458 (aggregate_vardecl_eq): New.
459 (aggregate_vardecl_free): New.
460 (aggregate_whole_store_p): New.
461 (tree_ssa_dse): Initialize and free aggregate_vardecl.
462 Mark which aggregate stores we care about.
464 2007-09-25 DJ Delorie <dj@redhat.com>
467 * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
470 2007-09-25 Michael Meissner <michael.meissner@amd.com>
473 * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
474 gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
475 for vector int32 -> int64 conversions. Don't write beyond the end
476 of the allocated vector for int32 -> int64 conversions.
478 2007-09-25 Revital Eres <eres@il.ibm.com>
480 * config/rs6000/paired.h (paired_sel): New.
481 * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
482 (rs6000_expand_ternop_builtin): Pass zero const_double operand
483 when expanding selv2sf.
484 * config/rs6000/rs6000.h (rs6000_builtins): Add
485 PAIRED_BUILTIN_SELV2SF4.
487 2007-09-25 Joseph Myers <joseph@codesourcery.com>
490 * c-typeck.c (default_conversion): Call require_complete_type
491 before perform_integral_promotions.
492 (build_unary_op): Call require_complete_type except for ADDR_EXPR.
493 (build_c_cast): Call require_complete_type except for casts to
495 (convert_for_assignment): Call require_complete_type.
497 2007-09-25 Revital Eres <eres@il.ibm.com>
499 * config/spu/spu.md: Fix doloop pattern.
501 2007-09-25 Bernd Schmidt <bernd.schmidt@analog.com>
503 * config/bfin/bfin.c (expand_prologue_reg_save,
504 expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and
506 (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
507 ... from here. New argument ALL; callers changed.
508 (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
509 (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
510 have the "saveall" attribute.
512 2007-09-25 Hans-Peter Nilsson <hp@bitrange.com>
514 * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
516 (INCOMING_REGNO, OUTGOING_REGNO): Define.
517 * config/mmix/mmix.c (mmix_opposite_regno): New function.
518 * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
520 * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
521 with REG_P tests before REGNO access.
523 2007-09-24 DJ Delorie <dj@redhat.com>
526 * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
528 (movqicc_<code>_<mode>): Likewise.
529 (movhicc_<code>_<mode>): Likewise.
531 2007-09-24 Rask Ingemann Lambertsen <rask@sygehus.dk>
534 * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
537 2007-09-24 Danny Smith <dannysmith@user.sourceforge.net>
540 * config/i386/i386.c (ix86_comp_type_attributes): Check
543 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
545 * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
546 "move.l %a4,%a4" to produce nops.
547 * config/m68k/m68k.c (override_options): Reset align options,
548 if neccessary align macro isn't avaible.
550 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
552 config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
554 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
556 * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
558 * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
560 (peephole pattern): Convert most of them to RTL peephole pattern.
562 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
564 * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
565 (moved from fp compare patterns).
566 * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
567 Cleanup predicates to relieve reload.
568 (conditional_trap): Reject conditional trap with fp condition.
569 * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
570 certain constants early.
572 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
574 * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
576 2007-09-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
578 * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
579 Allow --with-tune=cell and --with-cpu=cell.
581 2007-09-24 David Edelsohn <edelsohn@gnu.org>
583 * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
584 * config/rs6000/rs6000.opt (swdiv): Change option to ...
586 * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
588 (TARGET_BUILTIN_RECIPROCAL): Use it.
589 (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
590 (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
591 (rs6000_emit_swrsqrtsf): New.
592 * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
594 * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
595 (divsf3): Remove swdiv support.
598 (rsqrt_internal1): New.
599 (divdf3): Remove swdiv support.
602 2007-09-24 Jakub Jelinek <jakub@redhat.com>
605 * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
607 * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
608 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
609 * tree.c (type_hash_eq): For FUNCTION_TYPE use
610 lang_hooks.type.type_hash_eq in addition to generic tests.
612 2007-09-24 Pranav Bhandarkar <pranav.bhandarkar@celunite.com>
613 Ramana Radhakrishnan <ramana@hercules.pun.celunite.com>
615 * tree-inline.h (eni_weights): Add field target_builtin_cost to
616 reflect the cost per call to a target specific builtin.
617 * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
618 call to a target specific builtin, then use target_builtin_call_cost.
619 (init_inline_once): Initialize target_builtin_call_cost field.
621 2007-09-24 Kai Tietz <kai.tietz@onevision.com>
624 * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
627 2007-09-23 H.J. Lu <hongjiu.lu@intel.com>
629 * configure.ac (ld_vers): Support GNU linker version xx.xx.*
630 * configure: Regenerated.
632 2007-09-23 Ollie Wild <aaw@google.com>
634 * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
636 (get_pointer_modulus_and_residue): New function.
638 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
640 * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
641 combine an SC return value into a single register.
643 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
645 * opth-gen.awk (target_flags_explicit): Declare.
646 * toplev.h (target_flags_explicit): Delete declaration.
647 * toplev.c (target_flags): Likewise.
648 * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
649 (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
650 Never return true for TARGET_MIPS16.
651 * config/mips/mips.c (mips_llsc): Delete.
652 (mips_handle_option): Remove -mllsc handling.
653 (mips_strip_unspec_address): Tweak comment.
654 * config/mips/mips.opt (mllsc): Use a target mask.
656 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
658 * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
659 word_mode as well as Pmode.
661 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
663 * function.c (assign_parm_setup_block): Explicitly convert BLKmode
664 parameters from word_mode to the subword type if such a truncation
667 2007-09-23 Jakub Jelinek <jakub@redhat.com>
669 * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
670 * configure: Regenerated.
672 2007-09-23 Jan Hubicka <jh@suse.cz>
674 * params.def (INLINE_CALL_COST): Set to 12.
675 * invoke.texi (inline-call-cost): Update default value.
677 2007-09-23 Eric Botcazou <ebotcazou@adacore.com>
679 * config/alpha/alpha.md (movti): Use operand_subword for the split.
681 2007-09-23 Ayal Zaks <zaks@il.ibm.com>
682 Revital Eres <eres@il.ibm.com>
684 * modulo-sched.c (doloop_register_get): Rewrite the loop which
685 checks whether the count_reg is found outside the control part.
687 2007-09-23 Jakub Jelinek <jakub@redhat.com>
689 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
690 instead of checking CALL_EXPR_FN directly to test for builtins.
691 If error or warning attributes are present, print
693 * c-common.c (handle_error_attribute): New function.
694 (c_common_attribute_table): Add error and warning
696 * doc/extend.texi: Document error and warning attributes.
698 * tree.h (block_nonartificial_location): New prototype.
699 * tree.c (block_nonartificial_location): New function.
700 * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
701 if artificial attribute is present on abstract inline decl.
702 * c-common.c (handle_artificial_attribute): New function.
703 (c_common_attribute_table): Add artificial attribute.
704 * final.c (override_filename, override_linenum): New variables.
705 (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
706 and override_linenum if inside of a block inlined from
707 __attribute__((__artificial__)) function.
708 (notice_source_line): Honor override_filename and override_linenum.
709 * doc/extend.texi: Document __attribute__((__artificial__)).
710 * config/i386/emmintrin.h: Add __artificial__ attribute to
711 all __always_inline__ functions.
712 * config/i386/mmintrin.h: Likewise.
713 * config/i386/tmmintrin.h: Likewise.
714 * config/i386/mm3dnow.h: Likewise.
715 * config/i386/pmmintrin.h: Likewise.
716 * config/i386/ammintrin.h: Likewise.
717 * config/i386/xmmintrin.h: Likewise.
718 * config/i386/smmintrin.h: Likewise.
719 * config/i386/bmmintrin.h: Likewise.
720 * config/i386/mmintrin-common.h: Likewise.
723 * expr.c (expand_constructor): New function.
724 (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
725 (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
728 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
730 * config/mips/mips.c (dump_constants_1): Generalize to include
731 fractional and accumulator modes.
733 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
735 * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
736 * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
738 (override_options): Check TARGET_HARD_FLOAT_ABI instead of
739 TARGET_HARD_FLOAT when testing whether -mpaired-single is
741 (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
743 * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
745 * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
746 (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
748 (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
749 ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
750 * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
752 * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
754 * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
755 instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
756 * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
758 2007-09-22 Jason Merrill <jason@redhat.com>
761 * attribs.c (lookup_attribute_spec): Split out...
762 (decl_attributes): From here.
763 * tree.h: Declare it.
765 2007-09-22 Richard Sandiford <rsandifo@nildram.co.uk>
767 * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
769 2007-09-22 Eric Botcazou <ebotcazou@adacore.com>
771 * tree-inline.c (remap_type_1): Correctly chain variants.
773 2007-09-22 Richard Guenther <rguenther@suse.de>
775 PR tree-optimization/33146
776 * fold-const.c (fold_binary): Use the original tree
778 * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
781 2007-09-22 Eric Botcazou <ebotcazou@adacore.com>
784 * except.c (finish_eh_generation): Call commit_edge_insertions if
785 there are insns queued on the entry edge.
786 * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
789 2007-09-22 Richard Sandiford <rsandifo@nildram.co.uk>
791 * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
793 2007-09-19 Michael Meissner <michael.meissner@amd.com>
795 * gcc/config/i386/i386.c: Delete trailing whitespace.
796 * gcc/config/i386/i386.h: Ditto.
797 * gcc/config/i386/bmmintrin.h: Ditto.
798 * gcc/config/i386/sync.md: Ditto.
799 * gcc/config/i386/ppro.md: Ditto.
800 * gcc/config/i386/mmx.md: Ditto.
801 * gcc/config/i386/constraints.md: Ditto.
802 * gcc/config/i386/sse.md: Ditto.
803 * gcc/config/i386/athlon.md: Ditto.
804 * gcc/config/i386/i386.md: Ditto.
806 2007-09-21 Richard Guenther <rguenther@suse.de>
808 PR tree-optimization/33508
809 * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
810 quadratic loop by keeping a bitmap of variables we have
811 to clobber all subvariables for.
812 (set_initial_properties): Likewise.
814 2007-09-21 Richard Sandiford <rsandifo@nildram.co.uk>
816 * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
818 2007-09-20 Nigel Stephens <nigel@mips.com>
819 Chao-ying Fu <fu@mips.com>
821 * c-decl.c (finish_declspecs): When _Sat is used without
822 _Fract or _Accum, set the default type to cts_fract.
823 This avoids a warning of "type defaults to int".
825 2007-09-20 Joseph Myers <joseph@codesourcery.com>
827 * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
828 bit-fields wider than one bit.
830 2007-09-20 Jakub Jelinek <jakub@redhat.com>
833 * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
835 * dbxout.c (dbxout_type): Likewise.
839 * gimplify.c (gimplify_vla_decl): New function.
840 (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
842 (gimplify_target_expr): Handle variable length TARGET_EXPRs.
844 2007-09-20 Richard Sandiford <rsandifo@nildram.co.uk>
846 * doc/invoke.texi (-minterlink-mips16): Document.
847 * config/mips/mips.opt (minterlink-mips16): New option.
848 * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
851 2007-09-20 Joseph Myers <joseph@codesourcery.com>
853 * doc/extend.texi (Attribute Syntax): Remove old speculative
856 2007-09-20 Mark Shinwell <shinwell@codesourcery.com>
858 * combine.c: Include cgraph.h.
859 (setup_incoming_promotions): Rework to allow more aggressive
860 elimination of sign extensions when all call sites of the
861 current function are known to lie within the current unit.
863 2007-09-20 Richard Sandiford <rsandifo@nildram.co.uk>
865 * dse.c (find_shift_sequence): No-op rework of control flow.
867 2007-09-19 Richard Sandiford <rsandifo@nildram.co.uk>
869 * config/mips/mips.c (build_mips16_call_stub): Tidy. Fix second
870 GPR for DCmode on 64-bit targets. Remove redundant fallback.
872 2007-09-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
874 * cfgexpand.c (dump_stack_var_partition): Use the correct
875 index for the offset.
877 2007-09-19 Joseph Myers <joseph@codesourcery.com>
879 * config/mips/sde.h: Switch to GPLv3.
881 2007-09-19 Eric Botcazou <ebotcazou@adacore.com>
883 * tree-sra.c (decide_block_copy): Decide if there are groups.
885 2007-09-19 Roman Zippel <zippel@linux-m68k.org>
887 * config/m68k/m68k.c (output_move_himode): Remove jump table
889 config/m68k/m68k.md (lea): Likewise.
890 * config/m68k/m68k.c (print_operand_address): Use simple pc
893 2007-09-19 Bernd Schmidt <bernd.schmidt@analog.com>
895 * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
896 * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
898 (asm_insn_count): Pass template as second argument to it.
899 * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
900 * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
901 * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
902 * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
903 * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
904 (sh_insn_length_adjustment): Pass template as second argument to it.
905 * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
907 * config/bfin/bfin.md (define_asm_attributes): New.
909 2007-09-19 Jie Zhang <jie.zhang@analog.com>
911 * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
913 * config/bfin/print-sysroot-suffix.sh: New.
914 * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
915 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
916 MULTILIB_EXCEPTIONS): Redefine with new multilibs.
917 * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
918 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
919 MULTILIB_EXCEPTIONS): Redefine with new multilibs.
920 * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
921 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
922 MULTILIB_EXCEPTIONS): Redefine with new multilibs.
923 (linux-sysroot-suffix.h): New target.
924 * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
925 (mspecld-anomaly): Likewise.
926 * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
927 (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
928 BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
929 BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
930 (bfin_si_revision): Declare.
931 (bfin_workarounds): Declare.
932 (WA_SPECULATIVE_LOADS): Define.
933 (ENABLE_WA_SPECULATIVE_LOADS): Define.
934 (WA_SPECULATIVE_SYNCS): Define.
935 (ENABLE_WA_SPECULATIVE_SYNCS): Define.
936 * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
937 (LIB_SPEC): Add %s to the linker scripts.
938 Use proper linker script for bf522, bf525, bf527,
939 bf538, bf539, bf542, bf544, bf548, and bf549.
940 * config/bfin/bfin.c (bfin_si_revision): Define.
941 (bfin_workarounds): Define.
942 (struct bfin_cpu): New.
944 (bfin_handle_option): Handle silicon revision part of -mcpu option.
945 (override_options): Set bfin_workarounds.
946 (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
947 ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
948 ENABLE_WA_SPECULATIVE_LOADS.
949 (bfin_reorg): Likewise.
950 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
951 macros for bf522, bf525, bf527, bf538, bf539,
952 bf542, bf544, bf548, and bf549.
953 Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
954 Don't define __ID_SHARED_LIB__ when -msep-data.
955 (TARGET_DEFAULT): Define as 0.
956 (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
957 * doc/invoke.texi (Blackfin Options): Document silicon
958 revision part of -mcpu option and it now accepts bf522, bf525,
959 bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
961 2007-09-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
963 * alias.c (memory_modified_1): Deconstify.
964 (memory_modified_in_insn_p): Don't use const_note_stores.
965 * rtl.h (const_note_stores): Delete.
966 * rtlanal.c (const_note_stores): Likewise.
968 2007-09-18 Richard Sandiford <rsandifo@nildram.co.uk>
970 * dse.c (find_shift_sequence): Temporarily revert to forbidding
973 2007-09-18 Rask Ingemann Lambertsen <rask@sygehus.dk>
977 * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
978 (addsi_small_int): Likewise.
979 (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
980 (one_cmplsi2): Likewise.
982 (enter_func): Expand insn using hard_frame_pointer_rtx and
985 * config/fr30/fr30.c (fr30_expand_prologue): Check for
986 hard_frame_pointer_rtx instead of using REGNO() check.
987 Properly sign extend GEN_INT() argument.
989 2007-09-18 Roman Zippel <zippel@linux-m68k.org>
991 * config/m68k/m68k.c (override_options): Remove USE_GAS,
993 (output_dbcc_and_branch, output_scc_di): Replace all jbcc
994 alternatives with just jcc.
995 * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
996 bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
997 bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
998 dbge_hi, dbge_si): Likewise.
1000 2007-09-18 Roman Zippel <zippel@linux-m68k.org>
1002 * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
1003 bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
1004 bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
1005 bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
1006 bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
1008 2007-09-18 Maxim Kuvyrkov <maxim@codesourcery.com>
1010 * config/m68k/m68k-devices.def (51qe): New device.
1011 * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit. Add it
1012 to all uses of FL_FOR_isa_c for compatibility.
1013 (all_microarchs): Add cfv1 microarchitecture.
1014 (m68k_handle_option): Handle m51qe option.
1015 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
1016 (TUNE_CFV1): New macro.
1017 (enum uarch_type): Add ucfv1.
1018 * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
1020 2007-09-18 Richard Guenther <rguenther@suse.de>
1022 PR tree-optimization/31863
1023 * tree-ssa-structalias.c (create_variable_info_for): Always
1024 free the fieldstack.
1026 2007-09-18 Dorit Nuzman <dorit@il.ibm.com>
1028 * opts.c (decode_options): Enable vectorization under -O3.
1030 2007-09-18 Richard Guenther <rguenther@suse.de>
1032 PR tree-optimization/33340
1033 * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
1034 SSA_NAMEs that occur in abnormal PHI nodes.
1036 2007-09-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1038 * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
1039 Don't use const_get_call_expr_in.
1040 * tree-gimple.c (const_get_call_expr_in): Delete.
1041 * tree-gimple.h (const_get_call_expr_in): Likewise.
1043 2007-09-18 Richard Sandiford <rsandifo@nildram.co.uk>
1045 * df-scan.c (df_notes_rescan): Do nothing if the instruction does
1046 not yet have a basic block.
1047 * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
1049 2007-09-18 Richard Sandiford <rsandifo@nildram.co.uk>
1051 * config/mips/mips.c (mips_file_start): Add ".previous" directives
1052 to both ".section"s.
1054 2007-09-17 Richard Sandiford <rsandifo@nildram.co.uk>
1056 * config/mips/mips.c (mips_output_mi_thunk): Use
1057 mips_function_ok_for_sibcall and const_call_insn_operand
1058 to determine if a direct sibcall is allowed. Use
1059 mips_classify_symbol to determine a global pointer is needed.
1061 2007-09-17 Richard Sandiford <rsandifo@nildram.co.uk>
1063 * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
1065 2007-09-17 Chao-ying Fu <fu@mips.com>
1066 Nigel Stephens <nigel@mips.com>
1068 * config/fixed-bit.h: New file.
1069 * config/fixed-bit.c: New file.
1070 * doc/libgcc.texi (Fixed-point fractional library routines): New node.
1072 2007-09-18 Jakub Jelinek <jakub@redhat.com>
1074 * c-format.h (format_kind_info): Add alloc_char field.
1075 * c-format.c (scanf_flag_specs): Add 'm'.
1076 (scanf_flag_pairs): Add 'a', 'm' pair.
1077 (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
1078 (format_types_orig): Add alloc_char fields.
1079 (check_format_info_main): Rename aflag to alloc_flag.
1080 Handle fki->alloc_char. modifier after width and before length
1081 modifiers. Move FMT_FLAG_SCANF_A_KLUDGE handling before
1082 length modifiers as well.
1083 * config/sol2-c.c (solaris_format_types): Add alloc_char field.
1086 * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
1087 returned by build_call_expr.
1089 2007-09-17 Eric Botcazou <ebotcazou@adacore.com>
1091 * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
1092 NULL for variable-sized records too.
1093 (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
1095 2007-09-17 Tom Tromey <tromey@redhat.com>
1097 * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
1098 (c_builtin_function): Likewise.
1099 (grokdeclarator): Likewise.
1101 2007-09-17 Zdenek Dvorak <ook@ucw.cz>
1103 PR rtl-optimization/26449
1104 * loop-invariant.c (move_invariant_reg): Do not use force_operand.
1105 (seq_insns_valid_p): Removed.
1107 2007-09-17 Eric Botcazou <ebotcazou@adacore.com>
1109 * tree-nomudflap.c (gate_mudflap): New static function.
1110 (pass_mudflap_1): Use it as gate function.
1111 (pass_mudflap_2): Likewise.
1113 2007-09-17 Jan Hubicka <jh@suse.cz>
1117 * loop-invariant.c (move_invariant_reg): Unshare sequence.
1119 2007-09-17 Victor Kaplansky <victork@il.ibm.com>
1121 PR tree-optimization/33319
1122 * tree-vect-analyze.c (vect_same_range_drs): New.
1123 (vect_vfa_range_equal): New.
1124 (vect_is_duplicate_ddr): Removed.
1125 (vect_mark_for_runtime_alias_test): Do not perform marking when
1126 optimizing for size or max_param for alias checking is zero.
1127 Move the function before vect_analyze_data_ref_dependence.
1128 (vect_analyze_data_ref_dependence): Add call to
1129 vect_mark_for_runtime_alias_test in two cases when dependence
1131 (vect_analyze_data_ref_dependences): Do not call to
1132 vect_mark_for_runtime_alias_test.
1133 (vect_prune_runtime_alias_test_list): New.
1134 (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
1135 * tree-vect-transform.c (vect_estimate_min_profitable_iters):
1136 Update vec_outside_cost.
1137 (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
1138 (vect_create_cond_for_alias_checks): Build the base address of data
1139 reference from DR_GROUP_FIRST_DR.
1140 (vect_loop_versioning): New.
1141 (vect_transform_loop): Add a call to vect_loop_versioning.
1142 Remove factored out code.
1144 2007-09-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1147 * expr.c (store_expr): Call adjust_address to change mode of dest_mem
1150 2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
1152 * dse.c (find_shift_sequence): Allow word as well as subword shifts.
1153 Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
1154 Fix the call to insn_rtx_cost. Skip access sizes that require a
1155 real truncation of the store register. Use convert_move instead
1156 of gen_lowpart when narrowing the result.
1157 (replace_read): Use convert_move instead of gen_lowpart when
1158 narrowing the store rhs.
1160 2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
1162 * config/mips/mips.md (SHORT): Fix long line.
1163 (SUBDI): New mode iterator. Extend the shift-and-truncate insns
1164 to QImode and HImode.
1166 2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
1168 * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
1170 2007-09-15 Zdenek Dvorak <ook@ucw.cz>
1172 * tree-parloops.c: New file.
1173 * tree-ssa-operands.h (free_stmt_operands): Declare.
1174 * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
1176 * tree-pass.h (pass_parallelize_loops): Declare.
1177 * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
1179 (build_omp_regions_1): Allow analysing just a single OMP region and
1181 ( build_omp_regions_root, omp_expand_local): New functions.
1182 (build_omp_regions): Add argument to build_omp_regions_1 call.
1183 * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
1184 autoparallelization is run.
1185 * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
1186 * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
1187 pass_parallelize_loops): New.
1188 * common.opt (ftree-parallelize-loops): New.
1189 * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
1190 parallelize_loops): Declare.
1191 (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
1192 * Makefile.in (tree-parloops.o): Added.
1193 * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
1195 (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
1196 (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
1197 one extra edge as well.
1198 (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
1199 Use VEC_free to free doms vector.
1200 (move_block_to_fn): Update loop info. Remove phi nodes for virtual
1201 operands. Recompute operand caches in the new function.
1202 (move_sese_region_to_fn): Update loop info.
1203 * passes.c (init_optimization_passes): Add pass_parallelize_loops.
1204 * tree-ssa-operands.c (free_stmt_operands): New function.
1206 * doc/passes.texi: Document autoparallelization.
1207 * doc/invoke.texi (-ftree-parallelize-loops): New option.
1209 2007-09-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1212 * pa.c (function_value): Use GET_MODE_BITSIZE instead of
1215 2007-09-15 Dorit Nuzman <dorit@il.ibm.com>
1217 * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if
1218 the VEC is not NULL.
1219 (vectorizable_type_demotion, vectorizable_type_promotion): Check that
1220 get_vectype_for_scalar_type succeeded.
1221 (vectorizable_conversion): Likewise.
1223 2007-09-14 Jan Hubicka <jh@suse.cz>
1225 * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
1228 2007-09-14 Uros Bizjak <ubizjak@gmail.com>
1231 * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
1232 register when operands[2] equals operands[1].
1233 (remainderxf3): Ditto.
1235 2007-09-14 Sandra Loosemore <sandra@codesourcery.com>
1236 Nigel Stephens <nigel@mips.com>
1238 * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
1239 * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
1240 (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
1242 (_Unwind_ForcedUnwind): Likewise.
1243 (_Unwind_Resume): Likewise.
1244 (_Unwind_Resume_or_Rethrow): Likewise.
1245 (_Unwind_Backtrace): Likewise.
1246 (_Unwind_SjLj_RaiseException): Likewise.
1247 (_Unwind_SjLj_ForcedUnwind): Likewise.
1248 (_Unwind_SjLj_Resume): Likewise.
1249 (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
1250 * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
1252 (_Unwind_ForcedUnwind): Likewise.
1253 (_Unwind_Resume): Likewise.
1254 (_Unwind_Resume_or_Rethrow): Likewise.
1255 (_Unwind_Backtrace): Likewise.
1256 * unwind-compat.c (_Unwind_Backtrace): Likewise.
1257 (_Unwind_ForcedUnwind): Likewise.
1258 (_Unwind_RaiseException): Likewise.
1259 (_Unwind_Resume): Likewise.
1260 (_Unwind_Resume_or_Rethrow): Likewise.
1262 * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
1263 nomips16 mode when IN_LIBGCC2 with hard float.
1265 2007-09-14 Richard Sandiford <rsandifo@nildram.co.uk>
1267 * config/mips/sdemtk.opt: Update to GPLv3.
1268 * config/mips/sdemtk.h: Likewise.
1270 2007-09-14 Nigel Stephens <nigel@mips.com>
1272 * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
1273 MIPS_ISA_DEFAULT appropriately. Don't make soft-float the default
1274 for mipsisa32-*-linux*.
1276 2007-09-14 Nigel Stephens <nigel@mips.com>
1277 David Ung <davidu@mips.com>
1278 Thiemo Seufer <ths@mips.com>
1279 Richard Sandiford <richard@codesourcery.com>
1281 * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
1282 * configure.ac: Add a mipssde threading type.
1283 * configure: Regenerate.
1284 * config/mips/sdemtk.h: New file.
1285 * config/mips/t-sdemtk: Likewise.
1286 * config/mips/sdemtk.opt: Likewise.
1287 * gthr-mipssde.h: Likewise.
1288 * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
1289 * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
1290 (MIPS_ICACHE_SYNC): New macro, split from ...
1291 * config/mips/mips.md (clear_cache): ...here.
1292 * config/mips/mips.c (mips_save_reg_p): Check
1293 MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
1294 (build_mips16_function_stub): Use targetm.strip_name_encoding.
1295 (build_mips16_call_stub): Likewise.
1297 2007-09-14 Richard Sandiford <richard@codesourcery.com>
1299 * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
1301 2007-09-14 Jakub Jelinek <jakub@redhat.com>
1304 * config/ia64/ia64.c (find_gr_spill): Don't decrement
1305 current_frame_info.n_local_regs. Don't return emitted local
1307 (ia64_compute_frame_size): Improve unwind hack to put
1308 RP, PFS, FP in that order by allowing some of the registers
1309 been already emitted, as long as they are emitted to the
1312 2007-09-14 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1314 * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
1315 vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
1316 vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
1318 2007-09-13 Eric Christopher <echristo@apple.com>
1319 Kenneth Zadeck <zadeck@naturalbridge.com>
1321 * dse.c (find_shift_sequence): New function.
1322 (replace_read): Add case to remove read if it requires shift.
1323 * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
1325 2007-09-13 Tom Tromey <tromey@redhat.com>
1327 * c-common.c (fname_as_string): Update.
1328 * c-parser.c (c_parser) <lex_untranslated_string>: New field.
1329 (c_lex_one_token): Update. Add 'parser' argument.
1330 (c_parser_simple_asm_expr): Update.
1331 (c_parser_attributes): Update.
1332 (c_parser_asm_statement): Update.
1333 (c_parser_asm_operands): Update.
1334 (c_parser_peek_token): Update.
1335 (c_parser_peek_2nd_token): Update.
1336 * c-lex.c (c_lex_string_translate): Remove.
1337 (c_lex_return_raw_strings): Likewise.
1338 (c_lex_with_flags): Added 'lex_flags' argument.
1339 (lex_string): Added 'translate' argument.
1340 * c-pragma.h (c_lex_with_flags): Update.
1341 (c_lex_string_translate, c_lex_return_raw_strings): Remove.
1342 (C_LEX_STRING_NO_TRANSLATE): New define.
1343 (C_LEX_RAW_STRINGS): Likewise.
1345 2007-09-13 Bernd Schmidt <bernd.schmidt@analog.com>
1348 * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
1349 BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
1350 BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
1351 (bfin_init_builtins): Initialize __builtin_bfin_ones,
1352 __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
1353 __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
1354 __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
1355 __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
1356 __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
1357 (bdesc_1arg): Add __builtin_bfin_ones.
1358 (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
1359 __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
1360 and __builtin_bfin_csqu_fr16.
1361 * config/bfin/bfin.md (UNSPEC_ONES): New constant.
1362 (ones): New define_insn.
1363 (ssaddhi3_parts): New define_insn.
1364 (sssubhi3_parts): New define_insn.
1365 (flag_mulhi_parts): New define_insn.
1367 2007-09-13 Seongbae Park <seongbae.park@gmail.com>
1369 * common.opt (femit-class-debug-always): Turn off by default.
1371 2007-09-13 Bernd Schmidt <bernd.schmidt@analog.com>
1373 * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
1374 * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
1376 2007-09-13 James E. Wilson <wilson@specifix.com>
1378 PR tree-optimization/33389
1379 * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
1380 then set build_loads before returning.
1382 2007-09-13 Sandra Loosemore <sandra@codesourcery.com>
1383 David Ung <davidu@mips.com>
1385 * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
1386 {d}addiu and a negative immediate such that it works with MIPS16
1389 2007-09-13 H.J. Lu <hongjiu.lu@intel.com>
1392 * configure.ac (ld_vers): Support Linux linker.
1393 * configure: Regenerated.
1395 2007-09-13 Richard Sandiford <richard@codesourcery.com>
1396 Sandra Loosemore <sandra@codesourcery.com>
1398 * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
1399 (SYMBOL_REF_MIPS16_FUNC_P): Delete.
1400 * config/mips/mips.c (mips_attribute_table): Turn mips16 and
1401 nomips16 into decl attributes.
1402 (TARGET_INSERT_ATTRIBUTES): Override.
1403 (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
1404 (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
1405 (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
1406 (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
1407 (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
1408 (mips_use_mips16_mode_p): Reimplement as a function that takes
1409 a decl and considers only decl attributes. If the decl is nested
1410 function, use its parent attributes.
1411 (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
1412 instead of SYMBOL_REF_MIPS16_FUNC_P.
1413 (mips_set_mips16_mode): Move call to sorry here from old
1414 mips_use_mips16_mode_p.
1415 (mflip_mips16_entry): New structure.
1416 (mflip_mips16_htab): New variable.
1417 (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
1418 (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
1419 (mips_merge_decl_attributes): New function.
1420 (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
1421 Use mips_use_mips16_mode_p.
1422 (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
1423 SYMBOL_REF_MIPS16_FUNC_P.
1424 (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
1426 2007-09-13 Richard Sandiford <richard@codesourcery.com>
1428 * c-parser.c (c_parser_struct_declaration): Check for a null return.
1430 2007-09-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
1433 * gcc.c (xputenv): Make argument const, and use CONST_CAST.
1435 2007-09-12 Michael Meissner <michael.meissner@amd.com>
1436 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
1437 Tony Linthicum <tony.linthicum@amd.com>
1439 * tree.h (function_args_iterator): New type to iterate over
1441 (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
1442 function arguments providing a pointer to the argument.
1443 (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
1444 function arguments providing the argument.
1445 (function_args_iter_init): Inline function to initialize
1446 function_args_iterator.
1447 (function_args_iter_cond_ptr): Inline function to return the next
1448 pointer to hold the argument.
1449 (function_args_iter_cond): Inline function to return the next
1451 (function_args_iter_cond_next): Advance the function args
1453 (stdarg_p): New function, return true if variable argument
1455 (prototype_p): New function, return true if function is
1457 (function_args_count): New function, count the number of arguments
1460 * tree.c (stdarg_p): New function, return true if variable
1462 (prototype_p): New function, return true if function is
1465 * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
1466 (TARGET_ROUND): New macro for the round/ptest instructions which
1467 are shared between SSE4.1 and SSE5.
1468 (OPTION_MASK_ISA_ROUND): Ditto.
1469 (OPTION_ISA_ROUND): Ditto.
1470 (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
1471 (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
1473 * config/i386/i386.opt (-msse5): New switch for SSE5 support.
1474 (-mfused-madd): New switch to give users control over whether the
1475 compiler optimizes to use the multiply/add SSE5 instructions.
1477 * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
1478 m_ATHLON_K8_AMDFAM10, and change all uses.
1479 (enum pta_flags): Add PTA_SSE5.
1480 (ix86_handle_option): Turn off 3dnow if -msse5.
1481 (override_options): Add SSE5 support.
1482 (print_operand): %Y prints comparison codes for SSE5 com/pcom
1484 (ix86_expand_sse_movcc): Add SSE5 support.
1485 (ix86_expand_sse5_unpack): New function to use pperm to unpack a
1486 vector type to the next largest size.
1487 (ix86_expand_sse5_pack): New function to use pperm to pack a
1488 vector type to the next smallest size.
1489 (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
1490 (IX86_BUILTIN_FMADDSD): Ditto.
1491 (IX86_BUILTIN_FMADDPS): Ditto.
1492 (IX86_BUILTIN_FMADDPD): Ditto.
1493 (IX86_BUILTIN_FMSUBSS): Ditto.
1494 (IX86_BUILTIN_FMSUBSD): Ditto.
1495 (IX86_BUILTIN_FMSUBPS): Ditto.
1496 (IX86_BUILTIN_FMSUBPD): Ditto.
1497 (IX86_BUILTIN_FNMADDSS): Ditto.
1498 (IX86_BUILTIN_FNMADDSD): Ditto.
1499 (IX86_BUILTIN_FNMADDPS): Ditto.
1500 (IX86_BUILTIN_FNMADDPD): Ditto.
1501 (IX86_BUILTIN_FNMSUBSS): Ditto.
1502 (IX86_BUILTIN_FNMSUBSD): Ditto.
1503 (IX86_BUILTIN_FNMSUBPS): Ditto.
1504 (IX86_BUILTIN_FNMSUBPD): Ditto.
1505 (IX86_BUILTIN_PCMOV_V2DI): Ditto.
1506 (IX86_BUILTIN_PCMOV_V4SI): Ditto.
1507 (IX86_BUILTIN_PCMOV_V8HI): Ditto.
1508 (IX86_BUILTIN_PCMOV_V16QI): Ditto.
1509 (IX86_BUILTIN_PCMOV_V4SF): Ditto.
1510 (IX86_BUILTIN_PCMOV_V2DF): Ditto.
1511 (IX86_BUILTIN_PPERM): Ditto.
1512 (IX86_BUILTIN_PERMPS): Ditto.
1513 (IX86_BUILTIN_PERMPD): Ditto.
1514 (IX86_BUILTIN_PMACSSWW): Ditto.
1515 (IX86_BUILTIN_PMACSWW): Ditto.
1516 (IX86_BUILTIN_PMACSSWD): Ditto.
1517 (IX86_BUILTIN_PMACSWD): Ditto.
1518 (IX86_BUILTIN_PMACSSDD): Ditto.
1519 (IX86_BUILTIN_PMACSDD): Ditto.
1520 (IX86_BUILTIN_PMACSSDQL): Ditto.
1521 (IX86_BUILTIN_PMACSSDQH): Ditto.
1522 (IX86_BUILTIN_PMACSDQL): Ditto.
1523 (IX86_BUILTIN_PMACSDQH): Ditto.
1524 (IX86_BUILTIN_PMADCSSWD): Ditto.
1525 (IX86_BUILTIN_PMADCSWD): Ditto.
1526 (IX86_BUILTIN_PHADDBW): Ditto.
1527 (IX86_BUILTIN_PHADDBD): Ditto.
1528 (IX86_BUILTIN_PHADDBQ): Ditto.
1529 (IX86_BUILTIN_PHADDWD): Ditto.
1530 (IX86_BUILTIN_PHADDWQ): Ditto.
1531 (IX86_BUILTIN_PHADDDQ): Ditto.
1532 (IX86_BUILTIN_PHADDUBW): Ditto.
1533 (IX86_BUILTIN_PHADDUBD): Ditto.
1534 (IX86_BUILTIN_PHADDUBQ): Ditto.
1535 (IX86_BUILTIN_PHADDUWD): Ditto.
1536 (IX86_BUILTIN_PHADDUWQ): Ditto.
1537 (IX86_BUILTIN_PHADDUDQ): Ditto.
1538 (IX86_BUILTIN_PHSUBBW): Ditto.
1539 (IX86_BUILTIN_PHSUBWD): Ditto.
1540 (IX86_BUILTIN_PHSUBDQ): Ditto.
1541 (IX86_BUILTIN_PROTB): Ditto.
1542 (IX86_BUILTIN_PROTW): Ditto.
1543 (IX86_BUILTIN_PROTD): Ditto.
1544 (IX86_BUILTIN_PROTQ): Ditto.
1545 (IX86_BUILTIN_PROTB_IMM): Ditto.
1546 (IX86_BUILTIN_PROTW_IMM): Ditto.
1547 (IX86_BUILTIN_PROTD_IMM): Ditto.
1548 (IX86_BUILTIN_PROTQ_IMM): Ditto.
1549 (IX86_BUILTIN_PSHLB): Ditto.
1550 (IX86_BUILTIN_PSHLW): Ditto.
1551 (IX86_BUILTIN_PSHLD): Ditto.
1552 (IX86_BUILTIN_PSHLQ): Ditto.
1553 (IX86_BUILTIN_PSHAB): Ditto.
1554 (IX86_BUILTIN_PSHAW): Ditto.
1555 (IX86_BUILTIN_PSHAD): Ditto.
1556 (IX86_BUILTIN_PSHAQ): Ditto.
1557 (IX86_BUILTIN_FRCZSS): Ditto.
1558 (IX86_BUILTIN_FRCZSD): Ditto.
1559 (IX86_BUILTIN_FRCZPS): Ditto.
1560 (IX86_BUILTIN_FRCZPD): Ditto.
1561 (IX86_BUILTIN_CVTPH2PS): Ditto.
1562 (IX86_BUILTIN_CVTPS2PH): Ditto.
1563 (IX86_BUILTIN_COMEQSS): Ditto.
1564 (IX86_BUILTIN_COMNESS): Ditto.
1565 (IX86_BUILTIN_COMLTSS): Ditto.
1566 (IX86_BUILTIN_COMLESS): Ditto.
1567 (IX86_BUILTIN_COMGTSS): Ditto.
1568 (IX86_BUILTIN_COMGESS): Ditto.
1569 (IX86_BUILTIN_COMUEQSS): Ditto.
1570 (IX86_BUILTIN_COMUNESS): Ditto.
1571 (IX86_BUILTIN_COMULTSS): Ditto.
1572 (IX86_BUILTIN_COMULESS): Ditto.
1573 (IX86_BUILTIN_COMUGTSS): Ditto.
1574 (IX86_BUILTIN_COMUGESS): Ditto.
1575 (IX86_BUILTIN_COMORDSS): Ditto.
1576 (IX86_BUILTIN_COMUNORDSS): Ditto.
1577 (IX86_BUILTIN_COMFALSESS): Ditto.
1578 (IX86_BUILTIN_COMTRUESS): Ditto.
1579 (IX86_BUILTIN_COMEQSD): Ditto.
1580 (IX86_BUILTIN_COMNESD): Ditto.
1581 (IX86_BUILTIN_COMLTSD): Ditto.
1582 (IX86_BUILTIN_COMLESD): Ditto.
1583 (IX86_BUILTIN_COMGTSD): Ditto.
1584 (IX86_BUILTIN_COMGESD): Ditto.
1585 (IX86_BUILTIN_COMUEQSD): Ditto.
1586 (IX86_BUILTIN_COMUNESD): Ditto.
1587 (IX86_BUILTIN_COMULTSD): Ditto.
1588 (IX86_BUILTIN_COMULESD): Ditto.
1589 (IX86_BUILTIN_COMUGTSD): Ditto.
1590 (IX86_BUILTIN_COMUGESD): Ditto.
1591 (IX86_BUILTIN_COMORDSD): Ditto.
1592 (IX86_BUILTIN_COMUNORDSD): Ditto.
1593 (IX86_BUILTIN_COMFALSESD): Ditto.
1594 (IX86_BUILTIN_COMTRUESD): Ditto.
1595 (IX86_BUILTIN_COMEQPS): Ditto.
1596 (IX86_BUILTIN_COMNEPS): Ditto.
1597 (IX86_BUILTIN_COMLTPS): Ditto.
1598 (IX86_BUILTIN_COMLEPS): Ditto.
1599 (IX86_BUILTIN_COMGTPS): Ditto.
1600 (IX86_BUILTIN_COMGEPS): Ditto.
1601 (IX86_BUILTIN_COMUEQPS): Ditto.
1602 (IX86_BUILTIN_COMUNEPS): Ditto.
1603 (IX86_BUILTIN_COMULTPS): Ditto.
1604 (IX86_BUILTIN_COMULEPS): Ditto.
1605 (IX86_BUILTIN_COMUGTPS): Ditto.
1606 (IX86_BUILTIN_COMUGEPS): Ditto.
1607 (IX86_BUILTIN_COMORDPS): Ditto.
1608 (IX86_BUILTIN_COMUNORDPS): Ditto.
1609 (IX86_BUILTIN_COMFALSEPS): Ditto.
1610 (IX86_BUILTIN_COMTRUEPS): Ditto.
1611 (IX86_BUILTIN_COMEQPD): Ditto.
1612 (IX86_BUILTIN_COMNEPD): Ditto.
1613 (IX86_BUILTIN_COMLTPD): Ditto.
1614 (IX86_BUILTIN_COMLEPD): Ditto.
1615 (IX86_BUILTIN_COMGTPD): Ditto.
1616 (IX86_BUILTIN_COMGEPD): Ditto.
1617 (IX86_BUILTIN_COMUEQPD): Ditto.
1618 (IX86_BUILTIN_COMUNEPD): Ditto.
1619 (IX86_BUILTIN_COMULTPD): Ditto.
1620 (IX86_BUILTIN_COMULEPD): Ditto.
1621 (IX86_BUILTIN_COMUGTPD): Ditto.
1622 (IX86_BUILTIN_COMUGEPD): Ditto.
1623 (IX86_BUILTIN_COMORDPD): Ditto.
1624 (IX86_BUILTIN_COMUNORDPD): Ditto.
1625 (IX86_BUILTIN_COMFALSEPD): Ditto.
1626 (IX86_BUILTIN_COMTRUEPD): Ditto.
1627 (IX86_BUILTIN_PCOMEQUB): Ditto.
1628 (IX86_BUILTIN_PCOMNEUB): Ditto.
1629 (IX86_BUILTIN_PCOMLTUB): Ditto.
1630 (IX86_BUILTIN_PCOMLEUB): Ditto.
1631 (IX86_BUILTIN_PCOMGTUB): Ditto.
1632 (IX86_BUILTIN_PCOMGEUB): Ditto.
1633 (IX86_BUILTIN_PCOMFALSEUB): Ditto.
1634 (IX86_BUILTIN_PCOMTRUEUB): Ditto.
1635 (IX86_BUILTIN_PCOMEQUW): Ditto.
1636 (IX86_BUILTIN_PCOMNEUW): Ditto.
1637 (IX86_BUILTIN_PCOMLTUW): Ditto.
1638 (IX86_BUILTIN_PCOMLEUW): Ditto.
1639 (IX86_BUILTIN_PCOMGTUW): Ditto.
1640 (IX86_BUILTIN_PCOMGEUW): Ditto.
1641 (IX86_BUILTIN_PCOMFALSEUW): Ditto.
1642 (IX86_BUILTIN_PCOMTRUEUW): Ditto.
1643 (IX86_BUILTIN_PCOMEQUD): Ditto.
1644 (IX86_BUILTIN_PCOMNEUD): Ditto.
1645 (IX86_BUILTIN_PCOMLTUD): Ditto.
1646 (IX86_BUILTIN_PCOMLEUD): Ditto.
1647 (IX86_BUILTIN_PCOMGTUD): Ditto.
1648 (IX86_BUILTIN_PCOMGEUD): Ditto.
1649 (IX86_BUILTIN_PCOMFALSEUD): Ditto.
1650 (IX86_BUILTIN_PCOMTRUEUD): Ditto.
1651 (IX86_BUILTIN_PCOMEQUQ): Ditto.
1652 (IX86_BUILTIN_PCOMNEUQ): Ditto.
1653 (IX86_BUILTIN_PCOMLTUQ): Ditto.
1654 (IX86_BUILTIN_PCOMLEUQ): Ditto.
1655 (IX86_BUILTIN_PCOMGTUQ): Ditto.
1656 (IX86_BUILTIN_PCOMGEUQ): Ditto.
1657 (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
1658 (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
1659 (IX86_BUILTIN_PCOMEQB): Ditto.
1660 (IX86_BUILTIN_PCOMNEB): Ditto.
1661 (IX86_BUILTIN_PCOMLTB): Ditto.
1662 (IX86_BUILTIN_PCOMLEB): Ditto.
1663 (IX86_BUILTIN_PCOMGTB): Ditto.
1664 (IX86_BUILTIN_PCOMGEB): Ditto.
1665 (IX86_BUILTIN_PCOMFALSEB): Ditto.
1666 (IX86_BUILTIN_PCOMTRUEB): Ditto.
1667 (IX86_BUILTIN_PCOMEQW): Ditto.
1668 (IX86_BUILTIN_PCOMNEW): Ditto.
1669 (IX86_BUILTIN_PCOMLTW): Ditto.
1670 (IX86_BUILTIN_PCOMLEW): Ditto.
1671 (IX86_BUILTIN_PCOMGTW): Ditto.
1672 (IX86_BUILTIN_PCOMGEW): Ditto.
1673 (IX86_BUILTIN_PCOMFALSEW): Ditto.
1674 (IX86_BUILTIN_PCOMTRUEW): Ditto.
1675 (IX86_BUILTIN_PCOMEQD): Ditto.
1676 (IX86_BUILTIN_PCOMNED): Ditto.
1677 (IX86_BUILTIN_PCOMLTD): Ditto.
1678 (IX86_BUILTIN_PCOMLED): Ditto.
1679 (IX86_BUILTIN_PCOMGTD): Ditto.
1680 (IX86_BUILTIN_PCOMGED): Ditto.
1681 (IX86_BUILTIN_PCOMFALSED): Ditto.
1682 (IX86_BUILTIN_PCOMTRUED): Ditto.
1683 (IX86_BUILTIN_PCOMEQQ): Ditto.
1684 (IX86_BUILTIN_PCOMNEQ): Ditto.
1685 (IX86_BUILTIN_PCOMLTQ): Ditto.
1686 (IX86_BUILTIN_PCOMLEQ): Ditto.
1687 (IX86_BUILTIN_PCOMGTQ): Ditto.
1688 (IX86_BUILTIN_PCOMGEQ): Ditto.
1689 (IX86_BUILTIN_PCOMFALSEQ): Ditto.
1690 (IX86_BUILTIN_PCOMTRUEQ): Ditto.
1691 (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
1692 OPTION_MASK_ISA_ROUND for instructions that are shared between
1694 (bdesc_2arg): Ditto.
1695 (bdesc_sse_3arg): Ditto.
1696 (enum multi_arg_type): New enum for describing the various SSE5
1697 intrinsic argument types.
1698 (bdesc_multi_arg): New table for SSE5 intrinsics.
1699 (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
1700 (ix86_expand_multi_arg_builtin): New function for creating SSE5
1702 (ix86_expand_builtin): Add SSE5 intrinsic support.
1703 (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
1704 operand instructions.
1705 (ix86_expand_sse5_multiple_memory): New function to split the
1706 second memory reference from SSE5 instructions.
1707 (type_has_variadic_args_p): Delete in favor of stdarg_p.
1708 (ix86_return_pops_args): Use stdarg_p to determine if the function
1709 has variable arguments.
1710 (ix86_setup_incoming_varargs): Ditto.
1711 (x86_this_parameter): Ditto.
1713 * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
1715 (ix86_expand_sse5_pack): Ditto.
1716 (ix86_sse5_valid_op_p): Ditto.
1717 (ix86_expand_sse5_multiple_memory): Ditto.
1719 * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
1720 constant for SSE5 support.
1721 (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
1722 (UNSPEC_SSE5_TRUEFALSE): Ditto.
1723 (UNSPEC_SSE5_PERMUTE): Ditto.
1724 (UNSPEC_SSE5_ASHIFT): Ditto.
1725 (UNSPEC_SSE5_LSHIFT): Ditto.
1726 (UNSPEC_FRCZ): Ditto.
1727 (UNSPEC_CVTPH2PS): Ditto.
1728 (UNSPEC_CVTPS2PH): Ditto.
1729 (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
1731 (COM_FALSE_S): Ditto.
1732 (COM_FALSE_P): Ditto.
1733 (COM_TRUE_S): Ditto.
1734 (COM_TRUE_P): Ditto.
1735 (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
1736 (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
1738 (memory attribute): Ditto.
1739 (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
1740 Use SSE4_1_ROUND_* constants instead of hard coded numbers.
1741 (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
1742 (floor<mode>2): Ditto.
1743 (ceil<mode>2): Ditto.
1744 (btrunc<mode>2): Ditto.
1745 (nearbyintdf2): Ditto.
1746 (nearbyintsf2): Ditto.
1747 (sse_setccsf): Disable if SSE5.
1748 (sse_setccdf): Ditto.
1749 (sse5_setcc<mode>): New support for SSE5 conditional move.
1750 (sse5_pcmov_<mode>): Ditto.
1752 * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
1754 (SSEMODEF2P): Ditto.
1755 (ssemodesuffixf4): New mode attribute for SSE5.
1756 (ssemodesuffixf2s): Ditto.
1757 (ssemodesuffixf2c): Ditto.
1758 (sserotatemax): Ditto.
1759 (ssescalarmode): Ditto.
1760 (sse_maskcmpv4sf3): Disable if SSE5.
1761 (sse_maskcmpv2df3): Ditto.
1762 (sse_vmmaskcmpv4sf3): Ditto.
1763 (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
1765 (sse5_vmfmadd<mode>4): Ditto.
1766 (sse5_fmsub<mode>4): Ditto.
1767 (sse5_vmfmsub<mode>4): Ditto.
1768 (sse5_fnmadd<mode>4): Ditto.
1769 (sse5_vmfnmadd<mode>4): Ditto.
1770 (sse5_fnmsub<mode>4): Ditto.
1771 (sse5_vmfnmsub<mode>4): Ditto.
1772 (sse5i_fmadd<mode>4): Ditto.
1773 (sse5i_fmsub<mode>4): Ditto.
1774 (sse5i_fnmadd<mode>4): Ditto.
1775 (sse5i_fnmsub<mode>4): Ditto.
1776 (sse5i_vmfmadd<mode>4): Ditto.
1777 (sse5i_vmfmsub<mode>4): Ditto.
1778 (sse5i_vmfnmadd<mode>4): Ditto.
1779 (sse5i_vmfnmsub<mode>4): Ditto.
1780 (mulv16qi3): Add SSE5 support.
1782 (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
1783 (sse2_mulv4si3): Disable if SSE5.
1784 (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
1785 (sse4_1_roundps): Ditto.
1786 (sse4_1_roundsd): Ditto.
1787 (sse4_1_roundss): Ditto.
1788 (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
1790 (sse_maskcmpsf3): Ditto.
1791 (sse_vmmaskcmpv4sf3): Ditto.
1792 (sse2_maskcmpv2df3): Ditto.
1793 (sse2_maskcmpdf3): Ditto.
1794 (sse2_vmmaskcmpv2df3): Ditto.
1795 (sse2_eq<mode>3): Ditto.
1796 (sse2_gt<mode>3): Ditto.
1797 (sse5_pcmov_<mode>): Add SSE5 support.
1798 (vec_unpacku_hi_v16qi): Ditto.
1799 (vec_unpacks_hi_v16qi): Ditto.
1800 (vec_unpacku_lo_v16qi): Ditto.
1801 (vec_unpacks_lo_v16qi): Ditto.
1802 (vec_unpacku_hi_v8hi): Ditto.
1803 (vec_unpacks_hi_v8hi): Ditto.
1804 (vec_unpacku_lo_v8hi): Ditto.
1805 (vec_unpacks_lo_v8hi): Ditto.
1806 (vec_unpacku_hi_v4si): Ditto.
1807 (vec_unpacks_hi_v4si): Ditto.
1808 (vec_unpacku_lo_v4si): Ditto.
1809 (vec_unpacks_lo_v4si): Ditto.
1810 (sse5_pmacsww): New SSE5 intrinsic insn.
1811 (sse5_pmacssww): Ditto.
1812 (sse5_pmacsdd): Ditto.
1813 (sse5_pmacssdd): Ditto.
1814 (sse5_pmacssdql): Ditto.
1815 (sse5_pmacssdqh): Ditto.
1816 (sse5_pmacsdqh): Ditto.
1817 (sse5_pmacsswd): Ditto.
1818 (sse5_pmacswd): Ditto.
1819 (sse5_pmadcsswd): Ditto.
1820 (sse5_pmadcswd): Ditto.
1821 (sse5_pcmov_<move>): Conditional move support on SSE5.
1822 (sse5_phaddbw): New SSE5 intrinsic insn.
1823 (sse5_phaddbd): Ditto.
1824 (sse5_phaddbq): Ditto.
1825 (sse5_phaddwd): Ditto.
1826 (sse5_phaddwq): Ditto.
1827 (sse5_phadddq): Ditto.
1828 (sse5_phaddubw): Ditto.
1829 (sse5_phaddubd): Ditto.
1830 (sse5_phaddubq): Ditto.
1831 (sse5_phadduwd): Ditto.
1832 (sse5_phadduwq): Ditto.
1833 (sse5_phaddudq): Ditto.
1834 (sse5_phsubbw): Ditto.
1835 (sse5_phsubwd): Ditto.
1836 (sse5_phsubdq): Ditto.
1837 (sse5_pperm): Ditto.
1838 (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
1839 (sse5_pperm_zero_v16qi_v8hi): Ditto.
1840 (sse5_pperm_sign_v8hi_v4si): Ditto.
1841 (sse5_pperm_zero_v8hi_v4si): Ditto.
1842 (sse5_pperm_sign_v4si_v2di): Ditto.
1843 (sse5_pperm_sign_v4si_v2di): Ditto.
1844 (sse5_pperm_pack_v2di_v4si): Ditto.
1845 (sse5_pperm_pack_v4si_v8hi): Ditto.
1846 (sse5_pperm_pack_v8hi_v16qi): Ditto.
1847 (sse5_perm<mode>): New SSE5 intrinsic insn.
1848 (rotl<mode>3): Ditto.
1849 (sse5_rotl<mode>3): Ditto.
1850 (sse5_ashl<mode>3): Ditto.
1851 (sse5_lshl<mode>3): Ditto.
1852 (sse5_frcz<mode>2): Ditto.
1853 (sse5s_frcz<mode>2): Ditto.
1854 (sse5_cvtph2ps): Ditto.
1855 (sse5_cvtps2ph): Ditto.
1856 (sse5_vmmaskcmp<mode>3): Ditto.
1857 (sse5_com_tf<mode>3): Ditto.
1858 (sse5_maskcmp<mode>3): Ditto.
1859 (sse5_maskcmp_uns<mode>3): Ditto.
1860 (sse5_maskcmp_uns2<mode>3): Ditto.
1861 (sse5_pcom_tf<mode>3): Ditto.
1863 * config/i386/predicates.md (const_0_to_31_operand): New predicate
1865 (sse5_comparison_float_operator): New predicate to match the
1866 comparison operators supported by the SSE5 com instruction.
1867 (ix86_comparison_int_operator): New predicate to match just the
1868 signed int comparisons.
1869 (ix86_comparison_uns_operator): New predicate to match just the
1870 unsigned int comparisons.
1872 * doc/invoke.texi (-msse5): Add documentation.
1873 (-mfused-madd): Ditto.
1875 * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
1877 * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
1879 (x86_64-*-*): Ditto.
1881 * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
1883 * config/i386/bmmintrin.h: New file, provide common x86 compiler
1884 intrinisics for SSE5.
1886 * config/i386/smmintrin.h: Move instructions shared with SSE5 to
1889 * config/i386/mmintrin-common.h: New file, to contain common
1890 instructions between SSE4.1 and SSE5.
1892 * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
1893 FOREACH_FUNCTION_ARGS to iterate over the argument list.
1894 (gen_regparm_prefix): Ditto.
1896 * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
1897 FOREACH_FUNCTION_ARGS to iterate over the argument list. Use
1898 prototype_p to determine if a function is prototyped.
1900 2007-09-12 Janis Johnson <janis187@us.ibm.com>
1902 * config/dfp-bit.c (dfp_conversion_exception): New function.
1903 (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
1904 (DFP_TO_INT): Ditto.
1905 (INT_TO_DFP): Ditto.
1906 * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
1908 2007-09-12 Jakub Jelinek <jakub@redhat.com>
1911 * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
1912 before sp restoration even when total_size is 0, but
1913 frame_pointer_needed.
1915 2007-09-12 Bob Wilson <bob.wilson@acm.org>
1917 * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
1918 (xtensa_copy_incoming_a7): Use start_sequence instead of
1919 push_to_sequence. Stash insns in vararg_a7_copy for builtin_saveregs.
1920 (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
1921 of the saveregs sequence.
1923 2007-09-12 Richard Sandiford <richard@codesourcery.com>
1925 * c-tree.h (grokfield): Add a "tree *" argument.
1926 * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
1927 Chain nested decl attributes to it. Don't call decl_attributes here.
1928 (groktypename): Pass grokdeclarator a pointer to the attribute list.
1929 (start_decl, grokparm, push_parm_decl, start_function): Likewise.
1930 (grokfield): Take a pointer to the decl's attributes and pass
1931 it to grokdeclarator.
1932 * c-parser.c (c_parser_struct_declaration): Update the calls to
1933 grokfield. Call decl_attributes for anonymous struct and union
1936 2007-09-12 Jan Hubicka <jh@suse.cz>
1938 * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
1940 2007-09-12 Ira Rosen <irar@il.ibm.com>
1942 PR tree-optimization/32377
1943 * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
1944 between positive and negative dependence distance using DDR_REVERSED_P.
1946 2007-09-12 Dorit Nuzman <dorit@il.ibm.com>
1948 PR tree-optimization/33373
1949 * tree-vect-analyze (vect_determine_vectorization_factor): Call
1950 TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT.
1952 2007-09-12 Jan Hubicka <jh@suse.cz>
1955 * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
1958 2007-09-12 Christian Bruel <christian.bruel@st.com>
1960 * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
1961 * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed.
1963 2007-09-12 Ira Rosen <irar@il.ibm.com>
1965 * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
1966 for oprnd1 if not required.
1967 (vectorizable_operation): Use scalar operand in SLP in case of
1968 shift with scalar argument.
1970 2007-09-12 Ira Rosen <irar@il.ibm.com>
1972 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum
1975 2007-09-11 James E. Wilson <wilson@specifix.com>
1977 * defaults.h (DWARF2_UNWIND_INFO): Don't define if
1978 TARGET_UNWIND_INFO is defined.
1979 * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
1982 2007-09-12 Kaz Kojima <kkojima@gcc.gnu.org>
1984 * config/sh/sh.c (calc_live_regs): Use
1985 current_function_saves_all_registers instead of
1986 current_function_has_nonlocal_label.
1987 (sh_allocate_initial_value): Likewise.
1988 (sh_get_pr_initial_val): Likewise.
1989 * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
1990 * config/sh/sh.md (load_ra): Likewise.
1992 2007-09-12 Hans-Peter Nilsson <hp@axis.com>
1994 * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
1997 * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
1998 GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
2000 2007-09-12 Sa Liu <saliu@de.ibm.com>
2002 * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
2003 operands to DFmode GE or LE compares.
2005 2007-09-12 Bernd Schmidt <bernd.schmidt@analog.com>
2007 * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
2008 REG_CLASS_NAMES): Add P0REGS.
2009 (REGNO_REG_CLASS): Return it where appropriate.
2010 (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
2011 (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
2012 * doc/md.texi (Blackfin family): Document 'q' constraints.
2014 2007-09-11 Steve Kenton <skenton@ou.edu>
2016 * pa/linux-unwind.h: Guard with inhibit_libc.
2017 * pa/hpux-unwind.h: Likewise.
2019 2007-09-11 David Daney <ddaney@avtrex.com>
2021 * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
2022 * doc/install.texi: Document new --with-llsc and --without-llsc
2024 * config.gcc: Handle --with-llsc and --without-llsc configure options.
2025 * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
2026 in %| and %- operand codes. Depend on GENERATE_SYNC instead of
2028 (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
2029 sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2030 sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2031 sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2032 sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
2033 GENERATE_LL_SC instead of ISA_HAS_LL_SC.
2034 * config/mips/mips.opt (mllsc): New option.
2035 * config/mips/mips.c (mips_llsc): Define variable.
2036 (mips_handle_option): Handle mllsc option.
2037 (override_options): Set mips_print_operand_punct for '|' and '-'.
2038 (print_operand): Add new %| and %- operand codes.
2039 * config/mips/mips.h (mips_llsc_setting): New enum type.
2040 (mips_llsc): Declare.
2041 (OPTION_DEFAULT_SPECS): Add llsc handling.
2042 (GENERATE_SYNC): New macro.
2043 (GENERATE_LL_SC): New macro.
2044 (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
2045 MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2046 MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
2047 in %| and %- operand codes.
2049 2007-09-11 Eric Botcazou <ebotcazou@adacore.com>
2051 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
2052 TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
2054 2007-09-11 Jason Merrill <jason@redhat.com>
2057 * stor-layout.c (layout_decl): Do pack variable size fields.
2059 2007-09-11 Maxim Kuvyrkov <maxim@codesourcery.com>
2061 * config/m68k/predicates.md (movsi_const0_operand,
2062 non_symbolic_call_operand): New predicates.
2064 * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
2066 * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
2067 Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
2068 CW, CZ, CS, Ap and Ac.
2070 * config/m68k/m68k.md (UNSPEC_IB): New constant.
2071 (constraints.md): New include.
2072 (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
2073 opx_mem, opy_mem, op_mem, guess, split): New attributes.
2074 (movdf_internal): Name pattern. Fix to use alternatives. Add split.
2076 (pushdi): Add split.
2077 (tstsi_internal): Name pattern. Fix to use alternatives. Specify
2078 attributes. Split tstsi_internal_68020_cf from it.
2079 (tstsi_internal_68020_cf): New pattern.
2080 (tsthi_internal, tstqi_internal): Name pattern. Specify attributes.
2081 (tst<mode>_cf): Specify attributea.
2082 (cmpsi_cf): Name pattern. Specify attributes.
2083 (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
2084 (pushexthisi_const): Fix to use alternatives. Specify
2086 (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
2087 from it. Fix to use alternatives. Specify attributes.
2088 (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
2089 (movsi_cf, movstrictqi_cf): Fix to use alternatives. Specify
2091 (movsf_cf_soft): Specify attributes.
2092 (movdf_cf_soft): Add split.
2093 (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
2094 cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
2095 68k_extendqisi2, truncdfsf2_cf): Specify attributes.
2096 (truncdfsf2_68881): Name pattern. Specify attributes.
2097 (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
2098 floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
2099 fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
2101 (addsi3_5200): Fix to use alternatives. Specify attributes.
2103 (add<mode>3_cf, subdi_dishl32): Specify attributes.
2104 (subsi3): Add alternative for subq.l. Specify attributes.
2105 (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
2106 (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern. Specify
2108 (umulhisi3): Specify attributes.
2109 (mulhisisi3_z): Name pattern. Specify attributes.
2110 (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
2111 sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
2112 subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
2113 bsetmemqi): Specify attributes.
2114 (bsetmemqi_ext): Name pattern. Specify attributes.
2115 (bclrmemqi): Specify attributes.
2116 (bclrmemqi_ext, scc, sls): Name pattern. Specify attributes.
2117 (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
2119 (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
2120 pattern. Specify attributes.
2121 (jump): Specify attributes.
2122 (tablejump_internal): Name pattern. Specify attributes.
2123 (call_value): Split into non_symbolic_call_value,
2124 symbolic_call_value_jsr, symbolic_call_value_bsr. Fix to use
2125 alternatives. Specify attributes.
2126 (non_symbolic_call_value, symbolic_call_value_jsr,
2127 symbolic_call_value_bsr): New patterns.
2128 (nop, return, unlink, indirect_jump): Specify attributes.
2129 (trap): Fix condition. Specify attributes.
2132 * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
2133 (override_options): Initialize it. Initialize m68k_sched_cpu.
2134 (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
2135 (const_method): Make global, rename to m68k_const_method.
2136 (const_int_cost, output_move_const_into_data_reg): Update.
2137 (output_move_double): Parametrize to emit rtl code, rename to
2139 (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
2140 emit_movsi): New static functions.
2141 (output_move_double): New function with semantics of old
2143 (m68k_emit_move_double): New function.
2144 (m68k_sched_cpu): New variable.
2145 (attr_op_type): New enum.
2146 (sched_guess_p): New variable.
2147 (sched_address_type, sched_operand_type, sched_attr_op_type):
2148 New static functions.
2149 (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2150 m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
2151 (sched_branch_type): New static variable.
2152 (m68k_sched_branch_type): New function.
2153 * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
2154 (m68k_symbolic_call_var): Declare.
2155 (M68K_CONST_METHOD): Rename from CONST_METHOD. Move here from m68k.c.
2156 (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
2157 m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2158 m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
2161 2007-09-11 Jakub Jelinek <jakub@redhat.com>
2163 * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
2164 * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
2165 error if __builtin_va_arg_pack_len () wasn't optimized out during
2167 * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
2168 with the number of inline's anonymous arguments.
2169 * doc/extend.texi: Document __builtin_va_arg_pack_len ().
2171 2007-09-11 Zdenek Dvorak <ook@ucw.cz>
2173 * fold-const.c (extract_muldiv_1): Do not simplify
2176 2007-09-11 Jan Hubicka <jh@suse.cz>
2178 * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
2179 (TARGET_INTER_UNIT_CONVERSIONS): New.
2180 * i386.md (floatsi expanders): Remove redundant check for SImode
2181 source; offload to memory when asked for.
2182 (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
2183 floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2185 (floatsisf2_mixed_memory, floatsisf2_sse_memory,
2186 floatsidf2_mixed_memory, floatsidf2_sse_memory
2187 floatdisf2_mixed_memory, floatsisf2_sse_memory,
2188 floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
2190 2007-09-11 Jan Hubicka <jh@suse.cz>
2192 * toplev.c (process_options): all frontends now do unit-at-a-time.
2193 * cgraphunit.c: update comments.
2194 (cgraph_expand_function): call passmanager dirrectly; emit thunks.
2195 * c-decl.c (finish_function): use cgraph_add_new_function.
2196 * function.c (expand_function_end): We are always unit-at-a-time.
2198 2007-09-11 Richard Sandiford <richard@codesourcery.com>
2200 * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
2201 settings for MIPS16.
2202 (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
2204 2007-09-11 Richard Sandiford <richard@codesourcery.com>
2206 * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
2207 SYMBOL_FORCE_TO_MEM constants.
2208 (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
2209 (mips16_rewrite_pool_refs_info): New structure.
2210 (mips16_rewrite_pool_constant): New function, split out from...
2211 (mips16_rewrite_pool_refs): ...here. Take a pointer to a
2212 mips16_rewrite_pool_refs_info structure rather than a pointer
2213 to a constant pool. Force force_to_mem_operands into memory.
2214 (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
2215 * config/mips/predicates.md (force_to_mem_operand): New predicate.
2216 * config/mips/constraints.md (kf): New constraint.
2217 * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
2218 (*movsi_mips16): Likewise.
2220 2007-09-11 Richard Sandiford <richard@codesourcery.com>
2221 Nigel Stephens <nigel@mips.com>
2222 David Ung <davidu@mips.com>
2224 * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
2225 * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
2226 (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
2227 (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
2228 (mips_zero_extend_cost): New functions.
2229 (mips_rtx_costs): Treat COMPARE constants as having zero cost.
2230 Use the new functions. Tweak many cost estimates, both here
2231 and in the new subroutines. Return false when the cost of the
2232 operands has not been calculated. Check for *clear_upper32.
2233 Check for floating-point multiply-add, reciprocal and rsqrt
2234 patterns. Handle comparison and rotation codes.
2236 2007-09-11 Danny Smith <dannysmith@users.sourceforge.net>
2238 * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
2240 * config/i386/i386.c (get_dllimport_decl): Don't strip
2243 2007-09-10 Janis Johnson <janis187@us.ibm.com>
2246 * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
2247 declarations to top.
2248 (DFP_TO_BFP): Use for either XFmode or TFmode.
2249 (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
2251 * config/dfp-bit.h: Include float.h.
2252 (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
2253 double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
2254 which doesn't mean the same thing.
2255 (BFP_KIND): Use 4 to mean TFmode.
2256 (BFP_FMT): Specify the number of decimal digits based on the
2257 number of mantissa digits.
2258 (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
2259 (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
2260 (STR_TO_BFP): Use strtold for XFmode or TFmode.
2261 (TFtype): Define if TFmode is supported.
2262 * doc/libgcc.texi (Decimal float library routines): Document
2263 TF conversion functions.
2265 2007-09-10 Chao-ying Fu <fu@mips.com>
2267 * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
2268 (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
2269 (mips_emit_compare): Process fixed-point modes.
2270 (mips_pad_arg_upward): Support fixed-point types.
2271 (override_options): Allow fixed-point modes in accumulators.
2272 (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
2273 (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
2274 V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
2275 (mips_scalar_mode_supported_p): New function to accept fixed-point
2276 modes if the width is not greater than two BITS_PER_WORD.
2277 * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2278 LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2279 SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2280 LONG_LONG_ACCUM_TYPE_SIZE): Define.
2281 * config/mips/mips.md ("d"): Update mode attribute for fixed-point
2283 ("IMODE"): New mode attribute.
2284 (mips-fixed.md): Include.
2285 * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
2287 * config/mips/mips-fixed.md: New file.
2289 2007-09-11 Ben Elliston <bje@au.ibm.com>
2291 * config/spu/spu.md: Formatting fixes.
2293 2007-09-10 Janis Johnson <janis187@us.ibm.com>
2295 * config/dfp-bit.c (dfp_unary_func): Delete.
2296 (dfp_unary_op): Delete.
2297 (dfp_binary_op): Use decFloat functions instead of decNumber
2298 functions for binary operations.
2299 (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
2300 (dnn_binary_op): Call dfp_binary_op with decFloat rather than
2302 (dfp_compare_op): Use decFloat functions insteadof decNumber
2303 functions for comparisons.
2304 (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
2305 (dnn_binary_op): Call dfp_compare_op with decFloat rather than
2307 (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
2308 call to dxx_binary_op and decFloat function.
2309 (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
2310 calls to dxx_binary_op and decFloat function.
2311 * config/dfp-bit.h: Include decFloat header files.
2312 (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
2313 DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
2314 DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
2315 DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
2317 2007-09-10 Harsha Jagasia <harsha.jagasia@amd.com>
2318 Jan Sjodin <jan.sjodin@amd.com>
2320 * tree-vect-analyze.c (vect_analyze_operations): Change
2321 comparison of loop iterations with threshold to less than
2322 or equal to instead of less than. Reduce
2323 min_scalar_loop_bound by one.
2324 * tree-vect-transform.c (vect_estimate_min_profitable_iters):
2325 Change prologue and epilogue iterations estimate to vf/2,
2326 when unknown at compile-time. Change versioning guard
2327 cost to taken_branch_cost. If peeling for alignment is
2328 unknown at compile-time, change peel guard costs to one
2329 taken branch and one not-taken branch per peeled loop.
2330 If peeling for alignment is known but number of scalar loop
2331 iterations is unknown at compile-time, change peel guard
2332 costs to one taken branch per peeled loop. Change the cost
2333 model equation to consider vector iterations as the loop
2334 iterations less the prologue and epilogue iterations.
2335 Change outside vector cost check to less than or equal to
2336 zero instead of equal to zero.
2337 (vect_do_peeling_for_loop_bound): Reduce
2338 min_scalar_loop_bound by one.
2339 * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
2340 TARG_COND_NOT_TAKEN_BRANCH_COST.
2341 * config/i386/i386.h (processor_costs): Add
2342 scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
2343 vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
2344 vec_align_load_cost, vect_unalign_load_cost,
2345 vec_store_cost, cond_taken_branch_cost,
2346 cond_not_taken_branch_cost.
2347 Define macros for x86 costs.
2348 * config/i386/i386.c:
2349 (size_cost): Set scalar_stmt_cost, scalar_load_cost,
2350 scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
2351 scalar_to_vec_cost, vec_align_load_cost,
2352 vect_unalign_load_cost, vec_store_cost,
2353 cond_taken_branch_cost, cond_not_taken_branch_cost to one.
2354 (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
2355 geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost,
2356 core2_cost, generic64_cost, generic32_cost): Set to default
2358 (k8_cost, amdfam10_cost): Costs for vectorization tuned.
2359 (x86_builtin_vectorization_cost): New.
2361 2007-09-10 Janis Johnson <janis187@us.ibm.com>
2362 Ben Elliston <bje@au.ibm.com>
2364 * dfp.c: Include decimal128Local.h;
2365 (dfp_byte_swap): Remove.
2366 (encode_decimal32, decode_decimal32): Don't handle endianness.
2367 (encode_decimal64, decode_decimal64): Ditto.
2368 (encode_decimal128, decode_decimal128): Ditto.
2369 * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
2371 (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
2373 (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
2374 * Makefile.in (DECNUM_H): Add decimal128Local.h.
2376 2007-09-10 David Daney <ddaney@avtrex.com>
2378 * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
2380 (memory_barrier): Rewrote as an insn that clobbers memory.
2382 2007-09-10 Richard Sandiford <richard@codesourcery.com>
2384 * config/mips/mips.c (mips_global_pointer): Check
2385 call_really_used_regs instead of call_used_regs.
2386 (mips_save_reg_p): Likewise. Save all call-saved registers
2387 if current_function_saves_all_registers. Fix indentation.
2388 No longer treat $18 as a special case.
2389 (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
2391 2007-09-10 Richard Sandiford <richard@codesourcery.com>
2393 * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
2394 * config/mips/mips.c (mips_cpu_info_table): Mention it in the
2395 the introductory comment.
2396 (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2397 (override_options): Don't test for it.
2398 * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2399 (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
2400 * config/mips/vr.h: As for config/mips/sde.h.
2402 2007-09-10 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
2403 Revital Eres <eres@il.ibm.com>
2405 * target.h (struct gcc_target.sched): New field: sms_res_mii.
2406 (struct ddg): Define.
2407 * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
2408 (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
2409 * config/spu/spu.c: Include ddg.h.
2410 (TARGET_SCHED_SMS_RES_MII): Define.
2411 (spu_sms_res_mii): New function to calculate mii.
2412 * modulo-sched (res_MII): Use it.
2413 * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
2415 2007-09-10 Andreas Krebbel <krebbel1@de.ibm.com>
2417 * config/s390/s390.c (s390_dump_pool): Create copy of constant
2418 pool entries since they might hold values that must not be shared.
2420 2007-09-10 Uros Bizjak <ubizjak@gmail.com>
2423 * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
2424 Use 'N' operand constraint for op2.
2425 (lshr<mode>3): Ditto.
2426 (ashl<mode>3): Ditto.
2427 (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
2428 (vec_shr_<mode>): Ditto.
2429 * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
2430 IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
2432 2007-09-10 Andreas Krebbel <krebbel1@de.ibm.com>
2434 * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
2435 Change mode macro in the last real_2expN parameter to uppercase.
2437 2007-09-10 Michael Matz <matz@suse.de>
2439 * tree-pass.h (pass_cselim): Declare new pass.
2440 * passes.c (init_optimization_passes): Link in pass_cselim.
2441 * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
2442 tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
2443 cond_store_replacement.
2444 (condstoretemp): New static variable.
2445 (cond_store_replacement): New function.
2446 (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
2447 tree_ssa_phiopt_worker.
2448 (struct name_to_bb): New.
2449 (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
2450 nt_init_block, nt_fini_block): New static functions.
2451 (seen_ssa_names, nontrap_set): New static variables.
2452 (gate_cselim, pass_cselim): Define new pass.
2453 * common.opt (ftree-cselim): New flag.
2454 * toplev.c (process_options): Set flag_tree_cselim if required.
2456 2007-09-10 Hans-Peter Nilsson <hp@axis.com>
2458 * simplify-rtx.c (simplify_relational_operation_1): For recent
2459 canonicalization, don't recurse if op1 equals both PLUS arguments.
2461 2007-09-09 David Daney <ddaney@avtrex.com>
2463 * optabs.c (expand_sync_operation): Use plus insn if minus
2465 (expand_sync_fetch_operation): Ditto.
2467 2007-09-09 H.J. Lu <hongjiu.lu@intel.com>
2469 * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
2471 (*floatsisf2_sse_vector): Likewise.
2473 2007-09-09 Krister Walfridsson <cato@df.lth.se>
2475 * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2477 2007-09-09 H.J. Lu <hongjiu.lu@intel.com>
2479 * config/i386/i386.h (ix86_tune_indices): Rename
2480 X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
2481 (TARGET_USE_VECTOR_CONVERTS): Updated.
2482 * config/i386/i386.c: Likewise.
2484 2007-09-09 Sandra Loosemore <sandra@codesourcery.com>
2485 Nigel Stephens <nigel@mips.com>
2487 * doc/invoke.texi (Overall Options): Add .sx file extension
2488 as a synonym for .S.
2489 * cppspec.c (known_suffixes): Likewise.
2490 * gcc.c (default_compilers): Likewise.
2492 2007-09-09 Rask Ingemann Lambertsen <rask@sygehus.dk>
2495 * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
2496 * simplify-rtx.c (simplify_relational_operation_1): Add the
2497 canonicalization from i386.h.
2498 * doc/md.texi (Canonicalization of Instructions): Document it.
2500 2007-09-09 Jan Hubicka <jh@suse.cz>
2501 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2503 * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
2504 (TARGET_USE_VECTOR_CONVERTS): New.
2505 * i386.md: New post-reload splitters for converting SF to DF and DF to
2507 (floatsi* expander): Special case vector conversions.
2508 (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
2509 floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
2510 floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
2511 (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2512 Disable when doing vector converts.
2513 (floatsi<mode>2_i387): Disable when
2514 * sse.md (vec_dupv2df): Export.
2515 * i386.c (ix86_tune_features): Enable SSE conversions.
2517 2007-09-09 Richard Guenther <rguenther@suse.de>
2519 * tree-ssa-operands.c (add_virtual_operand): Only mark
2520 stores as has_volatile_ops if alias information is not available.
2522 2007-09-09 Revital Eres <eres@il.ibm.com>
2524 * doc/contrib.texi: Add myself.
2526 2007-09-09 Ira Rosen <irar@il.ibm.com>
2528 * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
2529 stmt_vinfo_set_outside_of_loop_cost): New functions.
2530 * tree-vect-transform.c (vect_get_cost_fields): Remove.
2531 (vect_model_simple_cost): Call
2532 stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
2533 field instead of calling vect_get_cost_fields.
2534 (vect_model_store_cost, vect_model_load_cost): Likewise.
2536 2007-09-09 Revital Eres <eres@il.ibm.com>
2538 * config/rs6000/rs6000.c (paired_init_builtins): Add const
2539 declaration to bdesc_paired_preds variable.
2540 (paired_expand_builtin): Likewise.
2542 2007-09-09 Revital Eres <eres@il.ibm.com>
2544 * dbgcnt.def (sms_sched_loop): New counter.
2545 * modulo-sched.c: Use sms_sched_loop instead of
2546 MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
2547 perform swing modulo scheduling on. Include dbgcnt.h.
2548 * Makefile.in: Add DBGCNT_H to modulo-sched.o.
2549 * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
2551 2007-09-09 Uros Bizjak <ubizjak@gmail.com>
2553 * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
2554 Substitute all uses with ...
2555 (MODEF): New mode iterator.
2557 (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
2558 from pre-regalloc define_insn_and_split splitter pattern.
2559 (*fix_trunc<mode>_i387_1): Ditto.
2560 (*fistdi2_1): Ditto.
2561 (*fist<mode>2_1): Ditto.
2562 (frndintxf2_floor): Ditto.
2563 (*fist<mode>2_floor_1): Ditto.
2564 (frndintxf2_ceil): Ditto.
2565 (*fist<mode>2_ceil_1): Ditto.
2566 (frndintxf2_trunc): Ditto.
2567 (frndintxf2_mask_pm): Ditto.
2569 (prologue): Use (const_int 0) as never generated filler insn.
2571 (sibcall_epilogue): Ditto.
2572 (eh_return_si): Ditto.
2573 (eh_return_di): Ditto.
2575 (add<mode>3): Rename from adddf3 and addsf3. Macroize expander
2576 using MODEF mode iterator.
2577 (sub<mode>3): Rename from subdf3 and subsf3. Macroize expander
2578 using MODEF mode iterator.
2579 (mul<mode>3): Rename from muldf3 and mulsf3. Macroize expander
2580 using MODEF mode iterator.
2581 (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
2582 Macroize expander using MODEF mode iterator.
2584 (zero_extendsidi2): Remove operand constraints from expander.
2585 (smuldi3_highpart): Ditto.
2586 (indirect_jump): Ditto.
2589 * config/i386/sse.md (storentv4sf): Ditto.
2590 (storentv2df): Ditto.
2591 (storentv2di): Ditto.
2593 (sse2_cvtpd2ps): Ditto.
2594 (vec_interleave_highv16qi): Ditto.
2595 (vec_interleave_lowv16qi): Ditto.
2596 (vec_interleave_highv8hi): Ditto.
2597 (vec_interleave_lowv8hi): Ditto.
2598 (vec_interleave_highv4si): Ditto.
2599 (vec_interleave_lowv4si): Ditto.
2600 (vec_interleave_highv2di): Ditto.
2601 (vec_interleave_lowv2di): Ditto.
2602 (sse2_maskmovdqu): Ditto.
2603 * config/i386/mmx.md (mmx_maskmovq): Ditto.
2605 2007-09-09 Ira Rosen <irar@il.ibm.com>
2607 * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
2608 (struct _slp_tree, struct _slp_instance): Define new data structures
2609 along macros for their access.
2610 (struct _loop_vec_info): Define new fields: strided_stores,
2611 slp_instances, and slp_unrolling_factor along macros for their access.
2612 (enum slp_vect_type): New.
2613 (struct _stmt_vec_info): Define new field, slp_type, and macros for
2615 (STMT_VINFO_STRIDED_ACCESS): New macro.
2616 (vect_free_slp_tree): Declare.
2617 (vectorizable_load): Add an argument of type slp_tree.
2618 (vectorizable_store, vectorizable_operation, vectorizable_conversion,
2619 vectorizable_assignment): Likewise.
2620 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
2621 Declare (make extern).
2622 * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
2623 (new_loop_vec_info): Likewise.
2624 (destroy_loop_vec_info): Free memory allocated for SLP structures.
2625 * tree-vect-analyze.c: Include recog.h.
2626 (vect_update_slp_costs_according_to_vf): New.
2627 (vect_analyze_operations): Add argument for calls to vectorizable_ ()
2628 functions. For not pure SLP stmts with strided access check that the
2629 group size is power of 2. Update the vectorization factor according to
2630 SLP. Call vect_update_slp_costs_according_to_vf.
2631 (vect_analyze_group_access): New.
2632 (vect_analyze_data_ref_access): Call vect_analyze_group_access.
2633 (vect_free_slp_tree): New functions.
2634 (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
2635 vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
2636 vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
2637 vect_detect_hybrid_slp): Likewise.
2638 (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
2639 and vect_detect_hybrid_slp.
2640 * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
2641 SLP costs into account.
2642 (vect_get_cost_fields): New function.
2643 (vect_model_simple_cost): Make extern, add SLP parameter and handle
2645 (vect_model_store_cost, vect_model_load_cost): Likewise.
2646 (vect_get_constant_vectors): New function.
2647 (vect_get_slp_vect_defs, vect_get_slp_defs,
2648 vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
2649 vect_get_vec_defs): Likewise.
2650 (vectorizable_reduction): Don't handle SLP for now.
2651 (vectorizable_call): Don't handle SLP for now. Add argument to
2652 vect_model_simple_cost.
2653 (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
2654 get SLPed and vectorized defs). Fix indentation and spacing.
2655 (vectorizable_assignment): Handle SLP.
2656 (vectorizable_induction): Don't handle SLP for now.
2657 (vectorizable_operation): Likewise.
2658 (vectorizable_type_demotion): Add argument to
2659 vect_model_simple_cost.
2660 (vectorizable_type_promotion): Likewise.
2661 (vectorizable_store, vectorizable_load): Handle SLP.
2662 (vectorizable_condition): Don't handle SLP for now.
2663 (vect_transform_stmt): Add a new argument for SLP. Check that there is
2664 no SLP transformation required for unsupported cases. Add SLP
2665 argument for supported cases.
2666 (vect_remove_stores): New function.
2667 (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
2668 (vect_transform_loop): Schedule SLP instances.
2669 * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
2671 2007-09-09 Andrew Haley <aph@redhat.com>
2673 * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
2676 2007-09-09 Hans-Peter Nilsson <hp@axis.com>
2678 Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
2679 * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
2680 Similar for what label_refs can go in the JUMP_TARGET field. Split
2681 REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
2682 * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
2683 REG_LABEL when replacing an operand with a LABEL_REF for a
2685 (subst_reloads): When replacing a LABEL_REG with a register,
2686 instead of generating a REG_LABEL note, assert that there already
2687 is one or that the label is a known target for the insn.
2688 * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
2689 note, check the JUMP_LABEL field. Remove "else" after return.
2690 * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
2691 cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
2692 (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
2693 REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
2694 insns. Iterate over all notes; don't assume there's only one.
2695 * cse.c (recorded_label_ref): Adjust comment to refer to
2697 (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
2698 insns, not just NONJUMP_INSN_P.
2699 (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
2700 isn't a jump target.
2701 * jump.c (rebuild_jump_labels): Adjust head comment.
2702 (init_label_info): Ditto. Remove REG_LABEL_OPERAND notes only;
2703 don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
2704 (mark_all_labels): For JUMP_P insns without a target, check if the
2705 the target is noted on the previous nonjump insn.
2706 (mark_jump_label_1): New function, guts from mark_jump_label.
2707 <case IF_THEN_ELSE>: Handle first operand as a non-target when
2708 marking jump target labels.
2709 <case LABEL_REF>: Adjust for whether to generate a
2710 REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
2711 For 'E' format rtl, iterate in descending element order.
2712 (delete_related_insns): Handle both REG_LABEL_TARGET and
2713 REG_LABEL_OPERAND notes. For JUMP_P insns with labels with zero
2714 reference count, delete and fallthrough. Move finding-next-
2715 non-deleted insn last in the function. Look at all INSN_P insns
2716 for REG_LABEL_OPERAND notes.
2717 (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
2719 * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
2720 JUMP_LABEL, output the INSN_UID of it.
2721 * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
2722 and/or REG_LABEL_TARGET.
2723 (add_label_notes): Only add REG_LABEL_OPERAND notes. Put in line
2724 with jump.c copy by only adding notes for labels actually
2725 referenced in the insn.
2726 * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
2727 usage count increment; handle all INSN_P trial insns.
2728 (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
2730 * rtl.h (struct rtx_def) <volatil>: Adjust to mention
2731 REG_LABEL_TARGET and REG_LABEL_OPERAND.
2732 (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
2734 * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
2735 JUMP_P insns and REG_LABEL_OPERAND everywhere.
2736 * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
2737 on all INSN_P insns.
2738 * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
2739 * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
2740 REG_LABEL_OPERAND notes.
2741 * reload1.c (calculate_needs_all_insns): Adjust comments.
2742 (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
2743 * config/alpha/alpha.md (split for load of an address into a
2744 four-insn sequence on Unicos/Mk): Adjust to use
2746 * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
2748 2007-09-09 Laurynas Biveinis <laurynas.biveinis@gmail.com>
2751 2007-09-05 Laurynas Biveinis <laurynas.biveinis@gmail.com>
2752 * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
2753 FOR_BB_INSNS_SAFE instead of for loop.
2754 * cse.c (cse_extended_basic_block): Likewise.
2755 * postreload.c (reload_cse_regs_1): New variable next. Make sure
2756 that the for loop does not invoke NEXT_INSN on a deleted insn.
2757 * function.c (instantiate_virtual_regs): Likewise.
2758 * lower-subreg.c (remove_retval_note): Likewise.
2759 (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
2761 * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
2763 * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
2764 insn, if it's a jump.
2765 (try_redirect_by_replacing_jump): New variable jump_p. Call
2766 tablejump_p before delete_insn_chain.
2767 * reload1.c (reload): New variable next. Make sure that the for
2768 loop does not invoke NEXT_INSN on a deleted insn.
2769 (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
2770 (delete_output_reload): New variable prev. Make sure the the for
2771 loops do not invoke PREV_INSN on a deleted insn.
2773 2007-09-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2775 * pa/constraints.md: Remove 'X' from unused letters comment.
2777 2007-09-08 Richard Guenther <rguenther@suse.de>
2779 * tree-tailcall.c (find_tail_calls): If we don't have aliases
2780 computed check stmt_ann->references_memory instead of counting
2783 2007-09-08 Segher Boessenkool <segher@kernel.crashing.org>
2785 * cse.c (fold_rtx): Use validate_unshare_change() instead of
2786 validate_change() in one more case.
2788 2007-09-08 Zdenek Dvorak <ook@ucw.cz>
2790 PR tree-optimization/32283
2791 * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
2792 estimated_loop_iterations.
2793 (determine_use_iv_cost_condition): Decrease cost of expressions
2794 used in iv elimination.
2796 2007-09-08 Richard Guenther <rguenther@suse.de>
2798 * tree-cfg.c (verify_gimple_expr): Avoid building new
2799 pointer types, use TYPE_POINTER_TO if available instead.
2801 2007-09-08 Uros Bizjak <ubizjak@gmail.com>
2804 PR rtl-optimization/26449
2805 * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
2806 (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
2808 (mulv16qi3): Implement as define_insn_and_split pattern instead of
2809 define_expand. Split insn in split1 pass.
2812 2007-09-08 Dorit Nuzman <dorit@il.ibm.com>
2814 PR tree-optimization/33301
2815 * tree-vect-analyze (analyze_operations): Look at the type of the rhs
2818 2007-09-07 Zdenek Dvorak <ook@ucw.cz>
2820 PR tree-optimization/32183
2821 * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
2823 * tree-ssa-reassoc.c: Include cfgloop.h.
2824 (is_reassociable_op): Add a loop argument and return true only
2826 (linearize_expr): Updated.
2827 (should_break_up_subtract): Likewise.
2828 (linearize_expr_tree): Likewise.
2829 (init_reassoc): Call loop_optimizer_init with
2830 AVOID_CFG_MODIFICATIONS. Remove calculate_dominance_info call
2831 with CDI_DOMINATORS.
2832 (fini_reassoc): Call loop_optimizer_finalize.
2834 2007-09-07 Sterling Augustine <sterling@tensilica.com>
2836 * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
2837 if there is no i-cache.
2839 2007-09-07 Richard Guenther <rguenther@suse.de>
2842 2007-09-06 Richard Guenther <rguenther@suse.de>
2844 PR tree-optimization/32586
2845 * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
2846 folding if nothing changed.
2847 (simplify_unary_expression): New function. Do tree combining
2848 on conversion like codes.
2849 (try_to_simplify): Call it.
2851 2007-09-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2854 * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
2855 (__gthread_active,__gthread_start, __gthread_active_init): New.
2856 * gthr-posix95.h: Likewise.
2858 2007-09-07 Roman Zippel <zippel@linux-m68k.org>
2860 * function.h (struct function): Rename calls_unwind_init
2861 to saves_all_registers.
2862 (current_function_saves_all_registers): Renamed from
2863 current_function_calls_unwind_init.
2864 * reload1.c (reload): Set current_function_saves_all_registers.
2865 * except.c (expand_builtin_unwind_init): Likewise.
2866 * config/m68k/m68k.c (m68k_save_reg): Use
2867 current_function_saves_all_registers to save pic register.
2869 2007-09-07 Janis Johnson <janis187@us.ibm.com>
2871 config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
2872 config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
2874 Reapply reverted changes:
2876 2007-09-06 Jan Hubicka <jh@suse.cz>
2878 * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
2881 2007-09-06 Richard Sandiford <richard@codesourcery.com>
2883 * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
2884 (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
2886 2007-09-05 Janis Johnson <janis187@us.ibm.com>
2888 * optabs.c (expand_float): Convert unsigned integer as signed only
2889 if it provides sufficient accuracy; add mode argument to real_2expN.
2890 (expand_fix): Fix comment typos; extend binary float into mode
2891 wider than destination for converion to unsigned integer; add mode
2892 argument to real_2expN.
2893 * real.c (real_2expN): Add mode argument to special-case decimal
2895 * real.h (real_2expN): Ditto.
2896 * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
2898 (fixed_from_string): Ditto.
2899 (fixed_to_decimal): Ditto.
2900 (fixed_convert_from_real): Ditto.
2901 (real_convert_from_fixed): Ditto.
2902 * config/rs6000/rs6000.md (FP): Include DD and TD modes.
2903 * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
2904 muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
2905 floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
2907 2007-09-07 Diego Novillo <dnovillo@google.com>
2909 * tree-flow.h (const_block_stmt_iterator): Remove.
2910 Update all users to use block_stmt_iterator.
2911 * tree-iterator.h (const_tree_stmt_iterator): Remove.
2912 Update all users to use tree_stmt_iterator.
2914 2007-09-07 Sandra Loosemore <sandra@codesourcery.com>
2916 * config/mips/mips.c (mips_set_current_function): Temporarily
2917 make this a no-op to fix bootstrap errors, pending rewrite.
2919 2007-09-07 Jan Hubicka <jh@suse.cz>
2921 * reorg.c (dbr_schedule): Move code removing placeholder USEs later
2924 2007-09-07 Dorit Nuzman <dorit@il.ibm.com>
2926 PR tree-optimization/33299
2927 * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
2928 uses for all relevant loop-exit phis, not just the first.
2930 2007-09-07 Richard Guenther <rguenther@suse.de>
2933 * tree-ssa-operands.c (access_can_touch_variable): An access
2934 of the form (*p)[0] can touch a variable of same size.
2936 2007-09-07 Jan Hubicka <jh@suse.cz>
2938 * passes.c (init_optimization_passes): Add simple dce and addressable
2940 * tree-ssa.c (execute_update_addresses_taken): New function.
2941 (pass_update_address_taken): New.
2942 * tree-ssa-dse.c (execute_simple_dse): New function.
2943 (pass_simple_dse): New.
2944 * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
2946 2007-09-07 Tobias Burnus <burnus@net-b.de>
2949 * doc/invoke.texi: Fix -Wstrict-overflow= table.
2951 2007-09-07 Richard Guenther <rguenther@suse.de>
2954 2007-09-06 Richard Guenther <rguenther@suse.de>
2956 PR tree-optimization/32586
2957 * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
2958 folding if nothing changed.
2959 (simplify_unary_expression): New function. Do tree combining
2960 on conversion like codes.
2961 (try_to_simplify): Call it.
2963 2007-09-07 Richard Guenther <rguenther@suse.de>
2964 Uros Bizjak <ubizjak@gmail.com>
2966 PR tree-optimization/32821
2967 * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
2968 NULL in the call to set_bb_stmt_list.
2970 2007-09-07 Richard Sandiford <richard@codesourcery.com>
2972 * config/mips/mips.c (build_mips16_call_stub): Emit all direct
2973 float calls here, rather than leaving some to the caller.
2974 Use call_internal_direct and call_value_internal_direct.
2975 * config/mips/mips.md (call_internal_direct): New pattern.
2976 (call_value_internal_direct): Likewise.
2978 2007-09-07 Richard Sandiford <richard@codesourcery.com>
2980 * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
2981 (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
2983 (override_options): Set mips_base_move_loop_invariants.
2985 2007-09-07 Richard Sandiford <richard@codesourcery.com>
2987 * config/mips/mips.opt (mcode-readable=): Move to keep list
2990 2007-09-07 Richard Sandiford <richard@codesourcery.com>
2992 * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
2993 and -mgpopt options. Adjust the -G documentation to match.
2994 * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
2995 * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
2996 function, split out from mips_classify_symbol. Return false for
2997 !TARGET_LOCAL_SDATA.
2998 (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
2999 Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
3000 (override_options): Check whether the -mgpopt setting is consistent
3001 with the other flags.
3002 (symbolic_expression_p): Delete.
3003 (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
3004 and default_elf_select_rtx_section.
3005 (mips_in_small_data_p): Honor section attributes for MIPS16 too.
3006 Return false for local data unless TARGET_LOCAL_SDATA. Likewise
3007 external data and TARGET_EXTERN_SDATA.
3009 2007-09-07 Tobias Burnus <burnus@net-b.de>
3012 * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
3014 2007-09-05 Laurynas Biveinis <laurynas.biveinis@gmail.com>
3016 * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3017 FOR_BB_INSNS_SAFE instead of for loop.
3018 * cse.c (cse_extended_basic_block): Likewise.
3019 * postreload.c (reload_cse_regs_1): New variable next. Make sure
3020 that the for loop does not invoke NEXT_INSN on a deleted insn.
3021 * function.c (instantiate_virtual_regs): Likewise.
3022 * lower-subreg.c (remove_retval_note): Likewise.
3023 (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3025 * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3027 * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3028 insn, if it's a jump.
3029 (try_redirect_by_replacing_jump): New variable jump_p. Call
3030 tablejump_p before delete_insn_chain.
3031 * reload1.c (reload): New variable next. Make sure that the for
3032 loop does not invoke NEXT_INSN on a deleted insn.
3033 (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3034 (delete_output_reload): New variable prev. Make sure the the for
3035 loops do not invoke PREV_INSN on a deleted insn.
3037 2007-09-06 Zdenek Dvorak <ook@ucw.cz>
3039 * cgraphbuild.c (rebuild_cgraph_edges): Export.
3040 * cgraph.h (rebuild_cgraph_edges): Declare.
3041 * tree-pass.h (pass_expand_omp_ssa): New.
3042 * omp-low.c (find_omp_clause): Export.
3043 (copy_var_decl): Split from omp_copy_decl_2.
3044 (build_omp_barrier): Return the call to emit instead of emitting
3046 (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
3048 (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
3049 expand_omp_for_generic, expand_omp_for_static_nochunk,
3050 expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3051 Adapted to work on SSA form.
3052 (execute_expand_omp): Do not invalidate dominance information.
3053 (gate_expand_omp): Do not run with -fopenmp-ssa flag.
3054 (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
3055 * gimplify.c (gimplify_omp_for): Ensure that the control variable is
3057 (force_gimple_operand): Allow gimplifying code expressions without
3059 * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
3060 * common.opt (fopenmp-ssa): New.
3061 * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
3062 * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
3063 * tree-cfg.c: Include tree-inline.h.
3064 (struct move_stmt_d): Replace vars_to_remove by vars_map field.
3065 (replace_by_duplicate_decl, replace_ssa_name,
3066 mark_virtual_ops_in_region): New functions.
3067 (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
3068 to work on SSA form.
3069 * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
3070 * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
3073 2007-09-06 Laurynas Biveinis <laurynas.biveinis@gmail.com>
3075 * tree-loop-linear.c: Include obstack.h.
3076 (linear_transform_loops): New obstack lambda_obstack.
3077 Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
3078 lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
3079 and free afterwards.
3080 * lambda.h (struct obstack): New forward declaration.
3081 (lambda_linear_expression_new): New parameter of type struct
3083 (lambda_loopnest_new): Likewise.
3084 (lambda_loopnest_transform): Likewise.
3085 (lambda_body_vector_new): Likewise.
3086 (lambda_body_vector_compute_new): Likewise.
3087 (gcc_loopnest_to_lambda_loopnest): Likewise.
3088 (lambda_loopnest_to_gcc_loopnest): Likewise.
3089 * lambda-code.c: Include obstack.h.
3090 (lambda_lattice_new): New parameter lambda_obstack. Use it for
3092 (lambda_body_vector_new): Likewise.
3093 (lambda_linear_expression_new): Likewise.
3094 (lambda_lattice_new): Likewise.
3095 (lambda_loopnest_new): Likewise. Additionally use obstack to
3096 allocate LN_LOOPS(ret).
3097 (lambda_lattice_compute_base): New parameter lambda_obstack. Pass
3098 it to lambda_lattice_new.
3099 (lambda_body_vector_compute_new): New parameter lambda_obstack.
3100 Pass it to lambda_body_vector_new.
3101 (lambda_lattice_compute_base): New paramater lambda_obstack. Pass
3102 it to lambda_lattice_new.
3103 (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
3104 Pass it to lambda_loopnest_new, lambda_linear_expression_new.
3105 (lambda_compute_target_space): Likewise.
3106 (lambda_compute_auxillary_space): New parameter lambda_obstack.
3107 Pass it to lambda_lattice_compute_base and
3108 compute_nest_using_fourieer_motzkin.
3109 (lambda_loopnest_transform): New parameter lambda_obstack. Pass
3110 it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
3111 and lambda_lattice_compute_target_space.
3112 (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
3113 Pass it to lambda_linear_expression_new.
3114 (gcc_loop_to_lambda_loop): New parameter lambda_obstack. Pass it
3115 to gcc_tree_to_linear_expression.
3116 (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
3117 Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
3118 (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
3119 Pass it to lambda_body_vector_new and
3120 lambda_body_vector_compute_new.
3121 * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
3122 (lambda-code.o): Likewise.
3124 2007-09-06 Chao-ying Fu <fu@mips.com>
3126 * ginclude/stdfix.h: New file.
3127 * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
3128 (convert.o): Add dependence on fixed-value.h.
3129 * c-convert.c (convert): Support FIXED_POINT_TYPE.
3130 * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
3131 to define fixed-point constants.
3132 (c_cpp_builtins): Define fixed-point constants.
3133 * convert.c (fixed-value.h): New include.
3134 (convert_to_real): Update comment to include fixed-point.
3135 Support FIXED_POINT_TYPE.
3136 (convert_to_integer): Update comment to include fixed-point.
3137 Support FIXED_POINT_TYPE.
3138 (convert_to_complex): Support FIXED_POINT_TYPE.
3139 (convert_to_fixed): New function.
3140 * convert.h (convert_to_fixed): Declare.
3141 * genopinit.c: Add comment about $Q for only fixed-point modes.
3142 (optabs): Add fract_optab, fractuns_optab, satfract_optab,
3143 satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
3144 sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
3145 ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
3146 usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
3147 usneg_optab for fixed-point modes.
3148 (gen_insn): Add force_fixed to track the $Q format for all fixed-point
3150 * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
3151 PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
3152 unsigned saturation optabs, when type is saturating.
3153 (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
3154 (expand_fixed_convert): New function.
3155 (gen_fixed_libfunc, gen_signed_fixed_libfunc,
3156 gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
3157 gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
3158 gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
3159 gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
3160 gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
3162 (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
3163 ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
3164 usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
3165 ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
3166 usneg_optab, fract_optab, fractuns_optab, satfract_optab,
3168 Initialize fixed-point libraries, including add, ssadd, usadd, sub,
3169 sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
3170 ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
3171 fractuns, satfractuns.
3172 * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
3173 OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
3174 OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
3175 OTI_ssmsub_widen, OTI_usmsub_widen.
3176 (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
3177 usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
3178 ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
3179 umsub_widen_optab, usmsub_widen_optab): Define.
3180 (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
3182 (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
3184 (expand_fixed_convert): Declare.
3185 * expr.c (convert_move): Support the move of fixed-point modes.
3186 (emit_move_insn_1): Handle fixed-point mode to move via integer.
3187 (categorize_ctor_elements_1): Handle FIXED_CST.
3188 (count_type_elements): Handle FIXED_POINT_TYPE.
3189 (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
3190 MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3192 For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
3193 multiply and add/subtract for fixed-point types.
3194 For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
3195 mode, we jump to binop directly.
3196 Support FIXED_CONVERT_EXPR.
3197 (do_store_flag): Check FIXED_CST to put a constant second.
3198 (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
3199 MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3200 (const_vector_from_tree): Support FIXED_CST.
3201 * doc/extend.texi (Fixed-Point): New node.
3202 * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
3203 ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
3204 satfract, fractuns, satfractuns): Document them.
3206 2007-09-07 Bernd Schmidt <bernd.schmidt@analog.com>
3208 * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
3209 addresses into I registers.
3211 2007-09-06 Jan Hubicka <jh@suse.cz>
3212 Andreas Tobler <a.tobler@schweiz.org>
3214 * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
3216 (machopic_legitimize_pic_address): Likewise.
3218 2007-09-06 Andrew Pinski <andrew_pinski@playstation.sony.com>
3219 Jan Hubicka <jh@suse.cz>
3221 * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
3222 instead of ufloat_optab->handlers directly.
3223 (floatdidf2): Likewise.
3225 2007-09-06 Sandra Loosemore <sandra@codesourcery.com>
3227 * config/mips/mips.c: Include diagnostic.h.
3228 (mips_set_current_function): Check errorcount and sorrycount
3229 before generating RTL.
3231 2007-09-06 Richard Sandiford <richard@codesourcery.com>
3234 * config/mips/mips.c (mips_classify_symbolic_expression): New function.
3235 (mips_classify_address): Use it instead of mips_symbolic_constant_p.
3236 (print_operand_reloc): Likewise.
3238 2007-09-06 Janis Johnson <janis187@us.ibm.com>
3242 2007-09-06 Jan Hubicka <jh@suse.cz>
3244 * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
3247 2007-09-06 Richard Sandiford <richard@codesourcery.com>
3249 * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3250 (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3252 2007-09-05 Janis Johnson <janis187@us.ibm.com>
3254 * optabs.c (expand_float): Convert unsigned integer as signed only
3255 if it provides sufficient accuracy; add mode argument to real_2expN.
3256 (expand_fix): Fix comment typos; extend binary float into mode
3257 wider than destination for converion to unsigned integer; add mode
3258 argument to real_2expN.
3259 * real.c (real_2expN): Add mode argument to special-case decimal
3261 * real.h (real_2expN): Ditto.
3262 * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3264 (fixed_from_string): Ditto.
3265 (fixed_to_decimal): Ditto.
3266 (fixed_convert_from_real): Ditto.
3267 (real_convert_from_fixed): Ditto.
3268 * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3269 * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3270 muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3271 floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3273 2007-09-06 Tom Tromey <tromey@redhat.com>
3275 * tree-cfg.c (remove_bb): Only warn if line is non-zero.
3276 * c-pch.c (c_common_read_pch): Restore current location after
3278 * tree.c (expand_location): Update.
3279 (expr_filename): Changed return type. Unified the two cases.
3280 (expr_lineno): Likewise.
3281 (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
3283 * toplev.c (line_table): Changed type.
3284 (general_init): Update.
3285 (realloc_for_line_map): New function.
3286 (general_init): Allocate line_table using GC.
3287 * fix-header.c (line_table): Changed type.
3288 (read_scan_file): Update.
3289 (read_scan_file): Update.
3290 * c-ppoutput.c (maybe_print_line): Update.
3291 (print_line): Update.
3292 (cb_line_change): Update.
3293 (cb_define): Update.
3294 (pp_file_change): Update.
3295 * c-opts.c (c_common_init_options): Update.
3296 (finish_options): Update.
3297 (push_command_line_include): Update.
3298 * c-lex.c (cb_line_change): Update.
3299 (cb_def_pragma): Update.
3300 (cb_define): Update.
3302 (c_lex_with_flags): Use cpp_get_token_with_location.
3303 * input.h (line_table): Changed type.
3304 (location_from_locus): New macro.
3305 * tree.h (EXPR_FILENAME): No longer an lvalue.
3306 (EXPR_LINENO): Likewise.
3307 (expr_locus, set_expr_locus): Declare separately for
3308 USE_MAPPED_LOCATION.
3309 (expr_filename, expr_lineno): Changed return type.
3310 * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
3311 * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
3312 (expand_gimple_basic_block): Likewise.
3313 * final.c (final_scan_insn): Use expanded_location.
3315 2007-09-06 Richard Guenther <rguenther@suse.de>
3317 PR tree-optimization/32586
3318 * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3319 folding if nothing changed.
3320 (simplify_unary_expression): New function. Do tree combining
3321 on conversion like codes.
3322 (try_to_simplify): Call it.
3323 * builtins.c (fold_builtin_cexp): Fold the built expressions.
3324 * fold-const.c (fold_unary): Test result of get_callee_fndecl().
3326 2007-09-06 Jan Hubicka <jh@suse.cz>
3329 * cse.c (fold_rtx): Avoid invalid sharing.
3331 2007-09-06 Richard Sandiford <richard@codesourcery.com>
3333 * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3334 (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3336 2007-09-06 Revital Eres <eres@il.ibm.com>
3338 * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
3339 Fix offsettable memory reference for 750CL.
3341 2007-09-06 Pat Haugen <pthaugen@us.ibm.com>
3343 * reload.c (find_reloads_address_1): Try to preserve original
3344 base/index regclass of operands.
3345 * regrename.c (scan_rtx_address): Likewise.
3346 (replace_oldest_value_addr): Likewise.
3348 2007-09-06 Richard Guenther <rguenther@suse.de>
3350 PR tree-optimization/33302
3351 * domwalk.c (walk_dominator_tree): The exit block is
3352 interesting even if it is not reachable.
3354 2007-09-06 Richard Sandiford <richard@codesourcery.com>
3357 * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
3359 2007-09-06 Basile Starynkevitch <basile@starynkevitch.net>
3361 * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for
3364 2007-09-05 Ian Lance Taylor <iant@google.com>
3366 * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
3368 (dump_generic_node): Likewise.
3369 * print-rtl.c (print_decl_name): Likewise.
3370 * print-tree.c (print_node_brief): Likewise.
3371 (print_node): Likewise.
3372 * Makefile.in (RTL_BASE_H): Add alias.h.
3375 2007-09-06 Jesper Nilsson <jesper.nilsson@axis.com>
3377 * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
3379 * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
3380 * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
3382 2007-09-06 Jie Zhang <jie.zhang@analog.com>
3384 * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
3385 (tm_defines): Define UCLIBC_DEFAULT to 1.
3386 (extra_options): Add linux.opt.
3387 * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
3388 (CRT_CALL_STATIC_FUNCTION): Likewise.
3389 (NO_IMPLICIT_EXTERN_C): Likewise.
3390 (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
3391 * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
3392 * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
3393 (ENDFILE_SPEC): Don't define.
3394 (LIB_SPEC): Likewise.
3395 (CRT_CALL_STATIC_FUNCTION): Likewise.
3396 (NO_IMPLICIT_EXTERN_C): Likewise.
3397 (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
3398 (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
3400 2007-09-06 Jan Hubicka <jh@suse.cz>
3402 * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
3405 2007-09-06 Jan Hubicka <jh@suse.cz>
3407 * opts.c (common_handle_option): Enable inlining functions for
3410 2007-09-06 Jakub Jelinek <jakub@redhat.com>
3412 * builtin-attrs.def (ATTR_NONNULL_3): New.
3413 (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
3414 ATTR_NOTHROW_NONNULL_##FA.
3415 (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
3416 (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
3417 ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
3418 ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
3419 ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
3420 ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
3421 ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
3423 (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
3424 ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
3425 ATTR_FORMAT_NOTHROW_3_4): Remove.
3426 * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
3427 vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
3428 __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
3429 instead of ATTR_FORMAT_*_*.
3431 2007-09-06 Hans-Peter Nilsson <hp@axis.com>
3433 * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
3434 parts re-used for REG_FRAME_RELATED_EXPR.
3436 2007-09-05 Janis Johnson <janis187@us.ibm.com>
3438 * optabs.c (expand_float): Convert unsigned integer as signed only
3439 if it provides sufficient accuracy; add mode argument to real_2expN.
3440 (expand_fix): Fix comment typos; extend binary float into mode
3441 wider than destination for converion to unsigned integer; add mode
3442 argument to real_2expN.
3443 * real.c (real_2expN): Add mode argument to special-case decimal
3445 * real.h (real_2expN): Ditto.
3446 * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3448 (fixed_from_string): Ditto.
3449 (fixed_to_decimal): Ditto.
3450 (fixed_convert_from_real): Ditto.
3451 (real_convert_from_fixed): Ditto.
3452 * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3453 * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3454 muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3455 floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3457 2007-09-05 Ian Lance Taylor <iant@google.com>
3459 * init-regs.c (initialize_uninitialized_regs): Call
3460 emit_insn_before rather than add_insn_before.
3462 2007-09-05 Jakub Jelinek <jakub@redhat.com>
3464 * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
3465 * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
3466 * tree-inline.h (copy_body_data): Add call_expr field.
3467 * tree-inline.c (expand_call_inline): Initialize call_expr.
3468 (copy_bb): Append anonymous inline fn arguments to arguments
3469 when inlining a CALL_EXPR_VA_ARG_PACK call.
3470 * builtins.c (expand_builtin): Issue an error if
3471 BUILT_IN_VA_ARG_PACK is seen during expand.
3472 (fold_call_expr, fold_builtin_call_array): Don't fold
3473 CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
3474 __builtin_va_arg_pack () call as last argument.
3475 * gimplify.c (gimplify_call_expr): If last argument to a vararg
3476 function is __builtin_va_arg_pack (), decrease number of call
3477 arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
3478 * expr.c (expand_expr_real_1): Issue an error if
3479 CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
3480 * tree-pretty-print.c (dump_generic_node): Handle printing
3481 CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
3482 * doc/extend.texi (__builtin_va_arg_pack): Document.
3484 2007-09-05 Adam Nemet <anemet@caviumnetworks.com>
3486 PR tree-optimization/21513
3487 * builtins.c (build_builtin_expect_predicate): New function.
3488 (fold_builtin_expect): Add argument for expected value.
3489 Distribute __builtin_expect over short-circuiting operations.
3490 Fold nested builtin_expects.
3491 (fold_builtin_2): Adjust call to fold_builtin_expect.
3493 2007-09-05 Rask Ingemann Lambertsen <rask@sygehus.dk>
3496 PR tree-optimization/13756
3497 * doc/invoke.texi (Options That Control Optimization): Document
3500 2007-09-05 Uros Bizjak <ubizjak@gmail.com>
3502 * gcc/config/i386/cpuid.h: New file.
3503 * gcc/config/i386/driver-i386.c: Include cpuid.h.
3504 (describe_cache): Shrink size and line strings to 100 bytes.
3505 (detect_caches_amd): Return "" for unsupported max_ext_level.
3506 Use __cpuid function.
3507 (detect_caches_intel): Return "" for unsupported max_level.
3508 Use __cpuid function.
3509 (host_detect_local_cpu): Change feature flag variables to
3510 unsigned int. Initialize only extended feature flag variables.
3511 Use __get_cpuid_max to determine max supported cpuid level.
3512 Use __cpuid function to determine supported features. Fix
3513 calculation of family id. Remove is_amd and check signature
3514 directly. Check for Geode signature. Handle family 4 id.
3515 [PROCESSOR_GENERIC32]: New default for unknown family id. Move
3516 cpu discovery code to lower part of the function.
3517 [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
3518 for sub-architecture.
3519 [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
3520 [PROCESSOR_K8]: Add k8-sse3 architecture.
3521 [PROCESSOR_NOCONA]: Remove.
3522 [PROCESSOR_GENERIC64]: Ditto.
3523 * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
3524 * gcc/config/i386/crtfastmath.c: Include cpuid.h. Use __get_cpuid
3525 to check for SSE and FXSAVE support.
3526 * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
3527 Add -minline-all-stringops.
3528 * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
3529 (x86_64-*-*): Ditto.
3531 2007-09-05 Jie Zhang <jie.zhang@analog.com>
3533 * config/bfin/linux-unwind.h: New file.
3534 * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
3535 * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
3537 2007-09-05 Laurynas Biveinis <laurynas.biveinis@gmail.com>
3539 * Makefile.in (stmt.o): Add alloc-pool.h dependency.
3540 * stmt.c: Include alloc-pool.h.
3541 (struct case_node): Remove GTY marker.
3542 (add_case_node): New parameter case_node_pool. Use it for
3544 (expand_case): New allocation pool case_node_pool. Initialize it,
3545 pass to add_case_node and free it.
3547 2007-09-05 Sandra Loosemore <sandra@codesourcery.com>
3548 David Ung <davidu@mips.com>
3549 Nigel Stephens <nigel@mips.com>
3551 Add mips16/nomips16 function attributes and -mflip-mips16 option
3552 for testing mixed-mode compilation.
3554 * config/mips/mips.opt (mflip-mips16): New.
3556 * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
3557 (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
3559 * config/mips/mips.c (mips_base_target_flags): New.
3560 (mips_base_mips16): New.
3561 (mips_base_schedule_insns): New.
3562 (mips_base_reorder_blocks_and_partition): New.
3563 (mips_base_align_loops): New.
3564 (mips_base_align_jumps): New.
3565 (mips_base_align_functions): New.
3566 (mips16_flipper): New.
3567 (mips_attribute_table): Add "mips16" and "nomips16" entries.
3568 (TARGET_SET_CURRENT_FUNCTION): Define.
3569 (mips_mips16_type_p, mips_nomips16_type_p): New.
3570 (mips_comp_type_attributes): Check mips16/nomips16 attributes.
3571 (mips_function_ok_for_sibcall): Make it deal with functions with
3573 (mips_init_split_addresses): New, split out from override_options.
3574 (mips_init_relocs): New, split out from override_options.
3575 (was_mips16_p): New.
3576 (mips_set_mips16_mode): New, split out from override_options.
3577 (mips_set_current_function): New.
3578 (override_options): Add sorry for unsupported mips16/pic
3579 combination. Remove error for mips16/dsp combination. Save
3580 base option settings.
3581 (mips_file_start): Move mips16 mode setting output from here....
3582 (mips_output_function_prologue): ....to here.
3583 (mips_output_mi_thunk): Check for mips16 function.
3584 (build_mips16_function_stub): Don't set .mips16 here.
3585 (build_mips16_call_stub): Likewise.
3586 (mips_expand_builtin): Error in mips16 mode.
3587 (mips_use_mips16_mode_p): New.
3588 (mips_encode_section_info): Check for mips16 function, and set
3589 SYMBOL_REF_FLAGS accordingly.
3591 * doc/extend.texi (Function Attributes): Document new
3592 mips16/nomips16 attributes.
3593 * doc/invoke.texi (Option Summary): Add -mflip-mips16.
3594 (MIPS Options): Document -mflip-mips16.
3596 2007-09-05 Sandra Loosemore <sandra@codesourcery.com>
3598 * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
3599 if we encounter TLS address in MIPS16 mode.
3600 (mips_legitimize_const_move): Check cannot_force_const_mem for
3601 the (const (plus symbol offset)) case; this forces invalid TLS
3602 address in MIPS16 mode to be caught by the above call to sorry.
3603 (override_options): Don't reset targetm.have_tls in MIPS16 mode,
3604 because that now enables emutls, which is not ABI compatible
3605 with native TLS in non-MIPS16 mode.
3607 2007-09-05 Sandra Loosemore <sandra@codesourcery.com>
3609 Add target hook invoked when cfun changes.
3611 * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
3612 * target.h (struct gcc_target): Add set_current_function.
3613 * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
3614 (TARGET_INITIALIZER): Add initializer for set_current_function.
3615 * tree.h (push_struct_function): New.
3616 * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
3618 (set_cfun): Declare.
3619 * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
3621 (push_function_context_to): Use allocate_struct_function
3622 to create null context, not init_dummy_function_start. Use set_cfun.
3623 (pop_function_context_from): Use set_cfun.
3624 (in_dummy_function): New.
3625 (invoke_set_current_function_hook): New.
3627 (push_cfun, pop_cfun): Use set_cfun.
3628 (push_struct_function): New.
3629 (allocate_struct_function): Call invoke_set_current_function_hook
3631 (prepare_function_start): Don't set cfun here. Remove unused
3632 argument; fix all callers.
3633 (init_dummy_function_start): Fiddle with in_dummy_function. Call
3634 push_struct_function.
3635 (init_function_start): Set cfun here.
3636 (expand_dummy_function_end): Fiddle with in_dummy_function. Pop cfun.
3637 * omp-low.c (create_omp_child_function): Use push_struct_function
3638 and pop_cfun to save/restore state.
3639 (expand_omp_parallel): Remove unused saved_cfun variable.
3640 * cgraphunit.c (ipa_passes): Use set_cfun.
3641 * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
3642 * dwarf2out.c (dwarf2out_abstract_function): Likewise.
3643 * matrix-reorg.c (transform_allocation_sites): Likewise.
3644 (matrix_reorg): Use set_cfun.
3645 * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
3646 * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
3647 assignment to cfun; use set_cfun for the other.
3648 * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
3649 (dump_function_to_file): Use push_cfun/pop_cfun here.
3650 * c-decl.c (finish_function): Use set_cfun.
3652 2007-09-05 Kenneth Zadeck <zadeck@naturalbridge.com>
3654 * regrename.c (rerename_optimize): Use deferred rescanning and
3655 insert explicit calls to rescan insns when changed.
3657 2007-09-05 Jan Hubicka <jh@suse.cz>
3659 * optabs.c (libfunc_entry): Change optab to integer.
3660 (hash_libfunc, convert_optab_libfunc, optab_libfunc,
3661 set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
3662 of pointers for hashing.
3664 2007-09-05 Jan Hubicka <jh@suse.cz>
3666 * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
3668 * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
3669 * see.c (pass_see): Likewise.
3670 * tracer.c (pass_tracer): Likewise.
3671 * postreload-gcse.c (pass_gcse2): Likewise.
3672 * postreload.c (pass_postreload_cse): Likewise.
3673 * mode-switching.c (pass_mode_switching): Likewise.
3674 * modulo-sched.c (pass_sms): Likewise.
3675 * cse.c (cse_insn): Likewise.
3676 * web.c (pass_web): Likweise.
3677 * combine-stack-adj.c (pass_stack_adjustments): Likewise.
3678 * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
3679 * loop-init.c (pass_rtl_loop_init): Likewise.
3680 (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
3681 pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
3682 * global.c (pass_global_alloc): Likewise.
3683 * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
3684 pass_if_after_reload): Likewise.
3685 * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
3686 * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
3687 * regmove.c (pass_regmove): Likewise.
3688 * function.c (pass_thread_prologugues_epilogues): Likewise.
3689 * gcse.c (pass_gcse): Likewise.
3690 * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
3691 * lower-subreg.c (pass_lower_subreg2): Likewise.
3692 * bt-load.c (pass_branch_target_load): Likewise.
3693 * emit-rtl.c (pass_unshare_all_rtl): Likewise.
3694 * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
3695 * combine.c (pass_combine): Likewise.
3696 * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
3697 (pass_partition_blocks): Likewise.
3698 * var-tracking.c (pass_variable_track): Likewise.
3699 * reg-stack.c (pass_stack_regs_run): Likewise.
3700 * sched-rgn.c (pass_sched, pass_sched2): Likewise.
3701 * passes.c (pass_postreload): Likewise.
3702 (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
3703 * tree-pass.h (TODO_verify_rtl_sharing): New.
3704 (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
3705 TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
3706 TODO_set_props, TODO_df_finish, TODO_df_verify,
3707 TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
3709 2007-09-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3711 * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
3712 fold_real_zero_addition_p, reorder_operands_p,
3713 div_if_zero_remainder, fold_undefer_overflow_warnings,
3714 int_binop_types_match_p, fold_convert_const_int_from_int,
3715 fold_convert_const_int_from_real,
3716 fold_convert_const_int_from_fixed,
3717 fold_convert_const_real_from_real,
3718 fold_convert_const_real_from_fixed,
3719 fold_convert_const_fixed_from_fixed,
3720 fold_convert_const_fixed_from_int,
3721 fold_convert_const_fixed_from_real, maybe_lvalue_p,
3722 fold_checksum_tree, fold_check_failed, print_fold_checksum,
3723 debug_fold_checksum, multiple_of_p): Constify.
3724 * tree-flow-inline.h (get_lineno): Likewise.
3725 * tree-flow.h (get_lineno): Likewise.
3726 * tree-object-size.c (compute_object_offset, addr_object_size,
3727 alloc_object_size, pass_through_call): Likewise.
3728 * tree-pretty-print.c (op_symbol, print_call_name,
3729 print_struct_decl, do_niy): Likewise.
3730 * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
3731 debug_fold_checksum): Likewise.
3733 2007-09-04 Steven Bosscher <steven@gcc.gnu.org>
3736 * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
3737 note, remove the associated REG_RETVAL note.
3739 2007-09-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
3741 * config.gcc (powerpc*-*-*): Install
3742 spu2vmx.h, vec_types.h, and si2vmx.h headers.
3743 * config/rs6000/spu2vmx.h: New header.
3744 * config/rs6000/si2vmx.h: New header.
3745 * config/rs6000/vec_types.h: New header.
3747 2007-09-05 Ben Elliston <bje@au.ibm.com>
3749 * varasm.c (initializer_constant_valid_p): Fix comment typo.
3751 2007-09-05 Ben Elliston <bje@au.ibm.com>
3753 * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
3755 (__stdcx): Make asm volatile.
3756 (__stwcx, __stdcx): Return only 0 or 1.
3758 2007-09-05 Jan Hubicka <jh@suse.cz>
3762 2007-09-04 Jan Hubicka <jh@suse.cz>
3763 * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
3765 2007-09-04 Richard Guenther <rguenther@suse.de>
3766 * tree-ssa-operands.c (add_virtual_operand): Only mark
3767 stores as has_volatile_ops if alias information is not available.
3769 2007-09-05 Jakub Jelinek <jakub@redhat.com>
3771 * config/rs6000/tramp.asm: Include config.h.
3772 Check __PIC__ or __pic__ macro instead of SHARED.
3774 PR rtl-optimization/32300
3775 * see.c (see_copy_insn): New function.
3776 (see_def_extension_not_merged, see_merge_one_use_extension,
3777 see_merge_one_def_extension): Use it. Avoid changing
3778 PREV_INSN/NEXT_INSN chains directly, insted emit insns
3779 into sequences. Call df_insn_delete on temporary insns
3780 that won't be emitted into the insn stream.
3781 (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
3782 and run df_process_deferred_rescans () before run_fast_dce.
3784 PR tree-optimization/33017
3785 * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
3786 recurse for pure or const function calls.
3788 2007-09-04 Laurynas Biveinis <laurynas.biveinis@gmail.com>
3790 * c-format.c: Include alloc-pool.h.
3791 (check_format_info_main): New argument fwt_alloc. Use allocation
3792 pool instead of GC. Remove GC deallocation code.
3793 (check_format_arg): Create allocation pool, pass it to
3794 check_format_info_main and free it afterwards.
3795 * Makefile.in (c-format.o): Add alloc-pool.h dependency.
3797 2007-09-05 Ben Elliston <bje@au.ibm.com>
3799 * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
3800 Rename count macro arugment for clarity.
3801 (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
3802 (__protected_stream_set): Likewise, pass 0.
3804 2007-09-04 Jan Hubicka <jh@suse.cz>
3806 * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
3808 2007-09-04 Jan Hubicka <jh@suse.cz>
3810 * invoke.texi (-finline-small-functions): Document.
3811 * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
3812 when deciding what is inlinable.
3813 (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
3814 (cgraph_decide_inlining_of_small_function): Handle new flags.
3815 (cgraph_decide_inlining_incrementally): Likewise.
3816 * opts.c (decode_options): Enable flag_inline_small_functions at -O2
3817 * common.opt (finline-small-functions): New.
3818 * Makefile.in (build/gengtype.o-warn): Work around PR29478
3820 2007-09-04 Richard Guenther <rguenther@suse.de>
3822 * tree-ssa-operands.c (add_virtual_operand): Only mark
3823 stores as has_volatile_ops if alias information is not available.
3825 2007-09-04 Andrew Haley <aph@redhat.com>
3827 * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
3829 2007-09-04 Andrew Haley <aph@redhat.com>
3831 * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
3832 * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
3833 * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
3835 2007-09-04 Emmanuel Thome <Emmanuel.Thome@inria.fr>
3838 * common.opt: Mention ABI version 2 in comment.
3840 2007-09-04 Jan Hubicka <jh@suse.cz>
3842 * optabs.c (debug_optab_libfunc): Update; make available to gdb.
3843 (libfunc_entry): New structure.
3844 (libfunc_hash): New hashtable.
3845 (hash_libfunc): New function.
3846 (eq_libfunc): New function.
3847 (convert_optab_libfunc): New function.
3848 (optab_libfunc): New function.
3849 (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
3850 expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
3851 expand_float, expand_fix, new_optab, new_convert_optab):
3852 Update for new libfunc API.
3853 (init_libfunc, init_integral_libfuncs,
3854 init_floating_libfuncs, init_interclass_conv_libfuncs
3855 init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
3856 (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
3857 gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
3858 gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
3859 gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
3860 gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
3861 gen_extend_conv_libfunc): New.
3862 (init_one_libfunc): Revamp for hashtables.
3863 (set_conv_libfunc): Likewise.
3864 (init_optabs): Initialize hashtable; use lazy initialization where
3866 * optabs.h (optab_handlers): Move out of GGC.
3867 (optab, convert_optab): Move out of GGC; add lazy gen info.
3868 (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
3869 (optab_libfunc, convert_optab_libfunc): New.
3870 * builtins.c (expand_builtin_powi): Update for new API.
3871 * expr.c (convert_move): Likewise.
3872 * expmed.c (expand_divmod): Likewise.
3874 2007-09-04 Daniel Jacobowitz <dan@codesourcery.com>
3876 * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
3877 GOT pointer only if there is a constant pool. Use the allocated space
3880 2007-09-04 Daniel Jacobowitz <dan@codesourcery.com>
3882 * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
3885 2007-09-04 Revital Eres <eres@il.ibm.com>
3886 Richard Guenther <rguenther@suse.de>
3887 R. Clint Whaley <whaley@cs.utsa.edu>
3889 * doc/invoke.texi (-fassociative-math, -freciprocal-math):
3891 * tree-tailcall.c (process_assignment): Use -fassociative-math
3892 when reodering operands of floating-point type.
3893 * fold-const.c (fold_comparison, fold_binary): Use
3894 -fassociative-math and -freciprocal-math instead of
3895 -funsafe-math-optimization flag.
3896 * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
3897 * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
3898 -freciprocal-math instead of -funsafe-math-optimizations.
3899 * opts.c (set_fast_math_flags): Set -freciprocal-math and
3900 -fassociative-math when -ffast-math is set.
3901 (set_unsafe_math_optimizations_flags): New Function
3902 to set -freciprocal-math and -fassociative-math when
3903 -funsafe-math-optimizations is set.
3904 (common_handle_option): Call it.
3905 * tree-vectorizer.c (vect_is_simple_reduction): Use
3906 -fassociative-math when doing reduction on floats.
3907 * loop-unroll.c (analyze_insn_to_expand_var): Use
3908 -fassociative-math when expanding an accumulator of type float.
3909 * simplify-rtx.c (simplify_binary_operation_1): Use
3910 -fassociative-math and -freciprocal-math when reordeing operands
3911 of floating-point type.
3912 * combine.c (combine_simplify_rtx): Likewise.
3913 * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
3915 * common.opt (-fassociative-math, -freciprocal-math): New flags.
3917 2007-09-04 Paolo Carlini <pcarlini@suse.de>
3920 * doc/install.texi (--enable-__cxa_atexit): Fix typo.
3922 2007-09-04 Jan Hubicka <jh@suse.cz>
3924 * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
3926 2007-09-04 Jan Hubicka <jh@suse.cz>
3928 * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
3929 and corresponding MATCH_DUP.
3931 2007-09-04 Uros Bizjak <ubizjak@gmail.com>
3934 * combine.c (subst): Do not try to simplify X if it represents load
3935 of FP constant from the constant pool via float extension.
3937 2007-09-04 Ben Elliston <bje@au.ibm.com>
3939 * c-opts.c: Include "tm_p.h".
3940 * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
3942 2007-09-04 Richard Guenther <rguenther@suse.de>
3944 PR tree-optimization/33291
3945 * tree-pretty-print.c (dump_generic_node): Dump all
3946 qualifiers for pointer types, not only first. Dump
3947 qualifiers for aggregate types as well.
3948 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
3949 use the canonical type for building ARRAY_REFs.
3950 * gimplify.c (canonicalize_addr_expr): Clean up. The
3951 correct validness check is compatibility of the pointer
3952 types. Always use the canonical type for building
3953 ARRAY_REFs and ADDR_EXPRs.
3954 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert