1 2007-10-08 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3 * doc/invoke.texi (Wall): fix formatting issues.
5 2007-10-07 Richard Sandiford <rsandifo@nildram.co.uk>
7 * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
8 truncated shift counts.
10 2007-10-07 Kazu Hirata <kazu@codesourcery.com>
12 * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
13 syntax for ASSEMBLER_DIALECT.
14 * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
16 2007-10-06 Eric Botcazou <ebotcazou@adacore.com>
17 Nathan Froyd <froydnj@codesourcery.com>
19 * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
20 when determining whether to record INCOMING_RETURN_ADDR_RTX.
22 2007-10-06 Eric Botcazou <ebotcazou@adacore.com>
25 2007-02-12 Eric Botcazou <ebotcazou@adacore.com>
27 * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
28 * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
29 the function, temporarily point the debug interface to the null one.
31 2007-10-06 Alexandre Oliva <aoliva@redhat.com>
33 PR tree-optimization/33655
34 * tree-sra.c (bitfield_overlaps_p): Handle array and complex
37 2007-10-06 Alexandre Oliva <aoliva@redhat.com>
39 PR tree-optimization/33572
40 * tree-cfg.c (verify_stmts): Check for missing PHI defs.
41 * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
42 (update_ssa_across_abnormal_edges): ... this. Set slots in the
44 (copy_edges_for_bb): Handle nonlocal label edges.
45 (make_nonlocal_label_edges): Deleted.
46 (optimize_inline_calls): Don't call it.
48 2007-10-05 Hans-Peter Nilsson <hp@axis.com>
50 * gthr-single.h: Revert last change.
52 2007-10-05 Michael Matz <matz@suse.de>
55 * lower-subreg.c (decompose_multiword_subregs): Use
56 validate_unshare_change().
58 2007-10-05 Peter Bergner <bergner@vnet.ibm.com>
60 * ra-conflict.c: Include "sparseset.h".
61 (conflicts): Change to HOST_WIDEST_FAST_INT.
62 (allocnos_live): Redefine variable as a sparseset.
63 (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE): Delete macros.
64 (allocno_row_words): Removed global variable.
65 (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
66 (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
67 (conflict_p, set_conflict_p, set_conflicts_p): New functions.
68 (record_one_conflict_between_regnos): Cache allocno values and reuse.
70 (record_one_conflict): Update uses of allocnos_live to use
71 the sparseset routines. Use set_conflicts_p.
72 (mark_reg_store): Likewise.
73 (set_reg_in_live): Likewise.
74 (global_conflicts): Update uses of allocnos_live.
75 Use the new adjacency list to visit an allocno's neighbors
76 rather than iterating over all possible allocnos.
77 Call set_conflicts_p to setup conflicts rather than adding
79 * global.c: Comments updated.
80 (CONFLICTP): Delete define.
81 (regno_compare): New function. Add prototype.
82 (global_alloc): Sort the allocno to regno mapping according to
83 which basic blocks the regnos are referenced in. Modify the
84 conflict bit matrix to a compressed triangular bitmatrix.
85 Only allocate the conflict bit matrix and adjacency lists if
86 we are actually going to allocate something.
87 (expand_preferences): Use conflict_p. Update uses of allocnos_live.
88 (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
89 allocno's neighbors rather than iterating over all possible allocnos.
90 (mirror_conflicts): Removed function.
91 (dump_conflicts): Iterate over regnos rather than allocnos so
92 that all dump output will be sorted by regno number.
93 Use the FOR_EACH_CONFLICT macro.
94 * ra.h: Comments updated.
95 (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
96 (partial_bitnum, max_bitnum, adjacency, adjacency_pool): Add prototypes.
97 (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
98 (adjacency_list_d, adjacency_iterator_d): New types.
99 (add_neighbor, adjacency_iter_init, adjacency_iter_done,
100 adjacency_iter_next, regno_basic_block): New static inline functions.
101 (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
102 (conflict_p): Add function prototype.
103 * sparseset.h, sparseset.c: New files.
104 * Makefile.in (OBJS-common): Add sparseset.o.
105 (sparseset.o): New rule.
107 2007-10-05 Richard Guenther <rguenther@suse.de>
110 * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
113 2007-10-05 Michael Matz <matz@suse.de>
116 * function.c (match_asm_constraints_1): Check for input
117 being used in the outputs.
119 2007-10-05 Richard Guenther <rguenther@suse.de>
121 * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
123 2007-10-05 Richard Sandiford <rsandifo@nildram.co.uk>
126 * config/mips/mips.c (mips_register_move_cost): Rewrite to use
127 subset checks. Make the cost of FPR -> FPR moves depend on
128 mips_mode_ok_for_mov_fmt_p.
130 2007-10-04 Doug Kwan <dougkwan@google.com>
132 * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
133 __gthread_cond_wait_recursive): Add to extend interface for POSIX
134 conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
135 support of conditional variables.
136 * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
137 __gthread_cond_wait_recursive): Add to extend interface for POSIX
138 conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
139 support of conditional variables.
140 * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
141 __gthread_cond_wait_recursive): Add to extend interface for POSIX
142 conditional variables.
143 * gthr.h: Update comments to document new interface.
145 2007-10-04 Geoffrey Keating <geoffk@apple.com>
147 * cgraphunit.c (cgraph_build_static_cdtor): Don't set
150 2007-10-04 Anatoly Sokolov <aesok@post.ru>
152 * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
154 2007-10-04 Richard Guenther <rguenther@suse.de>
157 * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
158 does not need to be of INTEGER_TYPE.
159 (verify_gimple_2): New function split out from ...
160 (verify_gimple_1): ... here. ICE if there was an error during
163 2007-10-04 Michael Matz <matz@suse.de>
165 PR rtl-optimization/33653
166 * dce.c (deletable_insn_p_1): Use volatile_refs_p().
167 * dse.c (scan_insn): Same.
169 2007-10-04 Kazu Hirata <kazu@codesourcery.com>
171 * config.gcc: Remove USE_GAS for m68k targets.
173 2007-10-04 Richard Guenther <rguenther@suse.de>
175 PR tree-optimization/33627
176 * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
177 * tree-gimple.c (canonicalize_cond_expr_cond): New function,
179 * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
180 * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
182 2007-10-04 Anatoly Sokolov <aesok@post.ru>
184 * config/avr/avr.c (commands_in_file, commands_in_prologues,
185 commands_in_epilogues): Remove variables.
186 (avr_file_start): Remove unneded initializations of commands_in_file,
187 commands_in_prologues and commands_in_epilogues variables.
188 (avr_file_end): Remove dead code.
190 2007-10-04 Kazu Hirata <kazu@codesourcery.com>
192 * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
195 2007-10-03 Richard Sandiford <rsandifo@nildram.co.uk>
198 * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
199 (mips_split_doubleword_move): ...this.
200 * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
201 use natural endianness for multi-format FPR values.
202 (mips_split_64bit_move): Rename to...
203 (mips_split_doubleword_move): ...this and extend to 64-bit words.
204 Use move_doubleword_fpr* patterns for moves involving FPRs.
205 (mips_save_reg): Update the call to mips_split_64bit_move.
206 (mips_secondary_reload_class): Return NO_REGS for any reload of a
207 nonzero constant into an FPR if the constant can be forced to memory.
208 * config/mips/mips.md: Update the splitter calls to
209 mips_split_64bit_move.
210 (UNSPEC_LOAD_DF_LOW): Rename to...
211 (UNSPEC_LOAD_LOW): ...this.
212 (UNSPEC_LOAD_DF_HIGH): Rename to...
213 (UNSPEC_LOAD_HIGH): ...this.
214 (UNSPEC_STORE_DF_HIGH): Rename to...
215 (UNSPEC_STORE_WORD): ...this.
216 (SPLITF): New mode iterator.
217 (HALFMODE): New mode attribute.
218 (movtf): New expander.
219 (*movtf_internal): New define_insn_and_split.
220 (move_doubleword_fpr<mode>): New expander.
221 (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
223 (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
224 (mfhc1<mode>): ...these more general patterns.
226 2007-10-03 Alexandre Oliva <aoliva@redhat.com>
228 * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
230 2007-10-03 Alexandre Oliva <aoliva@redhat.com>
232 * gcse.c (hash_scan_set): Insert set in insn before note at
233 the end of basic block.
235 2007-10-03 Sebastian Pop <sebastian.pop@amd.com>
237 PR tree-optimization/33576
238 * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
239 * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
240 * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
241 (remove_iv): Declared.
242 * lambda-code.c (remove_iv): Not static.
243 (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
244 Don't remove ivs there, save ivs in the buffer.
246 2007-10-03 Jason Merrill <jason@redhat.com>
249 * tree-eh.c (same_handler_p): New fn.
250 (optimize_double_finally): New fn.
251 (refactor_eh_r): New fn.
252 (refactor_eh): New fn.
253 (pass_refactor_eh): New pass.
254 * tree-pass.h: Declare it.
255 * passes.c (init_optimization_passes): Add it.
257 2007-10-03 Doug Kwan <dougkwan@google.com>
258 Richard Guenther <rguenther@suse.de>
261 * dwarf2out.c (reference_to_unused): Disable sanity checking,
262 be conservative instead.
264 2007-10-03 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
267 * doc/invoke.texi (-fwhole-program): Document that Fortran
268 doesn't support this option.
270 2007-10-02 Richard Sandiford <rsandifo@nildram.co.uk>
273 * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
276 2007-10-02 David Daney <ddaney@avtrex.com>
278 * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
279 against constant zero.
280 * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Handle constant zero
283 2007-09-02 Kenneth Zadeck <zadeck@naturalbridge.com>
285 * ra-conflict.c: New file.
287 * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
288 usage to DF_LIVE usage.
289 * rtlanal.c (subreg_nregs_with_regno): New function.
290 * df-scan.c (df_def_record_1, df_uses_record): Add code to set
291 DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
292 (df_has_eh_preds): Removed.
293 (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
294 df_exit_block_uses_collect): Changed call from df_has_eh_preds to
296 * global.c (allocno, max_allocno, conflicts, allocno_row_words,
297 reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
298 (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
299 (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
300 mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
301 (global_alloc): Turn off rescanning insns after call to
302 global_conflicts and added call to set_preferences.
303 (global_conflicts): Moved to ra-alloc.c.
304 (set_preferences_1, set_preferences): New function.
305 (mirror_conflicts): Changed types for various variables.
306 (mark_elimination): Change DF_RA_LIVE
307 usage to DF_LIVE usage.
308 (build_insn_chain): Rewritten from scratch and made local.
309 (print_insn_chain, print_insn_chains): New functions.
310 (dump_conflicts): Do not print conflicts for fixed_regs.
311 (rest_of_handle_global_alloc): Turn off insn rescanning.
312 * hard-reg-set.h: Fixed comment.
313 * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
314 usage to DF_LIVE usage and delete refs to TOP sets.
315 (block_alloc): Mark regs as live if they are in the artificial
316 defs at top of block.
317 (find_stack_regs): New function.
318 (rest_of_handle_local_alloc): Changed urec problem to live
319 problem and do not turn off df rescanning.
320 * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
321 DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
322 df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
323 (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
324 (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
325 fields in df_ref_flags. The rest have been renumbered.
326 * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
328 * rtl.h (subreg_nregs_with_regno): New function.
329 * df-problems.c: (df_get_live_out, df_get_live_in,
330 df_get_live_top): Removed reference to DF_RA_LIVE.
331 (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
332 df_live_alloc, df_live_reset, df_live_local_finalize,
333 df_live_free): Make top set only if different from in set.
334 (df_lr_top_dump, df_live_top_dump): Only print top set if
335 different from in set.
336 (df_lr_bb_local_compute): Removed unnecessary check.
337 (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info,
338 df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass,
339 df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
340 df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
341 df_urec_local_compute, df_urec_init, df_urec_local_finalize,
342 df_urec_confluence_n, df_urec_transfer_function, df_urec_free,
343 df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
344 df_urec_add_problem): Removed.
345 (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
347 * Makefile.in (ra-conflict.o, ra.h): New dependencies.
348 * basic_block.h (bb_has_abnormal_pred): New function.
349 * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
350 usage to DF_LIVE usage.
352 2007-10-02 Revital Eres <eres@il.ibm.com>
354 * config/rs6000/predicates.md (easy_vector_constant): Return false
355 for 750CL paired vectors.
356 * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
358 (vec_initv2sf): Add new description.
359 (vconcatsf): Likewise.
360 * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
361 * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
363 2007-10-01 Alexandre Oliva <aoliva@redhat.com>
365 * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
366 sinking the last stmt in a BB.
368 2007-10-01 Alexandre Oliva <aoliva@redhat.com>
371 * tree-sra.c (struct sra_elt): Add in_bitfld_block.
372 (sra_hash_tree): Handle BIT_FIELD_REFs.
373 (sra_elt_hash): Don't hash bitfld blocks.
374 (sra_elt_eq): Skip them in parent compares as well. Handle
376 (build_element_name_1): Handle BIT_FIELD_REFs.
377 (instantiate_element): Propagate nowarn from parents. Create
378 BIT_FIELD_REF for variables that are widened by scalarization.
379 Gimple-zero-initialize all bit-field variables that are not
380 part of parameters that are going to be scalarized on entry.
381 (instantiate_missing_elements_1): Return the sra_elt.
382 (canon_type_for_field): New.
383 (try_instantiate_multiple_fields): New. Infer widest possible
384 access mode from decl or member type, but clip it at word
385 size, and only widen it if a field crosses an alignment
387 (instantiate_missing_elements): Use them.
388 (generate_one_element_ref): Handle BIT_FIELD_REFs.
389 (scalar_bitfield_p): New.
390 (sra_build_assignment): Optimize assignments from scalarizable
391 BIT_FIELD_REFs. Use BITS_BIG_ENDIAN to determine shift
394 (sra_build_bf_assignment): New. Optimize assignments to
395 scalarizable BIT_FIELD_REFs.
396 (sra_build_elt_assignment): New. Optimize BIT_FIELD_REF
397 assignments to full variables.
398 (generate_copy_inout): Use the new macros and functions.
399 (generate_element_copy): Likewise. Handle bitfld differences.
400 (generate_element_zero): Don't recurse for blocks. Use
401 sra_build_elt_assignment.
402 (generate_one_element_init): Take elt instead of var. Use
403 sra_build_elt_assignment.
404 (generate_element_init_1): Adjust.
405 (bitfield_overlap_info): New struct.
406 (bitfield_overlaps_p): New.
407 (sra_explode_bitfield_assignment): New. Adjust widened
408 variables to account for endianness.
409 (sra_sync_for_bitfield_assignment): New.
410 (scalarize_use): Re-expand assignment to/from scalarized
411 BIT_FIELD_REFs. Explode or sync needed members for
412 BIT_FIELD_REFs accesses or assignments. Use REPLDUP.
413 (scalarize_copy): Use REPLDUP.
414 (scalarize_ldst): Move assert before dereference. Adjust EH
416 (dump_sra_elt_name): Handle BIT_FIELD_REFs.
418 2007-10-01 Paolo Bonzini <bonzini@gnu.org>
420 * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
421 Rename CR_* constants to CMP_*. Fix spacing.
423 2007-10-01 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
426 * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
427 to be processed with the special script doc/install.texi2html.
429 2007-09-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
431 * doc/invoke.texi (Wall): List the options enabled by Wall.
432 (Wstrict-aliasing): Add missing @option.
434 2007-09-30 Richard Sandiford <rsandifo@nildram.co.uk>
436 * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
437 rather than gen_lowpart to change a register from DImode to DFmode.
438 (mips_cannot_change_mode_class): Only allow FPRs to change mode if
439 both FROM and TO are integer modes that are no bigger than 4 bytes.
440 (mips_mode_ok_for_mov_fmt_p): New function.
441 (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
442 (mips_secondary_reload_class): Tweak formatting and comments.
443 Use reg_class_subset_p instead of direct comparisons with
444 classes. Only allow direct FPR<->FPR moves for modes that
445 satisfy mips_mode_ok_for_mov_fmt_p. Only allow loads and stores
446 for 4- and 8-byte types. Handle reloads in which X is an FPR.
447 * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
448 (*movdi_64bit): Likewise.
449 (*movsi_internal): Likewise.
450 (*movhi_internal): Likewise.
451 (*movqi_internal): Likewise.
453 2007-09-30 Diego Novillo <dnovillo@google.com>
456 * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
459 2007-09-30 Uros Bizjak <ubizjak@gmail.com>
461 PR tree-optimization/33597
462 * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
463 for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
465 2007-09-28 Uros Bizjak <ubizjak@gmail.com>
467 * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
468 instead of variants of (!reload_in_progress && !reload_completed).
469 (x86_expand_vector_move): Ditto.
471 2007-09-28 Ollie Wild <aaw@google.com>
474 2007-09-27 Ollie Wild <aaw@google.com>
476 * varasm.c (compare_constant): Removed call to
477 lang_hooks.expand_constant.
478 (copy_constants): Removed call to lang_hooks.expand_constant.
479 (compute_reloc_for_constant): Removed call to
480 lang_hooks.expand_constant.
481 (output_addressed_constants): Removed call to
482 lang_hooks.expand_constant.
483 (constructor_static_from_elts_p): Removed call to
484 lang_hooks.expand_constant.
485 (output_constant): Removed calls to lang_hooks.expand_constant.
486 * langhooks.h (struct lang_hooks): Removed field expand_constant.
487 * langhooks-def.h (lhd_return_tree): Removed.
488 (LANG_HOOKS_EXPAND_CONSTANT): Removed.
489 (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
490 * langhooks.c (lhd_return_tree): Removed.
492 2007-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
495 * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
496 argument to gen_selb.
498 2007-09-28 Chao-ying Fu <fu@mips.com>
500 * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
501 * doc/libgcc.texi (Fixed-point fractional library routines):
502 Fix typos for neg and cmp functions.
504 2007-09-28 Michael Matz <matz@suse.de>
506 PR rtl-optimization/33552
507 * function.c (match_asm_constraints_1): Check for overlap in
508 inputs and replace all occurences.
510 2007-09-28 Richard Sandiford <rsandifo@nildram.co.uk>
512 * config/mips/mips.c (override_options): Fix comment typo.
514 2007-09-28 Jie Zhang <jie.zhang@analog.com>
516 * config.gcc (bfin*-linux-uclibc*): Set extra_parts
517 to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
518 * config/bfin/t-bfin-linux (crti.o): Don't build.
520 (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
521 * config/bfin/t-bfin-uclinux (crti.o): Don't build.
523 (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
525 2007-09-27 Ollie Wild <aaw@google.com>
527 * varasm.c (compare_constant): Removed call to
528 lang_hooks.expand_constant.
529 (copy_constants): Removed call to lang_hooks.expand_constant.
530 (compute_reloc_for_constant): Removed call to
531 lang_hooks.expand_constant.
532 (output_addressed_constants): Removed call to
533 lang_hooks.expand_constant.
534 (constructor_static_from_elts_p): Removed call to
535 lang_hooks.expand_constant.
536 (output_constant): Removed calls to lang_hooks.expand_constant.
537 * langhooks.h (struct lang_hooks): Removed field expand_constant.
538 * langhooks-def.h (lhd_return_tree): Removed.
539 (LANG_HOOKS_EXPAND_CONSTANT): Removed.
540 (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
541 * langhooks.c (lhd_return_tree): Removed.
543 2007-09-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
546 * expr.c (emit_group_load_1): Split constant double when destination
547 length is half source length.
549 2007-09-27 Richard Sandiford <rsandifo@nildram.co.uk>
551 * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
552 (mips_cpu_info): Add tune_flags.
553 (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
554 * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
556 (override_options): Remove deprecation code. Use branch-likely
557 instructions for optimize_size or if the tuning flags do not
558 suggest otherwise. Tweak warning.
559 (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
561 2007-09-27 Matthias Klose <doko@ubuntu.com>
563 * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
564 multilib osdirname if it exists.
565 * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
567 2007-09-27 Ian Lance Taylor <iant@google.com>
569 PR tree-optimization/33565
570 * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
571 assignments of comparisons.
572 * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
573 parameter. Change caller. Defer overflow warnings around call to
575 * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
576 TREE_NO_WARNING is set on the statement.
577 * tree-ssa-forwprop.c
578 (tree_ssa_forward_propagate_single_use_vars): Don't test
579 TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
580 * tree-cfg.c (fold_cond_expr_cond): Likewise.
582 2007-09-27 Joseph Myers <joseph@codesourcery.com>
584 * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
585 reduce offset by units of 0x10000 for SPE vector modes or modes
586 used with E500 double instructions.
588 2007-09-04 Paolo Bonzini <bonzini@gnu.org>
590 * simplify-rtx.c (comparison_result): New.
591 (simplify_const_relational_operation): Use it instead of the five
592 "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
593 Improve bounds-checking optimizations; remove subsumed POPCOUNT
594 optimizations. Extract nonzero_address_p optimizations into a
595 separate "if" together with optimizations where op1 is const0_rtx.
596 Optimize comparing an IOR with zero. Simplify op0 RELOP op0 for
597 floating-point arguments too when appropriate. Hoist test for ABS
598 outside the final switch statement.
599 * cse.c (fold_rtx): Don't look for an IOR equivalent of
600 folded_arg0 if we found a constant equivalent. Remove
601 transformations done in simplify-rtx.c for "op0 RELOP op0".
603 2007-09-27 Jakub Jelinek <jakub@redhat.com>
605 * builtins.c (expand_builtin, expand_builtin_object_size,
606 expand_builtin_memory_chk, maybe_emit_chk_warning,
607 maybe_emit_sprintf_chk_warning): Use new %K format string specifier
609 * expr.c (expand_expr_real_1): Likewise.
610 * langhooks-def.h (struct diagnostic_info): Add forward decl.
611 (lhd_print_error_function): Add third argument.
612 * langhooks.h (struct diagnostic_info): Add forward decl.
613 (struct lang_hooks): Add third argument to print_error_function.
614 * diagnostic.h (diagnostic_info): Add abstract_origin field.
615 (diagnostic_last_function_changed, diagnostic_set_last_function): Add
617 (diagnostic_report_current_function): Likewise.
618 * toplev.c (announce_function): Pass NULL as second argument to
619 diagnostic_set_last_function.
620 * diagnostic.c (diagnostic_report_current_function): Add second
621 argument, pass it as third argument to lang_hooks.print_error_function.
622 (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
623 to diagnostic_report_current_function.
624 (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
625 and message.abstract_origin.
626 (verbatim): Initialize abstract_origin.
627 * pretty-print.h (text_info): Add abstract_origin field.
628 * pretty-print.c (pp_base_format): Handle %K.
629 * langhooks.c (lhd_print_error_function): Add third argument. If
630 diagnostic->abstract_origin, print virtual backtrace.
631 * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
632 gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
633 (init_dynamic_diag_info): Likewise.
635 2007-09-26 David Daney <ddaney@avtrex.com>
638 * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
639 sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
640 sync_old_nand<mode>, sync_new_nand<mode>,
641 sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
642 Update length attributes.
643 (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
644 sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
646 * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
647 MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
648 MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
651 2007-09-26 Richard Guenther <rguenther@suse.de>
653 PR tree-optimization/33563
654 * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
655 (get_kill_of_stmt_lhs): ... this. Re-structure. Handle
657 (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
660 2007-09-26 Joseph Myers <joseph@codesourcery.com>
663 * c-common.c (complete_array_type): Diagnose too-large arrays and
664 set type to error_mark_node.
666 2007-09-26 Richard Guenther <rguenther@suse.de>
668 PR tree-optimization/30375
669 PR tree-optimization/33560
670 * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
674 2006-05-22 Aldy Hernandez <aldyh@redhat.com>
676 * tree-ssa-dse.c (aggregate_vardecl_d): New.
677 (dse_global_data): Add aggregate_vardecl field.
678 (dse_possible_dead_store_p): New.
679 Add prev_defvar variable.
680 Allow immediate uses and previous immediate uses to differ
681 if they are setting different parts of the whole.
682 (get_aggregate_vardecl): New.
683 (dse_record_partial_aggregate_store): New.
684 (dse_whole_aggregate_clobbered_p): New.
685 (dse_partial_kill_p): New.
686 Call dse_maybe_record_aggregate_store().
687 When checking whether a STMT and its USE_STMT refer to the
688 same memory address, check also for partial kills that clobber
690 Move some variable definitions to the block where they are used.
691 (aggregate_vardecl_hash): New.
692 (aggregate_vardecl_eq): New.
693 (aggregate_vardecl_free): New.
694 (aggregate_whole_store_p): New.
695 (tree_ssa_dse): Initialize and free aggregate_vardecl.
696 Mark which aggregate stores we care about.
698 2007-09-25 DJ Delorie <dj@redhat.com>
701 * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
704 2007-09-25 Michael Meissner <michael.meissner@amd.com>
707 * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
708 gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
709 for vector int32 -> int64 conversions. Don't write beyond the end
710 of the allocated vector for int32 -> int64 conversions.
712 2007-09-25 Revital Eres <eres@il.ibm.com>
714 * config/rs6000/paired.h (paired_sel): New.
715 * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
716 (rs6000_expand_ternop_builtin): Pass zero const_double operand
717 when expanding selv2sf.
718 * config/rs6000/rs6000.h (rs6000_builtins): Add
719 PAIRED_BUILTIN_SELV2SF4.
721 2007-09-25 Joseph Myers <joseph@codesourcery.com>
724 * c-typeck.c (default_conversion): Call require_complete_type
725 before perform_integral_promotions.
726 (build_unary_op): Call require_complete_type except for ADDR_EXPR.
727 (build_c_cast): Call require_complete_type except for casts to
729 (convert_for_assignment): Call require_complete_type.
731 2007-09-25 Revital Eres <eres@il.ibm.com>
733 * config/spu/spu.md: Fix doloop pattern.
735 2007-09-25 Bernd Schmidt <bernd.schmidt@analog.com>
737 * config/bfin/bfin.c (expand_prologue_reg_save,
738 expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and
740 (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
741 ... from here. New argument ALL; callers changed.
742 (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
743 (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
744 have the "saveall" attribute.
746 2007-09-25 Hans-Peter Nilsson <hp@bitrange.com>
748 * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
750 (INCOMING_REGNO, OUTGOING_REGNO): Define.
751 * config/mmix/mmix.c (mmix_opposite_regno): New function.
752 * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
754 * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
755 with REG_P tests before REGNO access.
757 2007-09-24 DJ Delorie <dj@redhat.com>
760 * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
762 (movqicc_<code>_<mode>): Likewise.
763 (movhicc_<code>_<mode>): Likewise.
765 2007-09-24 Rask Ingemann Lambertsen <rask@sygehus.dk>
768 * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
771 2007-09-24 Danny Smith <dannysmith@user.sourceforge.net>
774 * config/i386/i386.c (ix86_comp_type_attributes): Check
777 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
779 * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
780 "move.l %a4,%a4" to produce nops.
781 * config/m68k/m68k.c (override_options): Reset align options,
782 if neccessary align macro isn't avaible.
784 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
786 config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
788 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
790 * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
792 * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
794 (peephole pattern): Convert most of them to RTL peephole pattern.
796 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
798 * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
799 (moved from fp compare patterns).
800 * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
801 Cleanup predicates to relieve reload.
802 (conditional_trap): Reject conditional trap with fp condition.
803 * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
804 certain constants early.
806 2007-09-24 Roman Zippel <zippel@linux-m68k.org>
808 * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
810 2007-09-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
812 * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
813 Allow --with-tune=cell and --with-cpu=cell.
815 2007-09-24 David Edelsohn <edelsohn@gnu.org>
817 * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
818 * config/rs6000/rs6000.opt (swdiv): Change option to ...
820 * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
822 (TARGET_BUILTIN_RECIPROCAL): Use it.
823 (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
824 (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
825 (rs6000_emit_swrsqrtsf): New.
826 * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
828 * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
829 (divsf3): Remove swdiv support.
832 (rsqrt_internal1): New.
833 (divdf3): Remove swdiv support.
836 2007-09-24 Jakub Jelinek <jakub@redhat.com>
839 * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
841 * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
842 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
843 * tree.c (type_hash_eq): For FUNCTION_TYPE use
844 lang_hooks.type.type_hash_eq in addition to generic tests.
846 2007-09-24 Pranav Bhandarkar <pranav.bhandarkar@celunite.com>
847 Ramana Radhakrishnan <ramana@hercules.pun.celunite.com>
849 * tree-inline.h (eni_weights): Add field target_builtin_cost to
850 reflect the cost per call to a target specific builtin.
851 * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
852 call to a target specific builtin, then use target_builtin_call_cost.
853 (init_inline_once): Initialize target_builtin_call_cost field.
855 2007-09-24 Kai Tietz <kai.tietz@onevision.com>
858 * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
861 2007-09-23 H.J. Lu <hongjiu.lu@intel.com>
863 * configure.ac (ld_vers): Support GNU linker version xx.xx.*
864 * configure: Regenerated.
866 2007-09-23 Ollie Wild <aaw@google.com>
868 * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
870 (get_pointer_modulus_and_residue): New function.
872 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
874 * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
875 combine an SC return value into a single register.
877 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
879 * opth-gen.awk (target_flags_explicit): Declare.
880 * toplev.h (target_flags_explicit): Delete declaration.
881 * toplev.c (target_flags): Likewise.
882 * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
883 (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
884 Never return true for TARGET_MIPS16.
885 * config/mips/mips.c (mips_llsc): Delete.
886 (mips_handle_option): Remove -mllsc handling.
887 (mips_strip_unspec_address): Tweak comment.
888 * config/mips/mips.opt (mllsc): Use a target mask.
890 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
892 * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
893 word_mode as well as Pmode.
895 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
897 * function.c (assign_parm_setup_block): Explicitly convert BLKmode
898 parameters from word_mode to the subword type if such a truncation
901 2007-09-23 Jakub Jelinek <jakub@redhat.com>
903 * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
904 * configure: Regenerated.
906 2007-09-23 Jan Hubicka <jh@suse.cz>
908 * params.def (INLINE_CALL_COST): Set to 12.
909 * invoke.texi (inline-call-cost): Update default value.
911 2007-09-23 Eric Botcazou <ebotcazou@adacore.com>
913 * config/alpha/alpha.md (movti): Use operand_subword for the split.
915 2007-09-23 Ayal Zaks <zaks@il.ibm.com>
916 Revital Eres <eres@il.ibm.com>
918 * modulo-sched.c (doloop_register_get): Rewrite the loop which
919 checks whether the count_reg is found outside the control part.
921 2007-09-23 Jakub Jelinek <jakub@redhat.com>
923 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
924 instead of checking CALL_EXPR_FN directly to test for builtins.
925 If error or warning attributes are present, print
927 * c-common.c (handle_error_attribute): New function.
928 (c_common_attribute_table): Add error and warning
930 * doc/extend.texi: Document error and warning attributes.
932 * tree.h (block_nonartificial_location): New prototype.
933 * tree.c (block_nonartificial_location): New function.
934 * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
935 if artificial attribute is present on abstract inline decl.
936 * c-common.c (handle_artificial_attribute): New function.
937 (c_common_attribute_table): Add artificial attribute.
938 * final.c (override_filename, override_linenum): New variables.
939 (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
940 and override_linenum if inside of a block inlined from
941 __attribute__((__artificial__)) function.
942 (notice_source_line): Honor override_filename and override_linenum.
943 * doc/extend.texi: Document __attribute__((__artificial__)).
944 * config/i386/emmintrin.h: Add __artificial__ attribute to
945 all __always_inline__ functions.
946 * config/i386/mmintrin.h: Likewise.
947 * config/i386/tmmintrin.h: Likewise.
948 * config/i386/mm3dnow.h: Likewise.
949 * config/i386/pmmintrin.h: Likewise.
950 * config/i386/ammintrin.h: Likewise.
951 * config/i386/xmmintrin.h: Likewise.
952 * config/i386/smmintrin.h: Likewise.
953 * config/i386/bmmintrin.h: Likewise.
954 * config/i386/mmintrin-common.h: Likewise.
957 * expr.c (expand_constructor): New function.
958 (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
959 (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
962 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
964 * config/mips/mips.c (dump_constants_1): Generalize to include
965 fractional and accumulator modes.
967 2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
969 * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
970 * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
972 (override_options): Check TARGET_HARD_FLOAT_ABI instead of
973 TARGET_HARD_FLOAT when testing whether -mpaired-single is
975 (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
977 * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
979 * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
980 (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
982 (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
983 ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
984 * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
986 * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
988 * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
989 instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
990 * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
992 2007-09-22 Jason Merrill <jason@redhat.com>
995 * attribs.c (lookup_attribute_spec): Split out...
996 (decl_attributes): From here.
997 * tree.h: Declare it.
999 2007-09-22 Richard Sandiford <rsandifo@nildram.co.uk>
1001 * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
1003 2007-09-22 Eric Botcazou <ebotcazou@adacore.com>
1005 * tree-inline.c (remap_type_1): Correctly chain variants.
1007 2007-09-22 Richard Guenther <rguenther@suse.de>
1009 PR tree-optimization/33146
1010 * fold-const.c (fold_binary): Use the original tree
1012 * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
1013 also changes "sign".
1015 2007-09-22 Eric Botcazou <ebotcazou@adacore.com>
1018 * except.c (finish_eh_generation): Call commit_edge_insertions if
1019 there are insns queued on the entry edge.
1020 * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
1023 2007-09-22 Richard Sandiford <rsandifo@nildram.co.uk>
1025 * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
1027 2007-09-19 Michael Meissner <michael.meissner@amd.com>
1029 * gcc/config/i386/i386.c: Delete trailing whitespace.
1030 * gcc/config/i386/i386.h: Ditto.
1031 * gcc/config/i386/bmmintrin.h: Ditto.
1032 * gcc/config/i386/sync.md: Ditto.
1033 * gcc/config/i386/ppro.md: Ditto.
1034 * gcc/config/i386/mmx.md: Ditto.
1035 * gcc/config/i386/constraints.md: Ditto.
1036 * gcc/config/i386/sse.md: Ditto.
1037 * gcc/config/i386/athlon.md: Ditto.
1038 * gcc/config/i386/i386.md: Ditto.
1040 2007-09-21 Richard Guenther <rguenther@suse.de>
1042 PR tree-optimization/33508
1043 * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
1044 quadratic loop by keeping a bitmap of variables we have
1045 to clobber all subvariables for.
1046 (set_initial_properties): Likewise.
1048 2007-09-21 Richard Sandiford <rsandifo@nildram.co.uk>
1050 * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
1052 2007-09-20 Nigel Stephens <nigel@mips.com>
1053 Chao-ying Fu <fu@mips.com>
1055 * c-decl.c (finish_declspecs): When _Sat is used without
1056 _Fract or _Accum, set the default type to cts_fract.
1057 This avoids a warning of "type defaults to int".
1059 2007-09-20 Joseph Myers <joseph@codesourcery.com>
1061 * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
1062 bit-fields wider than one bit.
1064 2007-09-20 Jakub Jelinek <jakub@redhat.com>
1067 * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
1069 * dbxout.c (dbxout_type): Likewise.
1073 * gimplify.c (gimplify_vla_decl): New function.
1074 (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
1076 (gimplify_target_expr): Handle variable length TARGET_EXPRs.
1078 2007-09-20 Richard Sandiford <rsandifo@nildram.co.uk>
1080 * doc/invoke.texi (-minterlink-mips16): Document.
1081 * config/mips/mips.opt (minterlink-mips16): New option.
1082 * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
1085 2007-09-20 Joseph Myers <joseph@codesourcery.com>
1087 * doc/extend.texi (Attribute Syntax): Remove old speculative
1090 2007-09-20 Mark Shinwell <shinwell@codesourcery.com>
1092 * combine.c: Include cgraph.h.
1093 (setup_incoming_promotions): Rework to allow more aggressive
1094 elimination of sign extensions when all call sites of the
1095 current function are known to lie within the current unit.
1097 2007-09-20 Richard Sandiford <rsandifo@nildram.co.uk>
1099 * dse.c (find_shift_sequence): No-op rework of control flow.
1101 2007-09-19 Richard Sandiford <rsandifo@nildram.co.uk>
1103 * config/mips/mips.c (build_mips16_call_stub): Tidy. Fix second
1104 GPR for DCmode on 64-bit targets. Remove redundant fallback.
1106 2007-09-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
1108 * cfgexpand.c (dump_stack_var_partition): Use the correct
1109 index for the offset.
1111 2007-09-19 Joseph Myers <joseph@codesourcery.com>
1113 * config/mips/sde.h: Switch to GPLv3.
1115 2007-09-19 Eric Botcazou <ebotcazou@adacore.com>
1117 * tree-sra.c (decide_block_copy): Decide if there are groups.
1119 2007-09-19 Roman Zippel <zippel@linux-m68k.org>
1121 * config/m68k/m68k.c (output_move_himode): Remove jump table
1123 config/m68k/m68k.md (lea): Likewise.
1124 * config/m68k/m68k.c (print_operand_address): Use simple pc
1125 relative addressing.
1127 2007-09-19 Bernd Schmidt <bernd.schmidt@analog.com>
1129 * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
1130 * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
1132 (asm_insn_count): Pass template as second argument to it.
1133 * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1134 * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1135 * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1136 * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1137 * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1138 (sh_insn_length_adjustment): Pass template as second argument to it.
1139 * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
1141 * config/bfin/bfin.md (define_asm_attributes): New.
1143 2007-09-19 Jie Zhang <jie.zhang@analog.com>
1145 * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
1147 * config/bfin/print-sysroot-suffix.sh: New.
1148 * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
1149 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1150 MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1151 * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
1152 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1153 MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1154 * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
1155 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1156 MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1157 (linux-sysroot-suffix.h): New target.
1158 * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
1159 (mspecld-anomaly): Likewise.
1160 * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
1161 (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
1162 BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
1163 BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
1164 (bfin_si_revision): Declare.
1165 (bfin_workarounds): Declare.
1166 (WA_SPECULATIVE_LOADS): Define.
1167 (ENABLE_WA_SPECULATIVE_LOADS): Define.
1168 (WA_SPECULATIVE_SYNCS): Define.
1169 (ENABLE_WA_SPECULATIVE_SYNCS): Define.
1170 * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
1171 (LIB_SPEC): Add %s to the linker scripts.
1172 Use proper linker script for bf522, bf525, bf527,
1173 bf538, bf539, bf542, bf544, bf548, and bf549.
1174 * config/bfin/bfin.c (bfin_si_revision): Define.
1175 (bfin_workarounds): Define.
1176 (struct bfin_cpu): New.
1178 (bfin_handle_option): Handle silicon revision part of -mcpu option.
1179 (override_options): Set bfin_workarounds.
1180 (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
1181 ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
1182 ENABLE_WA_SPECULATIVE_LOADS.
1183 (bfin_reorg): Likewise.
1184 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1185 macros for bf522, bf525, bf527, bf538, bf539,
1186 bf542, bf544, bf548, and bf549.
1187 Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
1188 Don't define __ID_SHARED_LIB__ when -msep-data.
1189 (TARGET_DEFAULT): Define as 0.
1190 (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
1191 * doc/invoke.texi (Blackfin Options): Document silicon
1192 revision part of -mcpu option and it now accepts bf522, bf525,
1193 bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
1195 2007-09-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1197 * alias.c (memory_modified_1): Deconstify.
1198 (memory_modified_in_insn_p): Don't use const_note_stores.
1199 * rtl.h (const_note_stores): Delete.
1200 * rtlanal.c (const_note_stores): Likewise.
1202 2007-09-18 Richard Sandiford <rsandifo@nildram.co.uk>
1204 * dse.c (find_shift_sequence): Temporarily revert to forbidding
1207 2007-09-18 Rask Ingemann Lambertsen <rask@sygehus.dk>
1211 * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
1212 (addsi_small_int): Likewise.
1213 (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
1214 (one_cmplsi2): Likewise.
1216 (enter_func): Expand insn using hard_frame_pointer_rtx and
1219 * config/fr30/fr30.c (fr30_expand_prologue): Check for
1220 hard_frame_pointer_rtx instead of using REGNO() check.
1221 Properly sign extend GEN_INT() argument.
1223 2007-09-18 Roman Zippel <zippel@linux-m68k.org>
1225 * config/m68k/m68k.c (override_options): Remove USE_GAS,
1227 (output_dbcc_and_branch, output_scc_di): Replace all jbcc
1228 alternatives with just jcc.
1229 * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
1230 bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
1231 bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
1232 dbge_hi, dbge_si): Likewise.
1234 2007-09-18 Roman Zippel <zippel@linux-m68k.org>
1236 * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
1237 bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
1238 bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
1239 bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
1240 bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
1242 2007-09-18 Maxim Kuvyrkov <maxim@codesourcery.com>
1244 * config/m68k/m68k-devices.def (51qe): New device.
1245 * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit. Add it
1246 to all uses of FL_FOR_isa_c for compatibility.
1247 (all_microarchs): Add cfv1 microarchitecture.
1248 (m68k_handle_option): Handle m51qe option.
1249 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
1250 (TUNE_CFV1): New macro.
1251 (enum uarch_type): Add ucfv1.
1252 * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
1254 2007-09-18 Richard Guenther <rguenther@suse.de>
1256 PR tree-optimization/31863
1257 * tree-ssa-structalias.c (create_variable_info_for): Always
1258 free the fieldstack.
1260 2007-09-18 Dorit Nuzman <dorit@il.ibm.com>
1262 * opts.c (decode_options): Enable vectorization under -O3.
1264 2007-09-18 Richard Guenther <rguenther@suse.de>
1266 PR tree-optimization/33340
1267 * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
1268 SSA_NAMEs that occur in abnormal PHI nodes.
1270 2007-09-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1272 * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
1273 Don't use const_get_call_expr_in.
1274 * tree-gimple.c (const_get_call_expr_in): Delete.
1275 * tree-gimple.h (const_get_call_expr_in): Likewise.
1277 2007-09-18 Richard Sandiford <rsandifo@nildram.co.uk>
1279 * df-scan.c (df_notes_rescan): Do nothing if the instruction does
1280 not yet have a basic block.
1281 * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
1283 2007-09-18 Richard Sandiford <rsandifo@nildram.co.uk>
1285 * config/mips/mips.c (mips_file_start): Add ".previous" directives
1286 to both ".section"s.
1288 2007-09-17 Richard Sandiford <rsandifo@nildram.co.uk>
1290 * config/mips/mips.c (mips_output_mi_thunk): Use
1291 mips_function_ok_for_sibcall and const_call_insn_operand
1292 to determine if a direct sibcall is allowed. Use
1293 mips_classify_symbol to determine a global pointer is needed.
1295 2007-09-17 Richard Sandiford <rsandifo@nildram.co.uk>
1297 * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
1299 2007-09-17 Chao-ying Fu <fu@mips.com>
1300 Nigel Stephens <nigel@mips.com>
1302 * config/fixed-bit.h: New file.
1303 * config/fixed-bit.c: New file.
1304 * doc/libgcc.texi (Fixed-point fractional library routines): New node.
1306 2007-09-18 Jakub Jelinek <jakub@redhat.com>
1308 * c-format.h (format_kind_info): Add alloc_char field.
1309 * c-format.c (scanf_flag_specs): Add 'm'.
1310 (scanf_flag_pairs): Add 'a', 'm' pair.
1311 (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
1312 (format_types_orig): Add alloc_char fields.
1313 (check_format_info_main): Rename aflag to alloc_flag.
1314 Handle fki->alloc_char. modifier after width and before length
1315 modifiers. Move FMT_FLAG_SCANF_A_KLUDGE handling before
1316 length modifiers as well.
1317 * config/sol2-c.c (solaris_format_types): Add alloc_char field.
1320 * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
1321 returned by build_call_expr.
1323 2007-09-17 Eric Botcazou <ebotcazou@adacore.com>
1325 * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
1326 NULL for variable-sized records too.
1327 (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
1329 2007-09-17 Tom Tromey <tromey@redhat.com>
1331 * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
1332 (c_builtin_function): Likewise.
1333 (grokdeclarator): Likewise.
1335 2007-09-17 Zdenek Dvorak <ook@ucw.cz>
1337 PR rtl-optimization/26449
1338 * loop-invariant.c (move_invariant_reg): Do not use force_operand.
1339 (seq_insns_valid_p): Removed.
1341 2007-09-17 Eric Botcazou <ebotcazou@adacore.com>
1343 * tree-nomudflap.c (gate_mudflap): New static function.
1344 (pass_mudflap_1): Use it as gate function.
1345 (pass_mudflap_2): Likewise.
1347 2007-09-17 Jan Hubicka <jh@suse.cz>
1351 * loop-invariant.c (move_invariant_reg): Unshare sequence.
1353 2007-09-17 Victor Kaplansky <victork@il.ibm.com>
1355 PR tree-optimization/33319
1356 * tree-vect-analyze.c (vect_same_range_drs): New.
1357 (vect_vfa_range_equal): New.
1358 (vect_is_duplicate_ddr): Removed.
1359 (vect_mark_for_runtime_alias_test): Do not perform marking when
1360 optimizing for size or max_param for alias checking is zero.
1361 Move the function before vect_analyze_data_ref_dependence.
1362 (vect_analyze_data_ref_dependence): Add call to
1363 vect_mark_for_runtime_alias_test in two cases when dependence
1365 (vect_analyze_data_ref_dependences): Do not call to
1366 vect_mark_for_runtime_alias_test.
1367 (vect_prune_runtime_alias_test_list): New.
1368 (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
1369 * tree-vect-transform.c (vect_estimate_min_profitable_iters):
1370 Update vec_outside_cost.
1371 (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
1372 (vect_create_cond_for_alias_checks): Build the base address of data
1373 reference from DR_GROUP_FIRST_DR.
1374 (vect_loop_versioning): New.
1375 (vect_transform_loop): Add a call to vect_loop_versioning.
1376 Remove factored out code.
1378 2007-09-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1381 * expr.c (store_expr): Call adjust_address to change mode of dest_mem
1384 2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
1386 * dse.c (find_shift_sequence): Allow word as well as subword shifts.
1387 Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
1388 Fix the call to insn_rtx_cost. Skip access sizes that require a
1389 real truncation of the store register. Use convert_move instead
1390 of gen_lowpart when narrowing the result.
1391 (replace_read): Use convert_move instead of gen_lowpart when
1392 narrowing the store rhs.
1394 2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
1396 * config/mips/mips.md (SHORT): Fix long line.
1397 (SUBDI): New mode iterator. Extend the shift-and-truncate insns
1398 to QImode and HImode.
1400 2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
1402 * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
1404 2007-09-15 Zdenek Dvorak <ook@ucw.cz>
1406 * tree-parloops.c: New file.
1407 * tree-ssa-operands.h (free_stmt_operands): Declare.
1408 * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
1410 * tree-pass.h (pass_parallelize_loops): Declare.
1411 * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
1413 (build_omp_regions_1): Allow analysing just a single OMP region and
1415 ( build_omp_regions_root, omp_expand_local): New functions.
1416 (build_omp_regions): Add argument to build_omp_regions_1 call.
1417 * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
1418 autoparallelization is run.
1419 * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
1420 * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
1421 pass_parallelize_loops): New.
1422 * common.opt (ftree-parallelize-loops): New.
1423 * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
1424 parallelize_loops): Declare.
1425 (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
1426 * Makefile.in (tree-parloops.o): Added.
1427 * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
1429 (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
1430 (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
1431 one extra edge as well.
1432 (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
1433 Use VEC_free to free doms vector.
1434 (move_block_to_fn): Update loop info. Remove phi nodes for virtual
1435 operands. Recompute operand caches in the new function.
1436 (move_sese_region_to_fn): Update loop info.
1437 * passes.c (init_optimization_passes): Add pass_parallelize_loops.
1438 * tree-ssa-operands.c (free_stmt_operands): New function.
1440 * doc/passes.texi: Document autoparallelization.
1441 * doc/invoke.texi (-ftree-parallelize-loops): New option.
1443 2007-09-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1446 * pa.c (function_value): Use GET_MODE_BITSIZE instead of
1449 2007-09-15 Dorit Nuzman <dorit@il.ibm.com>
1451 * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if
1452 the VEC is not NULL.
1453 (vectorizable_type_demotion, vectorizable_type_promotion): Check that
1454 get_vectype_for_scalar_type succeeded.
1455 (vectorizable_conversion): Likewise.
1457 2007-09-14 Jan Hubicka <jh@suse.cz>
1459 * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
1462 2007-09-14 Uros Bizjak <ubizjak@gmail.com>
1465 * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
1466 register when operands[2] equals operands[1].
1467 (remainderxf3): Ditto.
1469 2007-09-14 Sandra Loosemore <sandra@codesourcery.com>
1470 Nigel Stephens <nigel@mips.com>
1472 * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
1473 * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
1474 (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
1476 (_Unwind_ForcedUnwind): Likewise.
1477 (_Unwind_Resume): Likewise.
1478 (_Unwind_Resume_or_Rethrow): Likewise.
1479 (_Unwind_Backtrace): Likewise.
1480 (_Unwind_SjLj_RaiseException): Likewise.
1481 (_Unwind_SjLj_ForcedUnwind): Likewise.
1482 (_Unwind_SjLj_Resume): Likewise.
1483 (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
1484 * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
1486 (_Unwind_ForcedUnwind): Likewise.
1487 (_Unwind_Resume): Likewise.
1488 (_Unwind_Resume_or_Rethrow): Likewise.
1489 (_Unwind_Backtrace): Likewise.
1490 * unwind-compat.c (_Unwind_Backtrace): Likewise.
1491 (_Unwind_ForcedUnwind): Likewise.
1492 (_Unwind_RaiseException): Likewise.
1493 (_Unwind_Resume): Likewise.
1494 (_Unwind_Resume_or_Rethrow): Likewise.
1496 * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
1497 nomips16 mode when IN_LIBGCC2 with hard float.
1499 2007-09-14 Richard Sandiford <rsandifo@nildram.co.uk>
1501 * config/mips/sdemtk.opt: Update to GPLv3.
1502 * config/mips/sdemtk.h: Likewise.
1504 2007-09-14 Nigel Stephens <nigel@mips.com>
1506 * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
1507 MIPS_ISA_DEFAULT appropriately. Don't make soft-float the default
1508 for mipsisa32-*-linux*.
1510 2007-09-14 Nigel Stephens <nigel@mips.com>
1511 David Ung <davidu@mips.com>
1512 Thiemo Seufer <ths@mips.com>
1513 Richard Sandiford <richard@codesourcery.com>
1515 * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
1516 * configure.ac: Add a mipssde threading type.
1517 * configure: Regenerate.
1518 * config/mips/sdemtk.h: New file.
1519 * config/mips/t-sdemtk: Likewise.
1520 * config/mips/sdemtk.opt: Likewise.
1521 * gthr-mipssde.h: Likewise.
1522 * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
1523 * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
1524 (MIPS_ICACHE_SYNC): New macro, split from ...
1525 * config/mips/mips.md (clear_cache): ...here.
1526 * config/mips/mips.c (mips_save_reg_p): Check
1527 MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
1528 (build_mips16_function_stub): Use targetm.strip_name_encoding.
1529 (build_mips16_call_stub): Likewise.
1531 2007-09-14 Richard Sandiford <richard@codesourcery.com>
1533 * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
1535 2007-09-14 Jakub Jelinek <jakub@redhat.com>
1538 * config/ia64/ia64.c (find_gr_spill): Don't decrement
1539 current_frame_info.n_local_regs. Don't return emitted local
1541 (ia64_compute_frame_size): Improve unwind hack to put
1542 RP, PFS, FP in that order by allowing some of the registers
1543 been already emitted, as long as they are emitted to the
1546 2007-09-14 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1548 * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
1549 vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
1550 vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
1552 2007-09-13 Eric Christopher <echristo@apple.com>
1553 Kenneth Zadeck <zadeck@naturalbridge.com>
1555 * dse.c (find_shift_sequence): New function.
1556 (replace_read): Add case to remove read if it requires shift.
1557 * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
1559 2007-09-13 Tom Tromey <tromey@redhat.com>
1561 * c-common.c (fname_as_string): Update.
1562 * c-parser.c (c_parser) <lex_untranslated_string>: New field.
1563 (c_lex_one_token): Update. Add 'parser' argument.
1564 (c_parser_simple_asm_expr): Update.
1565 (c_parser_attributes): Update.
1566 (c_parser_asm_statement): Update.
1567 (c_parser_asm_operands): Update.
1568 (c_parser_peek_token): Update.
1569 (c_parser_peek_2nd_token): Update.
1570 * c-lex.c (c_lex_string_translate): Remove.
1571 (c_lex_return_raw_strings): Likewise.
1572 (c_lex_with_flags): Added 'lex_flags' argument.
1573 (lex_string): Added 'translate' argument.
1574 * c-pragma.h (c_lex_with_flags): Update.
1575 (c_lex_string_translate, c_lex_return_raw_strings): Remove.
1576 (C_LEX_STRING_NO_TRANSLATE): New define.
1577 (C_LEX_RAW_STRINGS): Likewise.
1579 2007-09-13 Bernd Schmidt <bernd.schmidt@analog.com>
1582 * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
1583 BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
1584 BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
1585 (bfin_init_builtins): Initialize __builtin_bfin_ones,
1586 __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
1587 __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
1588 __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
1589 __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
1590 __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
1591 (bdesc_1arg): Add __builtin_bfin_ones.
1592 (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
1593 __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
1594 and __builtin_bfin_csqu_fr16.
1595 * config/bfin/bfin.md (UNSPEC_ONES): New constant.
1596 (ones): New define_insn.
1597 (ssaddhi3_parts): New define_insn.
1598 (sssubhi3_parts): New define_insn.
1599 (flag_mulhi_parts): New define_insn.
1601 2007-09-13 Seongbae Park <seongbae.park@gmail.com>
1603 * common.opt (femit-class-debug-always): Turn off by default.
1605 2007-09-13 Bernd Schmidt <bernd.schmidt@analog.com>
1607 * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
1608 * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
1610 2007-09-13 James E. Wilson <wilson@specifix.com>
1612 PR tree-optimization/33389
1613 * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
1614 then set build_loads before returning.
1616 2007-09-13 Sandra Loosemore <sandra@codesourcery.com>
1617 David Ung <davidu@mips.com>
1619 * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
1620 {d}addiu and a negative immediate such that it works with MIPS16
1623 2007-09-13 H.J. Lu <hongjiu.lu@intel.com>
1626 * configure.ac (ld_vers): Support Linux linker.
1627 * configure: Regenerated.
1629 2007-09-13 Richard Sandiford <richard@codesourcery.com>
1630 Sandra Loosemore <sandra@codesourcery.com>
1632 * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
1633 (SYMBOL_REF_MIPS16_FUNC_P): Delete.
1634 * config/mips/mips.c (mips_attribute_table): Turn mips16 and
1635 nomips16 into decl attributes.
1636 (TARGET_INSERT_ATTRIBUTES): Override.
1637 (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
1638 (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
1639 (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
1640 (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
1641 (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
1642 (mips_use_mips16_mode_p): Reimplement as a function that takes
1643 a decl and considers only decl attributes. If the decl is nested
1644 function, use its parent attributes.
1645 (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
1646 instead of SYMBOL_REF_MIPS16_FUNC_P.
1647 (mips_set_mips16_mode): Move call to sorry here from old
1648 mips_use_mips16_mode_p.
1649 (mflip_mips16_entry): New structure.
1650 (mflip_mips16_htab): New variable.
1651 (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
1652 (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
1653 (mips_merge_decl_attributes): New function.
1654 (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
1655 Use mips_use_mips16_mode_p.
1656 (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
1657 SYMBOL_REF_MIPS16_FUNC_P.
1658 (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
1660 2007-09-13 Richard Sandiford <richard@codesourcery.com>
1662 * c-parser.c (c_parser_struct_declaration): Check for a null return.
1664 2007-09-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
1667 * gcc.c (xputenv): Make argument const, and use CONST_CAST.
1669 2007-09-12 Michael Meissner <michael.meissner@amd.com>
1670 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
1671 Tony Linthicum <tony.linthicum@amd.com>
1673 * tree.h (function_args_iterator): New type to iterate over
1675 (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
1676 function arguments providing a pointer to the argument.
1677 (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
1678 function arguments providing the argument.
1679 (function_args_iter_init): Inline function to initialize
1680 function_args_iterator.
1681 (function_args_iter_cond_ptr): Inline function to return the next
1682 pointer to hold the argument.
1683 (function_args_iter_cond): Inline function to return the next
1685 (function_args_iter_cond_next): Advance the function args
1687 (stdarg_p): New function, return true if variable argument
1689 (prototype_p): New function, return true if function is
1691 (function_args_count): New function, count the number of arguments
1694 * tree.c (stdarg_p): New function, return true if variable
1696 (prototype_p): New function, return true if function is
1699 * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
1700 (TARGET_ROUND): New macro for the round/ptest instructions which
1701 are shared between SSE4.1 and SSE5.
1702 (OPTION_MASK_ISA_ROUND): Ditto.
1703 (OPTION_ISA_ROUND): Ditto.
1704 (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
1705 (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
1707 * config/i386/i386.opt (-msse5): New switch for SSE5 support.
1708 (-mfused-madd): New switch to give users control over whether the
1709 compiler optimizes to use the multiply/add SSE5 instructions.
1711 * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
1712 m_ATHLON_K8_AMDFAM10, and change all uses.
1713 (enum pta_flags): Add PTA_SSE5.
1714 (ix86_handle_option): Turn off 3dnow if -msse5.
1715 (override_options): Add SSE5 support.
1716 (print_operand): %Y prints comparison codes for SSE5 com/pcom
1718 (ix86_expand_sse_movcc): Add SSE5 support.
1719 (ix86_expand_sse5_unpack): New function to use pperm to unpack a
1720 vector type to the next largest size.
1721 (ix86_expand_sse5_pack): New function to use pperm to pack a
1722 vector type to the next smallest size.
1723 (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
1724 (IX86_BUILTIN_FMADDSD): Ditto.
1725 (IX86_BUILTIN_FMADDPS): Ditto.
1726 (IX86_BUILTIN_FMADDPD): Ditto.
1727 (IX86_BUILTIN_FMSUBSS): Ditto.
1728 (IX86_BUILTIN_FMSUBSD): Ditto.
1729 (IX86_BUILTIN_FMSUBPS): Ditto.
1730 (IX86_BUILTIN_FMSUBPD): Ditto.
1731 (IX86_BUILTIN_FNMADDSS): Ditto.
1732 (IX86_BUILTIN_FNMADDSD): Ditto.
1733 (IX86_BUILTIN_FNMADDPS): Ditto.
1734 (IX86_BUILTIN_FNMADDPD): Ditto.
1735 (IX86_BUILTIN_FNMSUBSS): Ditto.
1736 (IX86_BUILTIN_FNMSUBSD): Ditto.
1737 (IX86_BUILTIN_FNMSUBPS): Ditto.
1738 (IX86_BUILTIN_FNMSUBPD): Ditto.
1739 (IX86_BUILTIN_PCMOV_V2DI): Ditto.
1740 (IX86_BUILTIN_PCMOV_V4SI): Ditto.
1741 (IX86_BUILTIN_PCMOV_V8HI): Ditto.
1742 (IX86_BUILTIN_PCMOV_V16QI): Ditto.
1743 (IX86_BUILTIN_PCMOV_V4SF): Ditto.
1744 (IX86_BUILTIN_PCMOV_V2DF): Ditto.
1745 (IX86_BUILTIN_PPERM): Ditto.
1746 (IX86_BUILTIN_PERMPS): Ditto.
1747 (IX86_BUILTIN_PERMPD): Ditto.
1748 (IX86_BUILTIN_PMACSSWW): Ditto.
1749 (IX86_BUILTIN_PMACSWW): Ditto.
1750 (IX86_BUILTIN_PMACSSWD): Ditto.
1751 (IX86_BUILTIN_PMACSWD): Ditto.
1752 (IX86_BUILTIN_PMACSSDD): Ditto.
1753 (IX86_BUILTIN_PMACSDD): Ditto.
1754 (IX86_BUILTIN_PMACSSDQL): Ditto.
1755 (IX86_BUILTIN_PMACSSDQH): Ditto.
1756 (IX86_BUILTIN_PMACSDQL): Ditto.
1757 (IX86_BUILTIN_PMACSDQH): Ditto.
1758 (IX86_BUILTIN_PMADCSSWD): Ditto.
1759 (IX86_BUILTIN_PMADCSWD): Ditto.
1760 (IX86_BUILTIN_PHADDBW): Ditto.
1761 (IX86_BUILTIN_PHADDBD): Ditto.
1762 (IX86_BUILTIN_PHADDBQ): Ditto.
1763 (IX86_BUILTIN_PHADDWD): Ditto.
1764 (IX86_BUILTIN_PHADDWQ): Ditto.
1765 (IX86_BUILTIN_PHADDDQ): Ditto.
1766 (IX86_BUILTIN_PHADDUBW): Ditto.
1767 (IX86_BUILTIN_PHADDUBD): Ditto.
1768 (IX86_BUILTIN_PHADDUBQ): Ditto.
1769 (IX86_BUILTIN_PHADDUWD): Ditto.
1770 (IX86_BUILTIN_PHADDUWQ): Ditto.
1771 (IX86_BUILTIN_PHADDUDQ): Ditto.
1772 (IX86_BUILTIN_PHSUBBW): Ditto.
1773 (IX86_BUILTIN_PHSUBWD): Ditto.
1774 (IX86_BUILTIN_PHSUBDQ): Ditto.
1775 (IX86_BUILTIN_PROTB): Ditto.
1776 (IX86_BUILTIN_PROTW): Ditto.
1777 (IX86_BUILTIN_PROTD): Ditto.
1778 (IX86_BUILTIN_PROTQ): Ditto.
1779 (IX86_BUILTIN_PROTB_IMM): Ditto.
1780 (IX86_BUILTIN_PROTW_IMM): Ditto.
1781 (IX86_BUILTIN_PROTD_IMM): Ditto.
1782 (IX86_BUILTIN_PROTQ_IMM): Ditto.
1783 (IX86_BUILTIN_PSHLB): Ditto.
1784 (IX86_BUILTIN_PSHLW): Ditto.
1785 (IX86_BUILTIN_PSHLD): Ditto.
1786 (IX86_BUILTIN_PSHLQ): Ditto.
1787 (IX86_BUILTIN_PSHAB): Ditto.
1788 (IX86_BUILTIN_PSHAW): Ditto.
1789 (IX86_BUILTIN_PSHAD): Ditto.
1790 (IX86_BUILTIN_PSHAQ): Ditto.
1791 (IX86_BUILTIN_FRCZSS): Ditto.
1792 (IX86_BUILTIN_FRCZSD): Ditto.
1793 (IX86_BUILTIN_FRCZPS): Ditto.
1794 (IX86_BUILTIN_FRCZPD): Ditto.
1795 (IX86_BUILTIN_CVTPH2PS): Ditto.
1796 (IX86_BUILTIN_CVTPS2PH): Ditto.
1797 (IX86_BUILTIN_COMEQSS): Ditto.
1798 (IX86_BUILTIN_COMNESS): Ditto.
1799 (IX86_BUILTIN_COMLTSS): Ditto.
1800 (IX86_BUILTIN_COMLESS): Ditto.
1801 (IX86_BUILTIN_COMGTSS): Ditto.
1802 (IX86_BUILTIN_COMGESS): Ditto.
1803 (IX86_BUILTIN_COMUEQSS): Ditto.
1804 (IX86_BUILTIN_COMUNESS): Ditto.
1805 (IX86_BUILTIN_COMULTSS): Ditto.
1806 (IX86_BUILTIN_COMULESS): Ditto.
1807 (IX86_BUILTIN_COMUGTSS): Ditto.
1808 (IX86_BUILTIN_COMUGESS): Ditto.
1809 (IX86_BUILTIN_COMORDSS): Ditto.
1810 (IX86_BUILTIN_COMUNORDSS): Ditto.
1811 (IX86_BUILTIN_COMFALSESS): Ditto.
1812 (IX86_BUILTIN_COMTRUESS): Ditto.
1813 (IX86_BUILTIN_COMEQSD): Ditto.
1814 (IX86_BUILTIN_COMNESD): Ditto.
1815 (IX86_BUILTIN_COMLTSD): Ditto.
1816 (IX86_BUILTIN_COMLESD): Ditto.
1817 (IX86_BUILTIN_COMGTSD): Ditto.
1818 (IX86_BUILTIN_COMGESD): Ditto.
1819 (IX86_BUILTIN_COMUEQSD): Ditto.
1820 (IX86_BUILTIN_COMUNESD): Ditto.
1821 (IX86_BUILTIN_COMULTSD): Ditto.
1822 (IX86_BUILTIN_COMULESD): Ditto.
1823 (IX86_BUILTIN_COMUGTSD): Ditto.
1824 (IX86_BUILTIN_COMUGESD): Ditto.
1825 (IX86_BUILTIN_COMORDSD): Ditto.
1826 (IX86_BUILTIN_COMUNORDSD): Ditto.
1827 (IX86_BUILTIN_COMFALSESD): Ditto.
1828 (IX86_BUILTIN_COMTRUESD): Ditto.
1829 (IX86_BUILTIN_COMEQPS): Ditto.
1830 (IX86_BUILTIN_COMNEPS): Ditto.
1831 (IX86_BUILTIN_COMLTPS): Ditto.
1832 (IX86_BUILTIN_COMLEPS): Ditto.
1833 (IX86_BUILTIN_COMGTPS): Ditto.
1834 (IX86_BUILTIN_COMGEPS): Ditto.
1835 (IX86_BUILTIN_COMUEQPS): Ditto.
1836 (IX86_BUILTIN_COMUNEPS): Ditto.
1837 (IX86_BUILTIN_COMULTPS): Ditto.
1838 (IX86_BUILTIN_COMULEPS): Ditto.
1839 (IX86_BUILTIN_COMUGTPS): Ditto.
1840 (IX86_BUILTIN_COMUGEPS): Ditto.
1841 (IX86_BUILTIN_COMORDPS): Ditto.
1842 (IX86_BUILTIN_COMUNORDPS): Ditto.
1843 (IX86_BUILTIN_COMFALSEPS): Ditto.
1844 (IX86_BUILTIN_COMTRUEPS): Ditto.
1845 (IX86_BUILTIN_COMEQPD): Ditto.
1846 (IX86_BUILTIN_COMNEPD): Ditto.
1847 (IX86_BUILTIN_COMLTPD): Ditto.
1848 (IX86_BUILTIN_COMLEPD): Ditto.
1849 (IX86_BUILTIN_COMGTPD): Ditto.
1850 (IX86_BUILTIN_COMGEPD): Ditto.
1851 (IX86_BUILTIN_COMUEQPD): Ditto.
1852 (IX86_BUILTIN_COMUNEPD): Ditto.
1853 (IX86_BUILTIN_COMULTPD): Ditto.
1854 (IX86_BUILTIN_COMULEPD): Ditto.
1855 (IX86_BUILTIN_COMUGTPD): Ditto.
1856 (IX86_BUILTIN_COMUGEPD): Ditto.
1857 (IX86_BUILTIN_COMORDPD): Ditto.
1858 (IX86_BUILTIN_COMUNORDPD): Ditto.
1859 (IX86_BUILTIN_COMFALSEPD): Ditto.
1860 (IX86_BUILTIN_COMTRUEPD): Ditto.
1861 (IX86_BUILTIN_PCOMEQUB): Ditto.
1862 (IX86_BUILTIN_PCOMNEUB): Ditto.
1863 (IX86_BUILTIN_PCOMLTUB): Ditto.
1864 (IX86_BUILTIN_PCOMLEUB): Ditto.
1865 (IX86_BUILTIN_PCOMGTUB): Ditto.
1866 (IX86_BUILTIN_PCOMGEUB): Ditto.
1867 (IX86_BUILTIN_PCOMFALSEUB): Ditto.
1868 (IX86_BUILTIN_PCOMTRUEUB): Ditto.
1869 (IX86_BUILTIN_PCOMEQUW): Ditto.
1870 (IX86_BUILTIN_PCOMNEUW): Ditto.
1871 (IX86_BUILTIN_PCOMLTUW): Ditto.
1872 (IX86_BUILTIN_PCOMLEUW): Ditto.
1873 (IX86_BUILTIN_PCOMGTUW): Ditto.
1874 (IX86_BUILTIN_PCOMGEUW): Ditto.
1875 (IX86_BUILTIN_PCOMFALSEUW): Ditto.
1876 (IX86_BUILTIN_PCOMTRUEUW): Ditto.
1877 (IX86_BUILTIN_PCOMEQUD): Ditto.
1878 (IX86_BUILTIN_PCOMNEUD): Ditto.
1879 (IX86_BUILTIN_PCOMLTUD): Ditto.
1880 (IX86_BUILTIN_PCOMLEUD): Ditto.
1881 (IX86_BUILTIN_PCOMGTUD): Ditto.
1882 (IX86_BUILTIN_PCOMGEUD): Ditto.
1883 (IX86_BUILTIN_PCOMFALSEUD): Ditto.
1884 (IX86_BUILTIN_PCOMTRUEUD): Ditto.
1885 (IX86_BUILTIN_PCOMEQUQ): Ditto.
1886 (IX86_BUILTIN_PCOMNEUQ): Ditto.
1887 (IX86_BUILTIN_PCOMLTUQ): Ditto.
1888 (IX86_BUILTIN_PCOMLEUQ): Ditto.
1889 (IX86_BUILTIN_PCOMGTUQ): Ditto.
1890 (IX86_BUILTIN_PCOMGEUQ): Ditto.
1891 (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
1892 (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
1893 (IX86_BUILTIN_PCOMEQB): Ditto.
1894 (IX86_BUILTIN_PCOMNEB): Ditto.
1895 (IX86_BUILTIN_PCOMLTB): Ditto.
1896 (IX86_BUILTIN_PCOMLEB): Ditto.
1897 (IX86_BUILTIN_PCOMGTB): Ditto.
1898 (IX86_BUILTIN_PCOMGEB): Ditto.
1899 (IX86_BUILTIN_PCOMFALSEB): Ditto.
1900 (IX86_BUILTIN_PCOMTRUEB): Ditto.
1901 (IX86_BUILTIN_PCOMEQW): Ditto.
1902 (IX86_BUILTIN_PCOMNEW): Ditto.
1903 (IX86_BUILTIN_PCOMLTW): Ditto.
1904 (IX86_BUILTIN_PCOMLEW): Ditto.
1905 (IX86_BUILTIN_PCOMGTW): Ditto.
1906 (IX86_BUILTIN_PCOMGEW): Ditto.
1907 (IX86_BUILTIN_PCOMFALSEW): Ditto.
1908 (IX86_BUILTIN_PCOMTRUEW): Ditto.
1909 (IX86_BUILTIN_PCOMEQD): Ditto.
1910 (IX86_BUILTIN_PCOMNED): Ditto.
1911 (IX86_BUILTIN_PCOMLTD): Ditto.
1912 (IX86_BUILTIN_PCOMLED): Ditto.
1913 (IX86_BUILTIN_PCOMGTD): Ditto.
1914 (IX86_BUILTIN_PCOMGED): Ditto.
1915 (IX86_BUILTIN_PCOMFALSED): Ditto.
1916 (IX86_BUILTIN_PCOMTRUED): Ditto.
1917 (IX86_BUILTIN_PCOMEQQ): Ditto.
1918 (IX86_BUILTIN_PCOMNEQ): Ditto.
1919 (IX86_BUILTIN_PCOMLTQ): Ditto.
1920 (IX86_BUILTIN_PCOMLEQ): Ditto.
1921 (IX86_BUILTIN_PCOMGTQ): Ditto.
1922 (IX86_BUILTIN_PCOMGEQ): Ditto.
1923 (IX86_BUILTIN_PCOMFALSEQ): Ditto.
1924 (IX86_BUILTIN_PCOMTRUEQ): Ditto.
1925 (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
1926 OPTION_MASK_ISA_ROUND for instructions that are shared between
1928 (bdesc_2arg): Ditto.
1929 (bdesc_sse_3arg): Ditto.
1930 (enum multi_arg_type): New enum for describing the various SSE5
1931 intrinsic argument types.
1932 (bdesc_multi_arg): New table for SSE5 intrinsics.
1933 (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
1934 (ix86_expand_multi_arg_builtin): New function for creating SSE5
1936 (ix86_expand_builtin): Add SSE5 intrinsic support.
1937 (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
1938 operand instructions.
1939 (ix86_expand_sse5_multiple_memory): New function to split the
1940 second memory reference from SSE5 instructions.
1941 (type_has_variadic_args_p): Delete in favor of stdarg_p.
1942 (ix86_return_pops_args): Use stdarg_p to determine if the function
1943 has variable arguments.
1944 (ix86_setup_incoming_varargs): Ditto.
1945 (x86_this_parameter): Ditto.
1947 * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
1949 (ix86_expand_sse5_pack): Ditto.
1950 (ix86_sse5_valid_op_p): Ditto.
1951 (ix86_expand_sse5_multiple_memory): Ditto.
1953 * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
1954 constant for SSE5 support.
1955 (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
1956 (UNSPEC_SSE5_TRUEFALSE): Ditto.
1957 (UNSPEC_SSE5_PERMUTE): Ditto.
1958 (UNSPEC_SSE5_ASHIFT): Ditto.
1959 (UNSPEC_SSE5_LSHIFT): Ditto.
1960 (UNSPEC_FRCZ): Ditto.
1961 (UNSPEC_CVTPH2PS): Ditto.
1962 (UNSPEC_CVTPS2PH): Ditto.
1963 (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
1965 (COM_FALSE_S): Ditto.
1966 (COM_FALSE_P): Ditto.
1967 (COM_TRUE_S): Ditto.
1968 (COM_TRUE_P): Ditto.
1969 (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
1970 (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
1972 (memory attribute): Ditto.
1973 (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
1974 Use SSE4_1_ROUND_* constants instead of hard coded numbers.
1975 (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
1976 (floor<mode>2): Ditto.
1977 (ceil<mode>2): Ditto.
1978 (btrunc<mode>2): Ditto.
1979 (nearbyintdf2): Ditto.
1980 (nearbyintsf2): Ditto.
1981 (sse_setccsf): Disable if SSE5.
1982 (sse_setccdf): Ditto.
1983 (sse5_setcc<mode>): New support for SSE5 conditional move.
1984 (sse5_pcmov_<mode>): Ditto.
1986 * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
1988 (SSEMODEF2P): Ditto.
1989 (ssemodesuffixf4): New mode attribute for SSE5.
1990 (ssemodesuffixf2s): Ditto.
1991 (ssemodesuffixf2c): Ditto.
1992 (sserotatemax): Ditto.
1993 (ssescalarmode): Ditto.
1994 (sse_maskcmpv4sf3): Disable if SSE5.
1995 (sse_maskcmpv2df3): Ditto.
1996 (sse_vmmaskcmpv4sf3): Ditto.
1997 (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
1999 (sse5_vmfmadd<mode>4): Ditto.
2000 (sse5_fmsub<mode>4): Ditto.
2001 (sse5_vmfmsub<mode>4): Ditto.
2002 (sse5_fnmadd<mode>4): Ditto.
2003 (sse5_vmfnmadd<mode>4): Ditto.
2004 (sse5_fnmsub<mode>4): Ditto.
2005 (sse5_vmfnmsub<mode>4): Ditto.
2006 (sse5i_fmadd<mode>4): Ditto.
2007 (sse5i_fmsub<mode>4): Ditto.
2008 (sse5i_fnmadd<mode>4): Ditto.
2009 (sse5i_fnmsub<mode>4): Ditto.
2010 (sse5i_vmfmadd<mode>4): Ditto.
2011 (sse5i_vmfmsub<mode>4): Ditto.
2012 (sse5i_vmfnmadd<mode>4): Ditto.
2013 (sse5i_vmfnmsub<mode>4): Ditto.
2014 (mulv16qi3): Add SSE5 support.
2016 (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
2017 (sse2_mulv4si3): Disable if SSE5.
2018 (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
2019 (sse4_1_roundps): Ditto.
2020 (sse4_1_roundsd): Ditto.
2021 (sse4_1_roundss): Ditto.
2022 (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
2024 (sse_maskcmpsf3): Ditto.
2025 (sse_vmmaskcmpv4sf3): Ditto.
2026 (sse2_maskcmpv2df3): Ditto.
2027 (sse2_maskcmpdf3): Ditto.
2028 (sse2_vmmaskcmpv2df3): Ditto.
2029 (sse2_eq<mode>3): Ditto.
2030 (sse2_gt<mode>3): Ditto.
2031 (sse5_pcmov_<mode>): Add SSE5 support.
2032 (vec_unpacku_hi_v16qi): Ditto.
2033 (vec_unpacks_hi_v16qi): Ditto.
2034 (vec_unpacku_lo_v16qi): Ditto.
2035 (vec_unpacks_lo_v16qi): Ditto.
2036 (vec_unpacku_hi_v8hi): Ditto.
2037 (vec_unpacks_hi_v8hi): Ditto.
2038 (vec_unpacku_lo_v8hi): Ditto.
2039 (vec_unpacks_lo_v8hi): Ditto.
2040 (vec_unpacku_hi_v4si): Ditto.
2041 (vec_unpacks_hi_v4si): Ditto.
2042 (vec_unpacku_lo_v4si): Ditto.
2043 (vec_unpacks_lo_v4si): Ditto.
2044 (sse5_pmacsww): New SSE5 intrinsic insn.
2045 (sse5_pmacssww): Ditto.
2046 (sse5_pmacsdd): Ditto.
2047 (sse5_pmacssdd): Ditto.
2048 (sse5_pmacssdql): Ditto.
2049 (sse5_pmacssdqh): Ditto.
2050 (sse5_pmacsdqh): Ditto.
2051 (sse5_pmacsswd): Ditto.
2052 (sse5_pmacswd): Ditto.
2053 (sse5_pmadcsswd): Ditto.
2054 (sse5_pmadcswd): Ditto.
2055 (sse5_pcmov_<move>): Conditional move support on SSE5.
2056 (sse5_phaddbw): New SSE5 intrinsic insn.
2057 (sse5_phaddbd): Ditto.
2058 (sse5_phaddbq): Ditto.
2059 (sse5_phaddwd): Ditto.
2060 (sse5_phaddwq): Ditto.
2061 (sse5_phadddq): Ditto.
2062 (sse5_phaddubw): Ditto.
2063 (sse5_phaddubd): Ditto.
2064 (sse5_phaddubq): Ditto.
2065 (sse5_phadduwd): Ditto.
2066 (sse5_phadduwq): Ditto.
2067 (sse5_phaddudq): Ditto.
2068 (sse5_phsubbw): Ditto.
2069 (sse5_phsubwd): Ditto.
2070 (sse5_phsubdq): Ditto.
2071 (sse5_pperm): Ditto.
2072 (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
2073 (sse5_pperm_zero_v16qi_v8hi): Ditto.
2074 (sse5_pperm_sign_v8hi_v4si): Ditto.
2075 (sse5_pperm_zero_v8hi_v4si): Ditto.
2076 (sse5_pperm_sign_v4si_v2di): Ditto.
2077 (sse5_pperm_sign_v4si_v2di): Ditto.
2078 (sse5_pperm_pack_v2di_v4si): Ditto.
2079 (sse5_pperm_pack_v4si_v8hi): Ditto.
2080 (sse5_pperm_pack_v8hi_v16qi): Ditto.
2081 (sse5_perm<mode>): New SSE5 intrinsic insn.
2082 (rotl<mode>3): Ditto.
2083 (sse5_rotl<mode>3): Ditto.
2084 (sse5_ashl<mode>3): Ditto.
2085 (sse5_lshl<mode>3): Ditto.
2086 (sse5_frcz<mode>2): Ditto.
2087 (sse5s_frcz<mode>2): Ditto.
2088 (sse5_cvtph2ps): Ditto.
2089 (sse5_cvtps2ph): Ditto.
2090 (sse5_vmmaskcmp<mode>3): Ditto.
2091 (sse5_com_tf<mode>3): Ditto.
2092 (sse5_maskcmp<mode>3): Ditto.
2093 (sse5_maskcmp_uns<mode>3): Ditto.
2094 (sse5_maskcmp_uns2<mode>3): Ditto.
2095 (sse5_pcom_tf<mode>3): Ditto.
2097 * config/i386/predicates.md (const_0_to_31_operand): New predicate
2099 (sse5_comparison_float_operator): New predicate to match the
2100 comparison operators supported by the SSE5 com instruction.
2101 (ix86_comparison_int_operator): New predicate to match just the
2102 signed int comparisons.
2103 (ix86_comparison_uns_operator): New predicate to match just the
2104 unsigned int comparisons.
2106 * doc/invoke.texi (-msse5): Add documentation.
2107 (-mfused-madd): Ditto.
2109 * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
2111 * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
2113 (x86_64-*-*): Ditto.
2115 * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
2117 * config/i386/bmmintrin.h: New file, provide common x86 compiler
2118 intrinisics for SSE5.
2120 * config/i386/smmintrin.h: Move instructions shared with SSE5 to
2123 * config/i386/mmintrin-common.h: New file, to contain common
2124 instructions between SSE4.1 and SSE5.
2126 * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
2127 FOREACH_FUNCTION_ARGS to iterate over the argument list.
2128 (gen_regparm_prefix): Ditto.
2130 * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
2131 FOREACH_FUNCTION_ARGS to iterate over the argument list. Use
2132 prototype_p to determine if a function is prototyped.
2134 2007-09-12 Janis Johnson <janis187@us.ibm.com>
2136 * config/dfp-bit.c (dfp_conversion_exception): New function.
2137 (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
2138 (DFP_TO_INT): Ditto.
2139 (INT_TO_DFP): Ditto.
2140 * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
2142 2007-09-12 Jakub Jelinek <jakub@redhat.com>
2145 * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
2146 before sp restoration even when total_size is 0, but
2147 frame_pointer_needed.
2149 2007-09-12 Bob Wilson <bob.wilson@acm.org>
2151 * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
2152 (xtensa_copy_incoming_a7): Use start_sequence instead of
2153 push_to_sequence. Stash insns in vararg_a7_copy for builtin_saveregs.
2154 (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
2155 of the saveregs sequence.
2157 2007-09-12 Richard Sandiford <richard@codesourcery.com>
2159 * c-tree.h (grokfield): Add a "tree *" argument.
2160 * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
2161 Chain nested decl attributes to it. Don't call decl_attributes here.
2162 (groktypename): Pass grokdeclarator a pointer to the attribute list.
2163 (start_decl, grokparm, push_parm_decl, start_function): Likewise.
2164 (grokfield): Take a pointer to the decl's attributes and pass
2165 it to grokdeclarator.
2166 * c-parser.c (c_parser_struct_declaration): Update the calls to
2167 grokfield. Call decl_attributes for anonymous struct and union
2170 2007-09-12 Jan Hubicka <jh@suse.cz>
2172 * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
2174 2007-09-12 Ira Rosen <irar@il.ibm.com>
2176 PR tree-optimization/32377
2177 * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
2178 between positive and negative dependence distance using DDR_REVERSED_P.
2180 2007-09-12 Dorit Nuzman <dorit@il.ibm.com>
2182 PR tree-optimization/33373
2183 * tree-vect-analyze (vect_determine_vectorization_factor): Call
2184 TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT.
2186 2007-09-12 Jan Hubicka <jh@suse.cz>
2189 * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
2192 2007-09-12 Christian Bruel <christian.bruel@st.com>
2194 * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
2195 * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed.
2197 2007-09-12 Ira Rosen <irar@il.ibm.com>
2199 * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
2200 for oprnd1 if not required.
2201 (vectorizable_operation): Use scalar operand in SLP in case of
2202 shift with scalar argument.
2204 2007-09-12 Ira Rosen <irar@il.ibm.com>
2206 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum
2209 2007-09-11 James E. Wilson <wilson@specifix.com>
2211 * defaults.h (DWARF2_UNWIND_INFO): Don't define if
2212 TARGET_UNWIND_INFO is defined.
2213 * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
2216 2007-09-12 Kaz Kojima <kkojima@gcc.gnu.org>
2218 * config/sh/sh.c (calc_live_regs): Use
2219 current_function_saves_all_registers instead of
2220 current_function_has_nonlocal_label.
2221 (sh_allocate_initial_value): Likewise.
2222 (sh_get_pr_initial_val): Likewise.
2223 * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
2224 * config/sh/sh.md (load_ra): Likewise.
2226 2007-09-12 Hans-Peter Nilsson <hp@axis.com>
2228 * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
2231 * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
2232 GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
2234 2007-09-12 Sa Liu <saliu@de.ibm.com>
2236 * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
2237 operands to DFmode GE or LE compares.
2239 2007-09-12 Bernd Schmidt <bernd.schmidt@analog.com>
2241 * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
2242 REG_CLASS_NAMES): Add P0REGS.
2243 (REGNO_REG_CLASS): Return it where appropriate.
2244 (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
2245 (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
2246 * doc/md.texi (Blackfin family): Document 'q' constraints.
2248 2007-09-11 Steve Kenton <skenton@ou.edu>
2250 * pa/linux-unwind.h: Guard with inhibit_libc.
2251 * pa/hpux-unwind.h: Likewise.
2253 2007-09-11 David Daney <ddaney@avtrex.com>
2255 * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
2256 * doc/install.texi: Document new --with-llsc and --without-llsc
2258 * config.gcc: Handle --with-llsc and --without-llsc configure options.
2259 * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
2260 in %| and %- operand codes. Depend on GENERATE_SYNC instead of
2262 (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
2263 sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2264 sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2265 sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2266 sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
2267 GENERATE_LL_SC instead of ISA_HAS_LL_SC.
2268 * config/mips/mips.opt (mllsc): New option.
2269 * config/mips/mips.c (mips_llsc): Define variable.
2270 (mips_handle_option): Handle mllsc option.
2271 (override_options): Set mips_print_operand_punct for '|' and '-'.
2272 (print_operand): Add new %| and %- operand codes.
2273 * config/mips/mips.h (mips_llsc_setting): New enum type.
2274 (mips_llsc): Declare.
2275 (OPTION_DEFAULT_SPECS): Add llsc handling.
2276 (GENERATE_SYNC): New macro.
2277 (GENERATE_LL_SC): New macro.
2278 (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
2279 MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2280 MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
2281 in %| and %- operand codes.
2283 2007-09-11 Eric Botcazou <ebotcazou@adacore.com>
2285 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
2286 TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
2288 2007-09-11 Jason Merrill <jason@redhat.com>
2291 * stor-layout.c (layout_decl): Do pack variable size fields.
2293 2007-09-11 Maxim Kuvyrkov <maxim@codesourcery.com>
2295 * config/m68k/predicates.md (movsi_const0_operand,
2296 non_symbolic_call_operand): New predicates.
2298 * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
2300 * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
2301 Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
2302 CW, CZ, CS, Ap and Ac.
2304 * config/m68k/m68k.md (UNSPEC_IB): New constant.
2305 (constraints.md): New include.
2306 (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
2307 opx_mem, opy_mem, op_mem, guess, split): New attributes.
2308 (movdf_internal): Name pattern. Fix to use alternatives. Add split.
2310 (pushdi): Add split.
2311 (tstsi_internal): Name pattern. Fix to use alternatives. Specify
2312 attributes. Split tstsi_internal_68020_cf from it.
2313 (tstsi_internal_68020_cf): New pattern.
2314 (tsthi_internal, tstqi_internal): Name pattern. Specify attributes.
2315 (tst<mode>_cf): Specify attributea.
2316 (cmpsi_cf): Name pattern. Specify attributes.
2317 (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
2318 (pushexthisi_const): Fix to use alternatives. Specify
2320 (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
2321 from it. Fix to use alternatives. Specify attributes.
2322 (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
2323 (movsi_cf, movstrictqi_cf): Fix to use alternatives. Specify
2325 (movsf_cf_soft): Specify attributes.
2326 (movdf_cf_soft): Add split.
2327 (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
2328 cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
2329 68k_extendqisi2, truncdfsf2_cf): Specify attributes.
2330 (truncdfsf2_68881): Name pattern. Specify attributes.
2331 (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
2332 floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
2333 fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
2335 (addsi3_5200): Fix to use alternatives. Specify attributes.
2337 (add<mode>3_cf, subdi_dishl32): Specify attributes.
2338 (subsi3): Add alternative for subq.l. Specify attributes.
2339 (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
2340 (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern. Specify
2342 (umulhisi3): Specify attributes.
2343 (mulhisisi3_z): Name pattern. Specify attributes.
2344 (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
2345 sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
2346 subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
2347 bsetmemqi): Specify attributes.
2348 (bsetmemqi_ext): Name pattern. Specify attributes.
2349 (bclrmemqi): Specify attributes.
2350 (bclrmemqi_ext, scc, sls): Name pattern. Specify attributes.
2351 (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
2353 (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
2354 pattern. Specify attributes.
2355 (jump): Specify attributes.
2356 (tablejump_internal): Name pattern. Specify attributes.
2357 (call_value): Split into non_symbolic_call_value,
2358 symbolic_call_value_jsr, symbolic_call_value_bsr. Fix to use
2359 alternatives. Specify attributes.
2360 (non_symbolic_call_value, symbolic_call_value_jsr,
2361 symbolic_call_value_bsr): New patterns.
2362 (nop, return, unlink, indirect_jump): Specify attributes.
2363 (trap): Fix condition. Specify attributes.
2366 * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
2367 (override_options): Initialize it. Initialize m68k_sched_cpu.
2368 (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
2369 (const_method): Make global, rename to m68k_const_method.
2370 (const_int_cost, output_move_const_into_data_reg): Update.
2371 (output_move_double): Parametrize to emit rtl code, rename to
2373 (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
2374 emit_movsi): New static functions.
2375 (output_move_double): New function with semantics of old
2377 (m68k_emit_move_double): New function.
2378 (m68k_sched_cpu): New variable.
2379 (attr_op_type): New enum.
2380 (sched_guess_p): New variable.
2381 (sched_address_type, sched_operand_type, sched_attr_op_type):
2382 New static functions.
2383 (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2384 m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
2385 (sched_branch_type): New static variable.
2386 (m68k_sched_branch_type): New function.
2387 * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
2388 (m68k_symbolic_call_var): Declare.
2389 (M68K_CONST_METHOD): Rename from CONST_METHOD. Move here from m68k.c.
2390 (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
2391 m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2392 m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
2395 2007-09-11 Jakub Jelinek <jakub@redhat.com>
2397 * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
2398 * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
2399 error if __builtin_va_arg_pack_len () wasn't optimized out during
2401 * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
2402 with the number of inline's anonymous arguments.
2403 * doc/extend.texi: Document __builtin_va_arg_pack_len ().
2405 2007-09-11 Zdenek Dvorak <ook@ucw.cz>
2407 * fold-const.c (extract_muldiv_1): Do not simplify
2410 2007-09-11 Jan Hubicka <jh@suse.cz>
2412 * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
2413 (TARGET_INTER_UNIT_CONVERSIONS): New.
2414 * i386.md (floatsi expanders): Remove redundant check for SImode
2415 source; offload to memory when asked for.
2416 (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
2417 floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2419 (floatsisf2_mixed_memory, floatsisf2_sse_memory,
2420 floatsidf2_mixed_memory, floatsidf2_sse_memory
2421 floatdisf2_mixed_memory, floatsisf2_sse_memory,
2422 floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
2424 2007-09-11 Jan Hubicka <jh@suse.cz>
2426 * toplev.c (process_options): all frontends now do unit-at-a-time.
2427 * cgraphunit.c: update comments.
2428 (cgraph_expand_function): call passmanager dirrectly; emit thunks.
2429 * c-decl.c (finish_function): use cgraph_add_new_function.
2430 * function.c (expand_function_end): We are always unit-at-a-time.
2432 2007-09-11 Richard Sandiford <richard@codesourcery.com>
2434 * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
2435 settings for MIPS16.
2436 (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
2438 2007-09-11 Richard Sandiford <richard@codesourcery.com>
2440 * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
2441 SYMBOL_FORCE_TO_MEM constants.
2442 (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
2443 (mips16_rewrite_pool_refs_info): New structure.
2444 (mips16_rewrite_pool_constant): New function, split out from...
2445 (mips16_rewrite_pool_refs): ...here. Take a pointer to a
2446 mips16_rewrite_pool_refs_info structure rather than a pointer
2447 to a constant pool. Force force_to_mem_operands into memory.
2448 (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
2449 * config/mips/predicates.md (force_to_mem_operand): New predicate.
2450 * config/mips/constraints.md (kf): New constraint.
2451 * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
2452 (*movsi_mips16): Likewise.
2454 2007-09-11 Richard Sandiford <richard@codesourcery.com>
2455 Nigel Stephens <nigel@mips.com>
2456 David Ung <davidu@mips.com>
2458 * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
2459 * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
2460 (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
2461 (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
2462 (mips_zero_extend_cost): New functions.
2463 (mips_rtx_costs): Treat COMPARE constants as having zero cost.
2464 Use the new functions. Tweak many cost estimates, both here
2465 and in the new subroutines. Return false when the cost of the
2466 operands has not been calculated. Check for *clear_upper32.
2467 Check for floating-point multiply-add, reciprocal and rsqrt
2468 patterns. Handle comparison and rotation codes.
2470 2007-09-11 Danny Smith <dannysmith@users.sourceforge.net>
2472 * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
2474 * config/i386/i386.c (get_dllimport_decl): Don't strip
2477 2007-09-10 Janis Johnson <janis187@us.ibm.com>
2480 * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
2481 declarations to top.
2482 (DFP_TO_BFP): Use for either XFmode or TFmode.
2483 (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
2485 * config/dfp-bit.h: Include float.h.
2486 (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
2487 double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
2488 which doesn't mean the same thing.
2489 (BFP_KIND): Use 4 to mean TFmode.
2490 (BFP_FMT): Specify the number of decimal digits based on the
2491 number of mantissa digits.
2492 (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
2493 (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
2494 (STR_TO_BFP): Use strtold for XFmode or TFmode.
2495 (TFtype): Define if TFmode is supported.
2496 * doc/libgcc.texi (Decimal float library routines): Document
2497 TF conversion functions.
2499 2007-09-10 Chao-ying Fu <fu@mips.com>
2501 * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
2502 (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
2503 (mips_emit_compare): Process fixed-point modes.
2504 (mips_pad_arg_upward): Support fixed-point types.
2505 (override_options): Allow fixed-point modes in accumulators.
2506 (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
2507 (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
2508 V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
2509 (mips_scalar_mode_supported_p): New function to accept fixed-point
2510 modes if the width is not greater than two BITS_PER_WORD.
2511 * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2512 LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2513 SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2514 LONG_LONG_ACCUM_TYPE_SIZE): Define.
2515 * config/mips/mips.md ("d"): Update mode attribute for fixed-point
2517 ("IMODE"): New mode attribute.
2518 (mips-fixed.md): Include.
2519 * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
2521 * config/mips/mips-fixed.md: New file.
2523 2007-09-11 Ben Elliston <bje@au.ibm.com>
2525 * config/spu/spu.md: Formatting fixes.
2527 2007-09-10 Janis Johnson <janis187@us.ibm.com>
2529 * config/dfp-bit.c (dfp_unary_func): Delete.
2530 (dfp_unary_op): Delete.
2531 (dfp_binary_op): Use decFloat functions instead of decNumber
2532 functions for binary operations.
2533 (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
2534 (dnn_binary_op): Call dfp_binary_op with decFloat rather than
2536 (dfp_compare_op): Use decFloat functions insteadof decNumber
2537 functions for comparisons.
2538 (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
2539 (dnn_binary_op): Call dfp_compare_op with decFloat rather than
2541 (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
2542 call to dxx_binary_op and decFloat function.
2543 (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
2544 calls to dxx_binary_op and decFloat function.
2545 * config/dfp-bit.h: Include decFloat header files.
2546 (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
2547 DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
2548 DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
2549 DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
2551 2007-09-10 Harsha Jagasia <harsha.jagasia@amd.com>
2552 Jan Sjodin <jan.sjodin@amd.com>
2554 * tree-vect-analyze.c (vect_analyze_operations): Change
2555 comparison of loop iterations with threshold to less than
2556 or equal to instead of less than. Reduce
2557 min_scalar_loop_bound by one.
2558 * tree-vect-transform.c (vect_estimate_min_profitable_iters):
2559 Change prologue and epilogue iterations estimate to vf/2,
2560 when unknown at compile-time. Change versioning guard
2561 cost to taken_branch_cost. If peeling for alignment is
2562 unknown at compile-time, change peel guard costs to one
2563 taken branch and one not-taken branch per peeled loop.
2564 If peeling for alignment is known but number of scalar loop
2565 iterations is unknown at compile-time, change peel guard
2566 costs to one taken branch per peeled loop. Change the cost
2567 model equation to consider vector iterations as the loop
2568 iterations less the prologue and epilogue iterations.
2569 Change outside vector cost check to less than or equal to
2570 zero instead of equal to zero.
2571 (vect_do_peeling_for_loop_bound): Reduce
2572 min_scalar_loop_bound by one.
2573 * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
2574 TARG_COND_NOT_TAKEN_BRANCH_COST.
2575 * config/i386/i386.h (processor_costs): Add
2576 scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
2577 vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
2578 vec_align_load_cost, vect_unalign_load_cost,
2579 vec_store_cost, cond_taken_branch_cost,
2580 cond_not_taken_branch_cost.
2581 Define macros for x86 costs.
2582 * config/i386/i386.c:
2583 (size_cost): Set scalar_stmt_cost, scalar_load_cost,
2584 scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
2585 scalar_to_vec_cost, vec_align_load_cost,
2586 vect_unalign_load_cost, vec_store_cost,
2587 cond_taken_branch_cost, cond_not_taken_branch_cost to one.
2588 (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
2589 geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost,
2590 core2_cost, generic64_cost, generic32_cost): Set to default
2592 (k8_cost, amdfam10_cost): Costs for vectorization tuned.
2593 (x86_builtin_vectorization_cost): New.
2595 2007-09-10 Janis Johnson <janis187@us.ibm.com>
2596 Ben Elliston <bje@au.ibm.com>
2598 * dfp.c: Include decimal128Local.h;
2599 (dfp_byte_swap): Remove.
2600 (encode_decimal32, decode_decimal32): Don't handle endianness.
2601 (encode_decimal64, decode_decimal64): Ditto.
2602 (encode_decimal128, decode_decimal128): Ditto.
2603 * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
2605 (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
2607 (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
2608 * Makefile.in (DECNUM_H): Add decimal128Local.h.
2610 2007-09-10 David Daney <ddaney@avtrex.com>
2612 * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
2614 (memory_barrier): Rewrote as an insn that clobbers memory.
2616 2007-09-10 Richard Sandiford <richard@codesourcery.com>
2618 * config/mips/mips.c (mips_global_pointer): Check
2619 call_really_used_regs instead of call_used_regs.
2620 (mips_save_reg_p): Likewise. Save all call-saved registers
2621 if current_function_saves_all_registers. Fix indentation.
2622 No longer treat $18 as a special case.
2623 (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
2625 2007-09-10 Richard Sandiford <richard@codesourcery.com>
2627 * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
2628 * config/mips/mips.c (mips_cpu_info_table): Mention it in the
2629 the introductory comment.
2630 (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2631 (override_options): Don't test for it.
2632 * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2633 (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
2634 * config/mips/vr.h: As for config/mips/sde.h.
2636 2007-09-10 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
2637 Revital Eres <eres@il.ibm.com>
2639 * target.h (struct gcc_target.sched): New field: sms_res_mii.
2640 (struct ddg): Define.
2641 * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
2642 (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
2643 * config/spu/spu.c: Include ddg.h.
2644 (TARGET_SCHED_SMS_RES_MII): Define.
2645 (spu_sms_res_mii): New function to calculate mii.
2646 * modulo-sched (res_MII): Use it.
2647 * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
2649 2007-09-10 Andreas Krebbel <krebbel1@de.ibm.com>
2651 * config/s390/s390.c (s390_dump_pool): Create copy of constant
2652 pool entries since they might hold values that must not be shared.
2654 2007-09-10 Uros Bizjak <ubizjak@gmail.com>
2657 * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
2658 Use 'N' operand constraint for op2.
2659 (lshr<mode>3): Ditto.
2660 (ashl<mode>3): Ditto.
2661 (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
2662 (vec_shr_<mode>): Ditto.
2663 * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
2664 IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
2666 2007-09-10 Andreas Krebbel <krebbel1@de.ibm.com>
2668 * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
2669 Change mode macro in the last real_2expN parameter to uppercase.
2671 2007-09-10 Michael Matz <matz@suse.de>
2673 * tree-pass.h (pass_cselim): Declare new pass.
2674 * passes.c (init_optimization_passes): Link in pass_cselim.
2675 * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
2676 tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
2677 cond_store_replacement.
2678 (condstoretemp): New static variable.
2679 (cond_store_replacement): New function.
2680 (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
2681 tree_ssa_phiopt_worker.
2682 (struct name_to_bb): New.
2683 (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
2684 nt_init_block, nt_fini_block): New static functions.
2685 (seen_ssa_names, nontrap_set): New static variables.
2686 (gate_cselim, pass_cselim): Define new pass.
2687 * common.opt (ftree-cselim): New flag.
2688 * toplev.c (process_options): Set flag_tree_cselim if required.
2690 2007-09-10 Hans-Peter Nilsson <hp@axis.com>
2692 * simplify-rtx.c (simplify_relational_operation_1): For recent
2693 canonicalization, don't recurse if op1 equals both PLUS arguments.
2695 2007-09-09 David Daney <ddaney@avtrex.com>
2697 * optabs.c (expand_sync_operation): Use plus insn if minus
2699 (expand_sync_fetch_operation): Ditto.
2701 2007-09-09 H.J. Lu <hongjiu.lu@intel.com>
2703 * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
2705 (*floatsisf2_sse_vector): Likewise.
2707 2007-09-09 Krister Walfridsson <cato@df.lth.se>
2709 * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2711 2007-09-09 H.J. Lu <hongjiu.lu@intel.com>
2713 * config/i386/i386.h (ix86_tune_indices): Rename
2714 X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
2715 (TARGET_USE_VECTOR_CONVERTS): Updated.
2716 * config/i386/i386.c: Likewise.
2718 2007-09-09 Sandra Loosemore <sandra@codesourcery.com>
2719 Nigel Stephens <nigel@mips.com>
2721 * doc/invoke.texi (Overall Options): Add .sx file extension
2722 as a synonym for .S.
2723 * cppspec.c (known_suffixes): Likewise.
2724 * gcc.c (default_compilers): Likewise.
2726 2007-09-09 Rask Ingemann Lambertsen <rask@sygehus.dk>
2729 * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
2730 * simplify-rtx.c (simplify_relational_operation_1): Add the
2731 canonicalization from i386.h.
2732 * doc/md.texi (Canonicalization of Instructions): Document it.
2734 2007-09-09 Jan Hubicka <jh@suse.cz>
2735 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2737 * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
2738 (TARGET_USE_VECTOR_CONVERTS): New.
2739 * i386.md: New post-reload splitters for converting SF to DF and DF to
2741 (floatsi* expander): Special case vector conversions.
2742 (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
2743 floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
2744 floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
2745 (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2746 Disable when doing vector converts.
2747 (floatsi<mode>2_i387): Disable when
2748 * sse.md (vec_dupv2df): Export.
2749 * i386.c (ix86_tune_features): Enable SSE conversions.
2751 2007-09-09 Richard Guenther <rguenther@suse.de>
2753 * tree-ssa-operands.c (add_virtual_operand): Only mark
2754 stores as has_volatile_ops if alias information is not available.
2756 2007-09-09 Revital Eres <eres@il.ibm.com>
2758 * doc/contrib.texi: Add myself.
2760 2007-09-09 Ira Rosen <irar@il.ibm.com>
2762 * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
2763 stmt_vinfo_set_outside_of_loop_cost): New functions.
2764 * tree-vect-transform.c (vect_get_cost_fields): Remove.
2765 (vect_model_simple_cost): Call
2766 stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
2767 field instead of calling vect_get_cost_fields.
2768 (vect_model_store_cost, vect_model_load_cost): Likewise.
2770 2007-09-09 Revital Eres <eres@il.ibm.com>
2772 * config/rs6000/rs6000.c (paired_init_builtins): Add const
2773 declaration to bdesc_paired_preds variable.
2774 (paired_expand_builtin): Likewise.
2776 2007-09-09 Revital Eres <eres@il.ibm.com>
2778 * dbgcnt.def (sms_sched_loop): New counter.
2779 * modulo-sched.c: Use sms_sched_loop instead of
2780 MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
2781 perform swing modulo scheduling on. Include dbgcnt.h.
2782 * Makefile.in: Add DBGCNT_H to modulo-sched.o.
2783 * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
2785 2007-09-09 Uros Bizjak <ubizjak@gmail.com>
2787 * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
2788 Substitute all uses with ...
2789 (MODEF): New mode iterator.
2791 (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
2792 from pre-regalloc define_insn_and_split splitter pattern.
2793 (*fix_trunc<mode>_i387_1): Ditto.
2794 (*fistdi2_1): Ditto.
2795 (*fist<mode>2_1): Ditto.
2796 (frndintxf2_floor): Ditto.
2797 (*fist<mode>2_floor_1): Ditto.
2798 (frndintxf2_ceil): Ditto.
2799 (*fist<mode>2_ceil_1): Ditto.
2800 (frndintxf2_trunc): Ditto.
2801 (frndintxf2_mask_pm): Ditto.
2803 (prologue): Use (const_int 0) as never generated filler insn.
2805 (sibcall_epilogue): Ditto.
2806 (eh_return_si): Ditto.
2807 (eh_return_di): Ditto.
2809 (add<mode>3): Rename from adddf3 and addsf3. Macroize expander
2810 using MODEF mode iterator.
2811 (sub<mode>3): Rename from subdf3 and subsf3. Macroize expander
2812 using MODEF mode iterator.
2813 (mul<mode>3): Rename from muldf3 and mulsf3. Macroize expander
2814 using MODEF mode iterator.
2815 (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
2816 Macroize expander using MODEF mode iterator.
2818 (zero_extendsidi2): Remove operand constraints from expander.
2819 (smuldi3_highpart): Ditto.
2820 (indirect_jump): Ditto.
2823 * config/i386/sse.md (storentv4sf): Ditto.
2824 (storentv2df): Ditto.
2825 (storentv2di): Ditto.
2827 (sse2_cvtpd2ps): Ditto.
2828 (vec_interleave_highv16qi): Ditto.
2829 (vec_interleave_lowv16qi): Ditto.
2830 (vec_interleave_highv8hi): Ditto.
2831 (vec_interleave_lowv8hi): Ditto.
2832 (vec_interleave_highv4si): Ditto.
2833 (vec_interleave_lowv4si): Ditto.
2834 (vec_interleave_highv2di): Ditto.
2835 (vec_interleave_lowv2di): Ditto.
2836 (sse2_maskmovdqu): Ditto.
2837 * config/i386/mmx.md (mmx_maskmovq): Ditto.
2839 2007-09-09 Ira Rosen <irar@il.ibm.com>
2841 * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
2842 (struct _slp_tree, struct _slp_instance): Define new data structures
2843 along macros for their access.
2844 (struct _loop_vec_info): Define new fields: strided_stores,
2845 slp_instances, and slp_unrolling_factor along macros for their access.
2846 (enum slp_vect_type): New.
2847 (struct _stmt_vec_info): Define new field, slp_type, and macros for
2849 (STMT_VINFO_STRIDED_ACCESS): New macro.
2850 (vect_free_slp_tree): Declare.
2851 (vectorizable_load): Add an argument of type slp_tree.
2852 (vectorizable_store, vectorizable_operation, vectorizable_conversion,
2853 vectorizable_assignment): Likewise.
2854 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
2855 Declare (make extern).
2856 * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
2857 (new_loop_vec_info): Likewise.
2858 (destroy_loop_vec_info): Free memory allocated for SLP structures.
2859 * tree-vect-analyze.c: Include recog.h.
2860 (vect_update_slp_costs_according_to_vf): New.
2861 (vect_analyze_operations): Add argument for calls to vectorizable_ ()
2862 functions. For not pure SLP stmts with strided access check that the
2863 group size is power of 2. Update the vectorization factor according to
2864 SLP. Call vect_update_slp_costs_according_to_vf.
2865 (vect_analyze_group_access): New.
2866 (vect_analyze_data_ref_access): Call vect_analyze_group_access.
2867 (vect_free_slp_tree): New functions.
2868 (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
2869 vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
2870 vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
2871 vect_detect_hybrid_slp): Likewise.
2872 (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
2873 and vect_detect_hybrid_slp.
2874 * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
2875 SLP costs into account.
2876 (vect_get_cost_fields): New function.
2877 (vect_model_simple_cost): Make extern, add SLP parameter and handle
2879 (vect_model_store_cost, vect_model_load_cost): Likewise.
2880 (vect_get_constant_vectors): New function.
2881 (vect_get_slp_vect_defs, vect_get_slp_defs,
2882 vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
2883 vect_get_vec_defs): Likewise.
2884 (vectorizable_reduction): Don't handle SLP for now.
2885 (vectorizable_call): Don't handle SLP for now. Add argument to
2886 vect_model_simple_cost.
2887 (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
2888 get SLPed and vectorized defs). Fix indentation and spacing.
2889 (vectorizable_assignment): Handle SLP.
2890 (vectorizable_induction): Don't handle SLP for now.
2891 (vectorizable_operation): Likewise.
2892 (vectorizable_type_demotion): Add argument to
2893 vect_model_simple_cost.
2894 (vectorizable_type_promotion): Likewise.
2895 (vectorizable_store, vectorizable_load): Handle SLP.
2896 (vectorizable_condition): Don't handle SLP for now.
2897 (vect_transform_stmt): Add a new argument for SLP. Check that there is
2898 no SLP transformation required for unsupported cases. Add SLP
2899 argument for supported cases.
2900 (vect_remove_stores): New function.
2901 (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
2902 (vect_transform_loop): Schedule SLP instances.
2903 * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
2905 2007-09-09 Andrew Haley <aph@redhat.com>
2907 * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
2910 2007-09-09 Hans-Peter Nilsson <hp@axis.com>
2912 Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
2913 * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
2914 Similar for what label_refs can go in the JUMP_TARGET field. Split
2915 REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
2916 * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
2917 REG_LABEL when replacing an operand with a LABEL_REF for a
2919 (subst_reloads): When replacing a LABEL_REG with a register,
2920 instead of generating a REG_LABEL note, assert that there already
2921 is one or that the label is a known target for the insn.
2922 * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
2923 note, check the JUMP_LABEL field. Remove "else" after return.
2924 * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
2925 cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
2926 (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
2927 REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
2928 insns. Iterate over all notes; don't assume there's only one.
2929 * cse.c (recorded_label_ref): Adjust comment to refer to
2931 (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
2932 insns, not just NONJUMP_INSN_P.
2933 (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
2934 isn't a jump target.
2935 * jump.c (rebuild_jump_labels): Adjust head comment.
2936 (init_label_info): Ditto. Remove REG_LABEL_OPERAND notes only;
2937 don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
2938 (mark_all_labels): For JUMP_P insns without a target, check if the
2939 the target is noted on the previous nonjump insn.
2940 (mark_jump_label_1): New function, guts from mark_jump_label.
2941 <case IF_THEN_ELSE>: Handle first operand as a non-target when
2942 marking jump target labels.
2943 <case LABEL_REF>: Adjust for whether to generate a
2944 REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
2945 For 'E' format rtl, iterate in descending element order.
2946 (delete_related_insns): Handle both REG_LABEL_TARGET and
2947 REG_LABEL_OPERAND notes. For JUMP_P insns with labels with zero
2948 reference count, delete and fallthrough. Move finding-next-
2949 non-deleted insn last in the function. Look at all INSN_P insns
2950 for REG_LABEL_OPERAND notes.
2951 (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
2953 * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
2954 JUMP_LABEL, output the INSN_UID of it.
2955 * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
2956 and/or REG_LABEL_TARGET.
2957 (add_label_notes): Only add REG_LABEL_OPERAND notes. Put in line
2958 with jump.c copy by only adding notes for labels actually
2959 referenced in the insn.
2960 * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
2961 usage count increment; handle all INSN_P trial insns.
2962 (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
2964 * rtl.h (struct rtx_def) <volatil>: Adjust to mention
2965 REG_LABEL_TARGET and REG_LABEL_OPERAND.
2966 (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
2968 * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
2969 JUMP_P insns and REG_LABEL_OPERAND everywhere.
2970 * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
2971 on all INSN_P insns.
2972 * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
2973 * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
2974 REG_LABEL_OPERAND notes.
2975 * reload1.c (calculate_needs_all_insns): Adjust comments.
2976 (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
2977 * config/alpha/alpha.md (split for load of an address into a
2978 four-insn sequence on Unicos/Mk): Adjust to use
2980 * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
2982 2007-09-09 Laurynas Biveinis <laurynas.biveinis@gmail.com>
2985 2007-09-05 Laurynas Biveinis <laurynas.biveinis@gmail.com>
2986 * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
2987 FOR_BB_INSNS_SAFE instead of for loop.
2988 * cse.c (cse_extended_basic_block): Likewise.
2989 * postreload.c (reload_cse_regs_1): New variable next. Make sure
2990 that the for loop does not invoke NEXT_INSN on a deleted insn.
2991 * function.c (instantiate_virtual_regs): Likewise.
2992 * lower-subreg.c (remove_retval_note): Likewise.
2993 (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
2995 * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
2997 * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
2998 insn, if it's a jump.
2999 (try_redirect_by_replacing_jump): New variable jump_p. Call
3000 tablejump_p before delete_insn_chain.
3001 * reload1.c (reload): New variable next. Make sure that the for
3002 loop does not invoke NEXT_INSN on a deleted insn.
3003 (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3004 (delete_output_reload): New variable prev. Make sure the the for
3005 loops do not invoke PREV_INSN on a deleted insn.
3007 2007-09-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
3009 * pa/constraints.md: Remove 'X' from unused letters comment.
3011 2007-09-08 Richard Guenther <rguenther@suse.de>
3013 * tree-tailcall.c (find_tail_calls): If we don't have aliases
3014 computed check stmt_ann->references_memory instead of counting
3017 2007-09-08 Segher Boessenkool <segher@kernel.crashing.org>
3019 * cse.c (fold_rtx): Use validate_unshare_change() instead of
3020 validate_change() in one more case.
3022 2007-09-08 Zdenek Dvorak <ook@ucw.cz>
3024 PR tree-optimization/32283
3025 * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
3026 estimated_loop_iterations.
3027 (determine_use_iv_cost_condition): Decrease cost of expressions
3028 used in iv elimination.
3030 2007-09-08 Richard Guenther <rguenther@suse.de>
3032 * tree-cfg.c (verify_gimple_expr): Avoid building new
3033 pointer types, use TYPE_POINTER_TO if available instead.
3035 2007-09-08 Uros Bizjak <ubizjak@gmail.com>
3038 PR rtl-optimization/26449
3039 * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
3040 (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
3042 (mulv16qi3): Implement as define_insn_and_split pattern instead of
3043 define_expand. Split insn in split1 pass.
3046 2007-09-08 Dorit Nuzman <dorit@il.ibm.com>
3048 PR tree-optimization/33301
3049 * tree-vect-analyze (analyze_operations): Look at the type of the rhs
3052 2007-09-07 Zdenek Dvorak <ook@ucw.cz>
3054 PR tree-optimization/32183
3055 * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
3057 * tree-ssa-reassoc.c: Include cfgloop.h.
3058 (is_reassociable_op): Add a loop argument and return true only
3060 (linearize_expr): Updated.
3061 (should_break_up_subtract): Likewise.
3062 (linearize_expr_tree): Likewise.
3063 (init_reassoc): Call loop_optimizer_init with
3064 AVOID_CFG_MODIFICATIONS. Remove calculate_dominance_info call
3065 with CDI_DOMINATORS.
3066 (fini_reassoc): Call loop_optimizer_finalize.
3068 2007-09-07 Sterling Augustine <sterling@tensilica.com>
3070 * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
3071 if there is no i-cache.
3073 2007-09-07 Richard Guenther <rguenther@suse.de>
3076 2007-09-06 Richard Guenther <rguenther@suse.de>
3078 PR tree-optimization/32586
3079 * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3080 folding if nothing changed.
3081 (simplify_unary_expression): New function. Do tree combining
3082 on conversion like codes.
3083 (try_to_simplify): Call it.
3085 2007-09-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
3088 * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
3089 (__gthread_active,__gthread_start, __gthread_active_init): New.
3090 * gthr-posix95.h: Likewise.
3092 2007-09-07 Roman Zippel <zippel@linux-m68k.org>
3094 * function.h (struct function): Rename calls_unwind_init
3095 to saves_all_registers.
3096 (current_function_saves_all_registers): Renamed from
3097 current_function_calls_unwind_init.
3098 * reload1.c (reload): Set current_function_saves_all_registers.
3099 * except.c (expand_builtin_unwind_init): Likewise.
3100 * config/m68k/m68k.c (m68k_save_reg): Use
3101 current_function_saves_all_registers to save pic register.
3103 2007-09-07 Janis Johnson <janis187@us.ibm.com>
3105 config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
3106 config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
3108 Reapply reverted changes:
3110 2007-09-06 Jan Hubicka <jh@suse.cz>
3112 * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
3115 2007-09-06 Richard Sandiford <richard@codesourcery.com>
3117 * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3118 (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3120 2007-09-05 Janis Johnson <janis187@us.ibm.com>
3122 * optabs.c (expand_float): Convert unsigned integer as signed only
3123 if it provides sufficient accuracy; add mode argument to real_2expN.
3124 (expand_fix): Fix comment typos; extend binary float into mode
3125 wider than destination for converion to unsigned integer; add mode
3126 argument to real_2expN.
3127 * real.c (real_2expN): Add mode argument to special-case decimal
3129 * real.h (real_2expN): Ditto.
3130 * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3132 (fixed_from_string): Ditto.
3133 (fixed_to_decimal): Ditto.
3134 (fixed_convert_from_real): Ditto.
3135 (real_convert_from_fixed): Ditto.
3136 * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3137 * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3138 muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3139 floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3141 2007-09-07 Diego Novillo <dnovillo@google.com>
3143 * tree-flow.h (const_block_stmt_iterator): Remove.
3144 Update all users to use block_stmt_iterator.
3145 * tree-iterator.h (const_tree_stmt_iterator): Remove.
3146 Update all users to use tree_stmt_iterator.
3148 2007-09-07 Sandra Loosemore <sandra@codesourcery.com>
3150 * config/mips/mips.c (mips_set_current_function): Temporarily
3151 make this a no-op to fix bootstrap errors, pending rewrite.
3153 2007-09-07 Jan Hubicka <jh@suse.cz>
3155 * reorg.c (dbr_schedule): Move code removing placeholder USEs later
3158 2007-09-07 Dorit Nuzman <dorit@il.ibm.com>
3160 PR tree-optimization/33299
3161 * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
3162 uses for all relevant loop-exit phis, not just the first.
3164 2007-09-07 Richard Guenther <rguenther@suse.de>
3167 * tree-ssa-operands.c (access_can_touch_variable): An access
3168 of the form (*p)[0] can touch a variable of same size.
3170 2007-09-07 Jan Hubicka <jh@suse.cz>
3172 * passes.c (init_optimization_passes): Add simple dce and addressable
3174 * tree-ssa.c (execute_update_addresses_taken): New function.
3175 (pass_update_address_taken): New.
3176 * tree-ssa-dse.c (execute_simple_dse): New function.
3177 (pass_simple_dse): New.
3178 * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
3180 2007-09-07 Tobias Burnus <burnus@net-b.de>
3183 * doc/invoke.texi: Fix -Wstrict-overflow= table.
3185 2007-09-07 Richard Guenther <rguenther@suse.de>
3188 2007-09-06 Richard Guenther <rguenther@suse.de>
3190 PR tree-optimization/32586
3191 * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3192 folding if nothing changed.
3193 (simplify_unary_expression): New function. Do tree combining
3194 on conversion like codes.
3195 (try_to_simplify): Call it.
3197 2007-09-07 Richard Guenther <rguenther@suse.de>
3198 Uros Bizjak <ubizjak@gmail.com>
3200 PR tree-optimization/32821
3201 * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
3202 NULL in the call to set_bb_stmt_list.
3204 2007-09-07 Richard Sandiford <richard@codesourcery.com>
3206 * config/mips/mips.c (build_mips16_call_stub): Emit all direct
3207 float calls here, rather than leaving some to the caller.
3208 Use call_internal_direct and call_value_internal_direct.
3209 * config/mips/mips.md (call_internal_direct): New pattern.
3210 (call_value_internal_direct): Likewise.
3212 2007-09-07 Richard Sandiford <richard@codesourcery.com>
3214 * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
3215 (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
3217 (override_options): Set mips_base_move_loop_invariants.
3219 2007-09-07 Richard Sandiford <richard@codesourcery.com>
3221 * config/mips/mips.opt (mcode-readable=): Move to keep list
3224 2007-09-07 Richard Sandiford <richard@codesourcery.com>
3226 * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
3227 and -mgpopt options. Adjust the -G documentation to match.
3228 * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
3229 * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
3230 function, split out from mips_classify_symbol. Return false for
3231 !TARGET_LOCAL_SDATA.
3232 (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
3233 Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
3234 (override_options): Check whether the -mgpopt setting is consistent
3235 with the other flags.
3236 (symbolic_expression_p): Delete.
3237 (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
3238 and default_elf_select_rtx_section.
3239 (mips_in_small_data_p): Honor section attributes for MIPS16 too.
3240 Return false for local data unless TARGET_LOCAL_SDATA. Likewise
3241 external data and TARGET_EXTERN_SDATA.
3243 2007-09-07 Tobias Burnus <burnus@net-b.de>
3246 * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
3248 2007-09-05 Laurynas Biveinis <laurynas.biveinis@gmail.com>
3250 * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3251 FOR_BB_INSNS_SAFE instead of for loop.
3252 * cse.c (cse_extended_basic_block): Likewise.
3253 * postreload.c (reload_cse_regs_1): New variable next. Make sure
3254 that the for loop does not invoke NEXT_INSN on a deleted insn.
3255 * function.c (instantiate_virtual_regs): Likewise.
3256 * lower-subreg.c (remove_retval_note): Likewise.
3257 (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3259 * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3261 * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3262 insn, if it's a jump.
3263 (try_redirect_by_replacing_jump): New variable jump_p. Call
3264 tablejump_p before delete_insn_chain.
3265 * reload1.c (reload): New variable next. Make sure that the for
3266 loop does not invoke NEXT_INSN on a deleted insn.
3267 (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3268 (delete_output_reload): New variable prev. Make sure the the for
3269 loops do not invoke PREV_INSN on a deleted insn.
3271 2007-09-06 Zdenek Dvorak <ook@ucw.cz>
3273 * cgraphbuild.c (rebuild_cgraph_edges): Export.
3274 * cgraph.h (rebuild_cgraph_edges): Declare.
3275 * tree-pass.h (pass_expand_omp_ssa): New.
3276 * omp-low.c (find_omp_clause): Export.
3277 (copy_var_decl): Split from omp_copy_decl_2.
3278 (build_omp_barrier): Return the call to emit instead of emitting
3280 (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
3282 (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
3283 expand_omp_for_generic, expand_omp_for_static_nochunk,
3284 expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3285 Adapted to work on SSA form.
3286 (execute_expand_omp): Do not invalidate dominance information.
3287 (gate_expand_omp): Do not run with -fopenmp-ssa flag.
3288 (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
3289 * gimplify.c (gimplify_omp_for): Ensure that the control variable is
3291 (force_gimple_operand): Allow gimplifying code expressions without
3293 * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
3294 * common.opt (fopenmp-ssa): New.
3295 * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
3296 * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
3297 * tree-cfg.c: Include tree-inline.h.
3298 (struct move_stmt_d): Replace vars_to_remove by vars_map field.
3299 (replace_by_duplicate_decl, replace_ssa_name,
3300 mark_virtual_ops_in_region): New functions.
3301 (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
3302 to work on SSA form.
3303 * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
3304 * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
3307 2007-09-06 Laurynas Biveinis <laurynas.biveinis@gmail.com>
3309 * tree-loop-linear.c: Include obstack.h.
3310 (linear_transform_loops): New obstack lambda_obstack.
3311 Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
3312 lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
3313 and free afterwards.
3314 * lambda.h (struct obstack): New forward declaration.
3315 (lambda_linear_expression_new): New parameter of type struct
3317 (lambda_loopnest_new): Likewise.
3318 (lambda_loopnest_transform): Likewise.
3319 (lambda_body_vector_new): Likewise.
3320 (lambda_body_vector_compute_new): Likewise.
3321 (gcc_loopnest_to_lambda_loopnest): Likewise.
3322 (lambda_loopnest_to_gcc_loopnest): Likewise.
3323 * lambda-code.c: Include obstack.h.
3324 (lambda_lattice_new): New parameter lambda_obstack. Use it for
3326 (lambda_body_vector_new): Likewise.
3327 (lambda_linear_expression_new): Likewise.
3328 (lambda_lattice_new): Likewise.
3329 (lambda_loopnest_new): Likewise. Additionally use obstack to
3330 allocate LN_LOOPS(ret).
3331 (lambda_lattice_compute_base): New parameter lambda_obstack. Pass
3332 it to lambda_lattice_new.
3333 (lambda_body_vector_compute_new): New parameter lambda_obstack.
3334 Pass it to lambda_body_vector_new.
3335 (lambda_lattice_compute_base): New paramater lambda_obstack. Pass
3336 it to lambda_lattice_new.
3337 (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
3338 Pass it to lambda_loopnest_new, lambda_linear_expression_new.
3339 (lambda_compute_target_space): Likewise.
3340 (lambda_compute_auxillary_space): New parameter lambda_obstack.
3341 Pass it to lambda_lattice_compute_base and
3342 compute_nest_using_fourieer_motzkin.
3343 (lambda_loopnest_transform): New parameter lambda_obstack. Pass
3344 it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
3345 and lambda_lattice_compute_target_space.
3346 (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
3347 Pass it to lambda_linear_expression_new.
3348 (gcc_loop_to_lambda_loop): New parameter lambda_obstack. Pass it
3349 to gcc_tree_to_linear_expression.
3350 (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
3351 Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
3352 (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
3353 Pass it to lambda_body_vector_new and
3354 lambda_body_vector_compute_new.
3355 * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
3356 (lambda-code.o): Likewise.
3358 2007-09-06 Chao-ying Fu <fu@mips.com>
3360 * ginclude/stdfix.h: New file.
3361 * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
3362 (convert.o): Add dependence on fixed-value.h.
3363 * c-convert.c (convert): Support FIXED_POINT_TYPE.
3364 * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
3365 to define fixed-point constants.
3366 (c_cpp_builtins): Define fixed-point constants.
3367 * convert.c (fixed-value.h): New include.
3368 (convert_to_real): Update comment to include fixed-point.
3369 Support FIXED_POINT_TYPE.
3370 (convert_to_integer): Update comment to include fixed-point.
3371 Support FIXED_POINT_TYPE.
3372 (convert_to_complex): Support FIXED_POINT_TYPE.
3373 (convert_to_fixed): New function.
3374 * convert.h (convert_to_fixed): Declare.
3375 * genopinit.c: Add comment about $Q for only fixed-point modes.
3376 (optabs): Add fract_optab, fractuns_optab, satfract_optab,
3377 satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
3378 sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
3379 ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
3380 usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
3381 usneg_optab for fixed-point modes.
3382 (gen_insn): Add force_fixed to track the $Q format for all fixed-point
3384 * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
3385 PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
3386 unsigned saturation optabs, when type is saturating.
3387 (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
3388 (expand_fixed_convert): New function.
3389 (gen_fixed_libfunc, gen_signed_fixed_libfunc,
3390 gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
3391 gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
3392 gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,