1 2008-09-10 Bernd Schmidt <bernd.schmidt@analog.com>
3 * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
4 not lose track of the number of NOPs needed. Number of NOPs needed
5 for sync vs. loads workaround was switched; corrected. Run second
6 pass for all workarounds. No NOPs needed after call insns. Change
7 second pass to use find_next_insn_start and find_load helpers in order
8 to properly detect parallel insns.
9 * config/bfin/bfin.md (cbranch_with_nops): Increase length.
11 2008-09-10 Jan Hubicka <jh@suse.cz>
13 * value-prof.c (gimple_ic): Fix tuplification bug.
14 * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized var
17 2008-09-10 Jakub Jelinek <jakub@redhat.com>
19 PR tree-optimization/37353
20 * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
21 (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
22 calls instead of cond_dead_built_in_calls.
23 (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
24 initalize the vector only before adding first entry. Use VEC_safe_push
25 instead of VEC_quick_push. Pass cond_dead_built_in_calls to
26 shrink_wrap_conditional_dead_built_in_calls call.
28 2008-09-10 Ira Rosen <irar@il.ibm.com>
30 PR tree-optimization/37385
31 * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new argument,
32 and use it as a vector type if not NULL.
33 (vectorizable_store): Call vect_create_data_ref_ptr with the type of
35 (vect_setup_realignment): Call vect_create_data_ref_ptr with additional
37 (vectorizable_load): Likewise.
39 2008-09-10 Jakub Jelinek <jakub@redhat.com>
41 * config/i386/i386.md (SWI32): New mode iterator.
42 (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
45 2008-09-09 Vladimir Makarov <vmakarov@redhat.com>
47 PR rtl-optimization/37435
48 * caller-save.c (insert_restore, insert_save): Check the mode by
51 2008-09-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
54 * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
56 (dw2_output_indirect_constant_1): Use unstripped name in symbol
59 2008-09-09 Sandra Loosemore <sandra@codesourcery.com>
61 * doc/invoke.texi (ARM Options): Correct errors in discussion
62 of -mfloat-abi, -mhard-float, and -msoft-float.
64 2008-09-09 Jakub Jelinek <jakub@redhat.com>
65 Jan Hubicka <jh@suse.cz>
68 * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
69 calling gimple_regimplify_operands on it. Iterate over all newly
70 added statements, not just the last one.
71 (insert_init_stmt): Insert stmt into seq first, then call
72 gimple_regimplify_operands on it. Don't create new gimplification
73 context, nor find referenced vars.
75 2008-09-09 Jakub Jelinek <jakub@redhat.com>
78 * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
79 to pointer to vector pointer.
80 * ipa-prop.c (ipa_propagate_indirect_call_infos,
81 propagate_info_to_inlined_callees): Likewise.
82 (update_call_notes_after_inlining): Likewise. Push new indirect edge
83 to *new_edges instead of new_edges. Reread IPA_EDGE_REF after
84 ipa_check_create_edge_args.
85 * ipa-inline.c (cgraph_decide_recursive_inlining): Change last argument
86 to pointer to vector pointer.
87 (cgraph_decide_inlining_of_small_function): Adjust
88 cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
92 * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when optimizing
95 PR rtl-optimization/37408
96 * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
99 2008-09-09 Sebastian Pop <sebastian.pop@amd.com>
101 PR tree-optimization/37375
102 * tree-scalar-evolution.c (scev_info_str): Add field instantiated_below.
103 (new_scev_info_str, eq_scev_info, find_var_scev_info,
104 set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
105 set_instantiated_value): Pass instantiated_below.
106 (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls to
108 (instantiate_scev_1, instantiate_scev): Pass a basic block above which the
109 definitions are not instantiated.
111 * tree-scalar-evolution.h (instantiate_scev): Update declaration.
112 (block_before_loop): New.
113 * tree-data-ref.c (dr_analyze_indices): Update uses of instantiate_scev.
114 * graphite.c (block_before_scop): New.
115 (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
116 basic block, not a loop for determining the parameters.
117 (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
119 (idx_record_params, find_params_in_bb, find_scop_parameters,
120 build_loop_iteration_domains, add_conditions_to_domain): Update calls
123 * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
125 2008-09-09 Vladimir Makarov <vmakarov@redhat.com>
129 * ira-build.c (ira_create_allocno): Setup frequency to 0.
131 * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
132 Check zero freq and increase if necessary.
134 2008-09-09 Vladimir Makarov <vmakarov@redhat.com>
136 * ira-conflicts.c (process_regs_for_copy): Check that the hard
137 regno is in the right range. Add comments.
139 2008-09-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
141 * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
143 * mips-tfile.c (copy_object): Cast alloca result to int *.
144 * mips-tdump.c (print_symbol): Cast xmalloc return values to
146 Rename class to sclass.
147 (read_tfile): Cast read_seek return values to proper types.
148 Cast xcalloc return value to proper type.
150 2008-09-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
152 * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
153 * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
154 * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
156 2008-09-09 Jan Hubicka <jh@suse.cz>
158 * profile.c (is_edge_inconsistent): Add debug output; ignore negative count
160 (is_inconsistent): Add debug output.
162 2008-09-09 Andrey Belevantsev <abel@ispras.ru>
164 * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
166 (choose_ready): When first insn is chosen from the ready list, also
169 2008-09-09 Andrey Belevantsev <abel@ispras.ru>
171 PR rtl-optimization/37360
172 * haifa-sched.c (max_issue): Do not assert that we never issue more
173 insns than issue_rate. Add comment.
175 2008-09-09 Richard Guenther <rguenther@suse.de>
177 * tree-cfg.c (verify_types_in_gimple_op): Remove.
178 (verify_types_in_gimple_call): Rename to ...
179 (verify_gimple_call): ... this. Enhance.
180 (verify_types_in_gimple_cond): Remove.
181 (verify_gimple_comparison): New function ...
182 (verify_types_in_gimple_assign): ... split out from here.
183 (verify_types_in_gimple_return): Rename to ...
184 (verify_gimple_return): ... this. Enhance.
185 (verify_types_in_gimple_switch): Rename to ...
186 (verify_gimple_switch): ... this. Enhance.
187 (verify_gimple_goto): New function.
188 (verify_types_in_gimple_phi): Rename to ...
189 (verify_gimple_phi): ... this. Enhance.
190 (verify_types_in_gimple_stmt): Adjust calls to helper functions.
191 Fold in single-statement cases from verify_types_in_gimple_seq_2.
192 (verify_types_in_gimple_seq_2): Remove cases handled in
193 verify_types_in_gimple_stmt.
195 2008-09-09 Bernd Schmidt <bernd.schmidt@analog.com>
197 * config/bfin/bfin.c (n_regs_to_save): New static variable.
198 (push_multiple_operation, pop_multiple_operation): Set it.
199 (workaround_rts_anomaly): New function.
200 (workaround_speculation): New function, broken out of bfin_reorg.
201 (bfin_reorg): Call the new functions.
203 2008-09-09 Richard Guenther <rguenther@suse.de>
207 * gimplify.c (gimplify_conversion): Change conversions of
208 non-register type to VIEW_CONVERT_EXPRs.
209 (gimplify_addr_expr): If we need to make the operand
210 addressable make sure to use a properly initialized
211 temporary for that so it gets a valid gimple store.
213 2008-09-09 Aldy Hernandez <aldyh@redhat.com>
215 * function.h (struct function): Add function_start_locus.
216 * cfgexpand.c (gimple_expand_cfg): Use it.
217 * c-parser.c (c_parser_declaration_or_fndef): Set it.
219 2008-09-09 Richard Guenther <rguenther@suse.de>
221 PR tree-optimization/37433
222 * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
225 2008-09-09 Richard Guenther <rguenther@suse.de>
227 PR tree-optimization/37387
228 * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
229 and bits to a common type.
231 2008-09-09 Nick Clifton <nickc@redhat.com>
233 * config/v850/v850.md (return): Restore frame size restriction.
235 2008-09-09 Paolo Bonzini <bonzini@gnu.org>
237 * c-common.c (c_expand_decl): Remove.
238 * c-common.h (anon_aggr_type_p): Remove prototype.
239 (DECL_ANON_UNION_ELEMS): Remove.
240 * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
241 * c-decl.c (anon_aggr_type_p): Remove.
242 * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
243 (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
244 * langhooks.h (struct lang_hooks): Remove expand_decl.
245 * langhooks.c (lhd_expand_decl): Remove.
246 * stmt.c (expand_anon_union_decl): Remove.
247 * tree.h (expand_anon_union_decl): Remove prototype.
249 2008-08-09 Andy Hutchinson <hutchinsonandy@aim.com>
252 * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
254 * config/avr/avr.md (QISI) : Define mode iterator.
255 (negated_tst<mode>) : Redefine as split using mode macro.
256 (reversed_tstqi): Define insn as reversed compare with zero.
257 (reversed_tsthi): Ditto.
258 (reversed_tstsi): Ditto.
260 2008-09-08 Jakub Jelinek <jakub@redhat.com>
263 * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
264 call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
267 * predict.c (optimize_function_for_size_p): Don't segfault if
269 * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
270 tree_swap_operands_p): Don't test cfun != NULL before calling
271 optimize_function_for_s*_p.
273 2008-09-08 Eric Botcazou <ebotcazou@adacore.com>
275 * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
278 2008-09-08 M R Swami Reddy <MR.Swami.Reddy@nsc.com>
280 * crx/crx.h (IRA_COVER_CLASSES): Define.
282 2008-09-08 Jakub Jelinek <jakub@redhat.com>
285 * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
286 even when a stmt has been gimple_modified_p, but after fold_stmt is
287 not any longer. Remove unneeded may_have_exposed_new_symbols
290 2008-09-08 Richard Guenther <rguenther@suse.de>
292 PR tree-optimization/37421
293 * tree-ssa-sccvn.c (visit_copy): Make sure to fully
296 2008-09-08 Jakub Jelinek <jakub@redhat.com>
299 * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
301 2008-09-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
304 * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
305 * pa-hpux10.h (LINK_SPEC): Likewise.
306 * pa-hpux11.h (LINK_SPEC): Likewise.
308 2008-09-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
310 * pa32-regs.h (IRA_COVER_CLASSES): Define.
311 * pa64-regs.h (IRA_COVER_CLASSES): Define.
313 2008-09-07 Helge Deller <deller@gmx.de>
315 * pa/linux-atomic.c: New file.
316 * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
317 * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
319 2008-09-07 Richard Guenther <rguenther@suse.de>
320 Ira Rosen <irar@il.ibm.com>
322 PR tree-optimization/36630
323 * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
324 Call STRIP_NOPS before calling evolution_part_in_loop_num.
326 2008-09-07 Dorit Nuzman <dorit@il.ibm.com>
327 Ira Rosen <irar@il.ibm.com>
329 PR tree-optimization/35642
330 * config/rs6000/altivec.md (mulv8hi3): Implement.
332 2008-09-06 Jeff Law <law@redhat.com>
334 * h8300/h8300.h (IRA_COVER_CLASSES): Define.
336 2008-09-06 Jan Hubicka <jh@suse.cz>
338 PR tree-optimization/14703
339 * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored declarations.
340 * passes.c (init_optimization_passes): Recompute inline parameters.
342 2008-09-06 Richard Sandiford <rdsandiford@googlemail.com>
344 * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
347 2008-09-06 Richard Sandiford <rdsandiford@goolemail.com>
348 Peter Fuerst <post@pfrst.de>
350 * doc/invoke.texi: Document -mr10k-cache-barrier=.
351 * doc/extend.texi: Document __builtin_mips_cache.
352 * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
353 * config/mips/mips.opt (mr10k-cache-barrier=): New option.
354 * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
355 __GCC_HAVE_BUILTIN_MIPS_CACHE.
356 (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
357 * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
358 (set_push_mips_isas): New variable.
359 (mips_r10k_cache_barrier): New variable.
360 (cache): New availability predicate.
361 (mips_builtins): Add an entry for __builtin_mips_cache.
362 (mips_build_cvpointer_type): New function.
363 (MIPS_ATYPE_CVPOINTER): New macro.
364 (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
366 (r10k_simplified_address_p, r10k_simplify_address)
367 (r10k_uncached_address_p, r10k_safe_address_p)
368 (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
369 (r10k_needs_protection_p_call, r10k_needs_protection_p)
370 (r10k_insert_cache_barriers): New functions.
371 (mips_reorg_process_insns): Delete cache barriers after a
372 branch-likely instruction.
373 (mips_reorg): Call r10k_insert_cache_barriers.
374 (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
375 * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
376 (UNSPEC_R10K_CACHE_BARRIER): Likewise.
377 (mips_cache, r10k_cache_barrier): New define_insns.
379 2008-09-06 Richard Sandiford <rdsandiford@googlemail.com>
381 * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
382 * ira-color.c (setup_allocno_left_conflicts_num): Use
383 hard_reg_set_equal_p instead of a comparison with
384 ira_zero_hard_reg_set.
385 * ira.c (setup_reg_subclasses): Likewise.
386 (setup_cover_and_important_classes): Likewise.
387 (setup_class_translate): Likewise.
388 (setup_reg_class_intersect_union): Likewise.
389 (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
390 (ira_init_once): Don't initialize them.
392 2008-09-05 Vladimir Makarov <vmakarov@redhat.com>
394 * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
396 2008-09-05 Vladimir Makarov <vmakarov@redhat.com>
398 * ira-color.c (ira_fast_allocation): Permit global allocno
401 2008-09-05 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
403 Improved branch hints, safe hints, and scheduling.
405 * haifa-sched.c (sched_emit_insn) : Define.
406 * sched-int.h (sched_emit_insn) : Add prototype.
407 * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
408 -mhint-max-distance -msafe-hints) : Document.
409 * config/spu/spu.c (spu_flag_var_tracking): New.
410 (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
411 TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
412 TARGET_ASM_FILE_START): Define.
413 (TARGET_SCHED_ADJUST_PRIORITY): Remove.
414 (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
415 (spu_emit_branch_hint): Add blocks argument.
416 (insert_branch_hints, insert_nops): Remove.
417 (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
418 uses_ls_unit, spu_sched_init_global, spu_sched_init,
419 spu_sched_reorder, asm_file_start): New functions.
420 (clock_var, spu_sched_length, pipe0_clock,
421 pipe1_clock, prev_clock_var, prev_priority,
422 spu_ls_first, prev_ls_clock): New static variables.
423 * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
424 * config/spu.md (iprefetch): Add operand, make it clobber MEM.
425 (nopn_nv): Add a non-volatile version of nop.
426 * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
427 -mhint-max-distance, -msafe-hints): New options.
429 2008-09-05 Janis Johnson <janis187@us.ibm.com>
430 Samuel Tardieu <sam@rfc1149.net>
432 * opts.c (decode_options): Combine nested if statements.
435 * opts.c (decode_options): Handle more relationships among
436 unit-at-a-time, toplevel-reorder, and section-anchors.
438 2008-09-05 David Daney <ddaney@avtrex.com>
440 * doc/install.texi (--enable-reduced-reflection): Document new option.
442 2008-09-05 Bob Wilson <bob.wilson@acm.org>
444 * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
446 (constantpool_operand): New.
447 (move_operand): Disallow sub-word modes for the constant pool.
448 * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
449 (xtensa_secondary_reload_class): Replace with....
450 (xtensa_secondary_reload): this function. Remove SIGN_EXTEND check.
451 Set icode for sub-word reloads from the constant pool.
452 * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
453 (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
454 * config/xtensa/xtensa.md (reload<mode>_literal): New.
455 * config/xtensa/xtensa-protos.h: Update prototypes.
457 2008-09-05 Joseph Myers <joseph@codesourcery.com>
459 * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
460 (REG_CLASS_NAMES): Update.
461 (REG_CLASS_CONTENTS): Update.
462 * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
463 of ALL_REGS for regs 77 and 78.
464 * function.c (instantiate_virtual_regs_in_insn): Assert that
465 return value of simplify_gen_subreg is not NULL.
467 2008-09-05 Paolo Bonzini <bonzini@gnu.org>
469 * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
470 (gen_rtvec_v): Fix coding standards.
472 2008-09-04 Jan Hubicka <jh@suse.cz>
474 * i386.c (decide_alg): Be more conservative about optimizing for size.
476 2008-09-04 Ian Lance Taylor <iant@google.com>
478 * varasm.c (narrowing_initializer_constant_valid_p): New
480 (initializer_constant_valid_p): Call it.
482 2008-09-04 Jeff Law <law@redhat.com>
484 * fold-const.c (native_encode_real): Fix computation of WORDS.
485 (native_interpret_real): Likewise.
487 2008-09-04 Janis Johnson <janis187@us.ibm.com>
489 * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
491 2008-09-04 Vladimir Makarov <vmakarov@redhat.com>
493 * ira-conflicts.c (process_regs_for_copy): Check insn to check
494 that the cost is already taken into account in ira-costs.c
496 * ira-int.h (ira_debug_copy, ira_debug_copies): New.
498 * ira-build.c (print_copy, print_copies, ira_debug_copy,
499 ira_debug_copies): New.
500 (ira_bulid): Call print_copies.
502 * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
504 2008-09-04 Samuel Tardieu <sam@rfc1149.net>
507 * config/rs6000/rs6000.c (optimization_options): Remove check of
510 2008-09-04 Adam Nemet <anemet@caviumnetworks.com>
512 * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
513 * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
514 second operand is a reg_imm10_operand.
515 * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
516 *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
517 (*seq_<GPR:mode><GPR2:mode>): Rename to
518 *seq_zero_<GPR:mode><GPR2:mode>. Don't match if
520 (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
521 *seq_zero_<GPR:mode><GPR2:mode>_mip16. Don't match if
523 (*sne_<GPR:mode><GPR2:mode>): Rename to
524 *sne_zero_<GPR:mode><GPR2:mode>. Don't match if
527 2008-09-04 Adam Nemet <anemet@caviumnetworks.com>
529 * config/mips/mips.h (ISA_HAS_EXTS): New macro.
530 * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
531 combining an arithmetic right shift by more than 31 and a
532 trunction. Don't match for out-of-range shift amounts. Set
533 attribute mode to <MODE>.
534 (*lshr32_trunc<mode>): Name the pattern combining a logical right
535 shift by 32 and and a truncation. Set attribute mode to <MODE>.
536 (*<optab>_trunc<mode>_exts): New pattern for truncated right
537 shifts by less than 32.
538 (extv): Change predicate on first operand to accept registers.
539 Change predicate of the other operands from immediate_operand to
540 const_int_operand. Expand exts when source is a register.
541 (extzv): Change predicate of the constant operands from
542 immediate_operand to const_int_operand.
543 (extzv<mode>): Change predicate of the constant operands from
544 immediate_operand to const_int_operand and no constraint. Also
546 (*extzv_trunc<mode>_exts): New pattern.
548 2008-09-04 Adam Nemet <anemet@caviumnetworks.com>
550 * config/mips/mips.h (ISA_HAS_CINS): New macro.
551 * config/mips/mips-protos.h (mask_low_and_shift_p,
552 mask_low_and_shift_len): Declare.
553 * config/mips/mips.c (mask_low_and_shift_p,
554 mask_low_and_shift_len): New functions.
555 (mips_print_operand): Handle new operand prefix "m".
556 * config/mips/mips.md (*cins<mode>): New pattern.
558 2008-09-04 Bernd Schmidt <bernd.schmidt@analog.com>
560 * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
563 2008-09-04 Richard Sandiford <rdsandiford@googlemail.com>
565 * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
566 regardless of epilogue_completed.
568 2008-09-04 Vladimir Makarov <vmakarov@redhat.com>
571 * ira-lives.c (process_bb_node_lives): Check setjmp.
573 2008-09-04 Richard Sandiford <rdsandiford@googlemail.com>
576 * ira-build.c (form_loop_tree): Reverse BB walk.
577 (create_bb_allocnos): Likewise.
578 * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
579 (mark_reg_store): Rename to...
580 (mark_ref_live): ...this and take a df_ref argument instead of
581 note_stores arguments. Assert that we have a register.
582 (mark_reg_clobber): Delete.
583 (def_conflicts_with_inputs_p): New function.
584 (mark_reg_conflicts): Delete.
585 (mark_reg_death): Rename to...
586 (mark_ref_dead): ...this and take a df_ref argument instead of
587 a register. Assert that we have a register.
588 (process_bb_node_lives): Hoist frequency calculation out of
589 instruction walk. Convert from a forwards scan to a backwards scan.
590 Use DF_REF_USES and DF_REF_DEFS instead of register notes and
591 note_stores. Remove EH_RETURN_DATA_REGNO and regs_set handling.
592 (create_allocno_live_ranges): Don't create regs_set.
594 2008-09-04 Ian Lance Taylor <iant@google.com>
596 * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
598 * calls.c (emit_library_call_value_1): Use MEM_P rather than
599 comparing MODE with MEM.
600 * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
601 comparing with GF_PREDICT_TAKEN.
602 (gimple_get_lhs): Change code to enum gimple_code.
603 (gimple_set_lhs): Likewise.
604 * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
605 * omp-low.c (find_omp_clause): Change kind parameter to enum
607 * tree-flow.h (find_omp_clause): Update declaration.
608 * regrename.c (clear_dead_regs): Change kind parameter to enum
610 * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
612 * see.c (see_get_extension_data): Change return type to enum
613 entry_type. Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
614 SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
615 (see_gen_normalized_extension): Change extension_code parameter to
617 (see_seek_pre_extension_expr): Change extension_code to enum
619 (see_merge_one_def_extension): Likewise.
620 (see_handle_relevant_defs): Likewise.
621 (see_handle_relevant_uses): Likewise.
622 (see_analyze_one_def): Likewise.
623 * tree-cfg.c (need_fake_edge_p): Compare gimple code with
624 GIMPLE_ASM rather than ASM_EXPR.
625 * tree-ssa-alias.c (is_escape_site): Compare gimple code with
626 GIMPLE_RETURN rather than RETURN_EXPR.
627 * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
628 (evaluate_stmt): Likewise.
629 * tree-vect-analyze.c (vect_analyze_operations): Change relevance
630 to enum vect_relevant.
631 (vect_mark_stmts_to_be_vectorized): Change assertion to not
632 compare gimple codes with tree codes.
634 2008-09-04 Paul Brook <paul@codesourcery.com>
636 * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
638 2008-09-04 Bernd Schmidt <bernd.schmidt@analog.com>
640 * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
641 pointer check lost in the recent no-unit-at-a-time patch.
643 2008-09-04 Jan Hubicka <jh@suse.cz>
646 * tree-switch-conversion.c (check_final_bb): Accept only IP
649 2008-09-04 Jan Hubicka <jh@suse.cz>
651 * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
653 (vrp_evaluate_conditional_warnv_with_ops): ... this one. Add
654 using_ranges argument.
655 (vrp_evaluate_conditional): Avoid bogus warning for type range.
656 (vrp_visit_cond_stmt): Update call of
657 vrp_evaluate_conditional_warnv_with_ops
659 2008-09-04 Jan Hubicka <jh@suse.cz>
661 PR tree-optimization/37345
662 PR tree-optimization/37358
663 PR tree-optimization/37357
664 * tree.c (build_function_type_skip_args): Build distinct type copy;
666 (build_function_decl_skip_args): Set type of new decl not orig decl;
667 clear DECL_VINDEX for methods turned into functions.
669 2008-09-04 Nick Clifton <nickc@redhat.com>
671 * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler
673 * configure: Regenerate.
674 * config.in: Regenerate.
675 * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
676 alignment field, if it is supported.
678 2008-09-04 Kai Tietz <kai.tietz@onevision.com>
680 * config/i386/t-mingw32 (SHLIB_LC): Change order of import
683 2008-09-03 David Edelsohn <edelsohn@gnu.org>
685 * config/rs6000/rs6000.c (processor_target_table): Do not
686 enable VMX for POWER6.
688 2008-09-03 Anton Blanchard <anton@samba.org>
690 * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
691 emit memory barrier before operation.
693 2008-09-03 John David Anglin <dave.anglin@nrc.cnrc.gc.ca>
696 * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
697 default_elf_asm_output_external.
699 2008-09-03 Jeff Law <law@redhat.com>
701 * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
703 2008-09-03 Richard Henderson <rth@redhat.com>
705 * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
706 memory barrier to below the test-and-set.
707 (alpha_split_lock_test_and_set_12): Likewise.
709 2008-09-03 Vladimir Makarov <vmakarov@redhat.com>
713 * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
716 * ira-color.c (print_loop_title): Use all_allocnos.
717 (color_pass): Ditto. Don't add border_allocnos. Check that
718 subloop allocno in the correspdoning bitmap all_allocnos.
720 * ira-emit.c (change_loop): Use all_allocnos.
722 * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
724 (ira_create_allocno): Set up all_allocnos bit for the created
726 (create_cap_allocno): Remove setting mentioned_allocnos.
727 (create_insn_allocnos): Ditto.
728 (remove_unnecessary_allocnos): Use all_allocnos.
729 (check_allocno_creation): Check that allocnos are in the
730 corresponding bitmap all_allocnos.
732 2008-09-03 Vladimir Makarov <vmakarov@redhat.com>
736 * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
737 (process_regs_for_copy): Process subregs. Refine check when cost
738 is taken into account in ira-costs.c.
739 (process_reg_shuffles): Use REG_SUBREG_P.
740 (add_insn_allocno_copies): Ditto. Ignore modes.
742 * ira-color.c (conflict_allocno_vec): New.
743 (COST_HOP_DIVISOR): New macro.
744 (update_copy_costs_1): Use it.
745 (update_conflict_hard_regno_costs): New function.
746 (assign_hard_reg): Use it.
747 (ira_color): Allocate and free conflict_allocno_vec.
749 2008-09-03 Vladimir Makarov <vmakarov@redhat.com>
753 * ira-int.h (ira_sort_insn_chain): Remove.
755 * ira.c (basic_block_order_nums, chain_insn_order,
756 chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
757 (ira): Don't call ira_sort_insn_chain.
759 * reload1.c (reload): Don't call ira_sort_insn_chain.
761 2008-09-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
764 * cgraphunit.c (update_call_expr): Remove eh regions from statements
765 which become non throw.
766 (cgraph_function_versioning): Also clear DECL_WEAK. Call
767 update_call_expr after updating the flags on the decl.
769 2008-09-03 Jan Hubicka <jh@suse.cz>
771 PR tree-optimization/37315
772 * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
773 * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
774 (cgraph_analyze_functions): Use node->analyzed
775 (cgraph_mark_functions_to_output): Likewise.
776 (cgraph_expand_function): All functions can be released after
778 (cgraph_optimize): Use gimple_has_body_p.
779 * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
780 (cgraph_decide_inlining_incrementally): Likewise.
781 (inline_transform): Inline transform.
782 * tree-inline.c (initialize_cfun): Do now shallow copy structure;
784 (inlinable_function_p): Drop gimple_body check.
785 (expand_call_inline): Use gimple_has_body_p.
786 * gimple.c (gimple_has_body_p): New.
787 * gimple.h (gimple_has_body_p): Add prototype.
788 * tree-cfg.c (execute_build_cfg): Remove gimple_body.
789 (dump_function_to_file): Use gimple_has_body_p check.
791 2008-09-03 Jakub Jelinek <jakub@redhat.com>
794 * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
796 * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
798 2008-09-03 Bernd Schmidt <bernd.schmidt@analog.com>
800 From Michael Frysinger <michael.frysinger@analog.com>
801 * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
802 bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549. Add 0.2
805 2008-09-03 Hari Sandanagobalane <hariharan@picochip.com>
808 * doc/extend.texi: Document picoChip builtin functions.
809 * doc/invoke.texi: Document picoChip options.
810 * doc/contrib.texi: Add picoChip contribution.
811 * doc/md.texi: Document picoChip constraints.
812 * config.gcc: Add picochip-*-*.
813 * config/picochip/: Add new port.
815 2008-09-03 Richard Guenther <rguenther@suse.de>
817 PR tree-optimization/37328
818 * tree-sra.c (sra_build_assignment): Gimplify properly.
819 (generate_copy_inout): Take the correct stmt as definition,
822 2008-09-03 Bernd Schmidt <bernd.schmidt@analog.com>
824 * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
827 From Michael Frysinger <michael.frysinger@analog.com>
828 * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
830 2008-09-03 Danny Smith <dannysmith@usrs.sourceforge.net>
832 * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is
834 (__gthread_setspecific): Revert 2008-08-31 change to
835 __GTHREAD_HIDE_W32API case. Apply it to !__GTHREAD_HIDE_W32API
838 2008-09-02 Aldy Hernandez <aldyh@redhat.com>
840 * diagnostic.c (error_at): New.
841 * toplev.h (error_at): New prototype.
842 * c-typeck.c (build_array_ref): Call error_at instead of error.
843 Pass location to pedwarn.
845 2008-09-02 Adam Nemet <anemet@caviumnetworks.com>
847 * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
849 2008-09-02 Jakub Jelinek <jakub@redhat.com>
851 * dwarf2out.c (tree_add_const_value_attribute): Only handle
852 VAR_DECL and CONST_DECL.
854 2008-09-02 H.J. Lu <hongjiu.lu@intel.com>
855 Jakub Jelinek <jakub@redhat.com>
857 * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
858 (setup_incoming_varargs_64): Assume cum != NULL. Set/check
859 ix86_varargs_gpr_size and ix86_varargs_fpr_size. Use
860 ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
861 Don't set ix86_save_varrargs_registers.
862 (ix86_setup_incoming_varargs): Assume cum != NULL.
863 (ix86_va_start): Check ix86_varargs_gpr_size and
864 ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
865 cfun->va_list_fpr_size, respectively. Subtract 8*X86_64_REGPARM_MAX
866 from frame pointer if ix86_varargs_gpr_size == 0.
867 (ix86_compute_frame_layout): Updated.
868 * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
869 (ix86_varargs_gpr_size): Define.
870 (ix86_varargs_fpr_size): Likewise.
871 (machine_function): Remove save_varrargs_registers.
872 Add varargs_gpr_size and varargs_fpr_size.
874 2008-09-02 Jakub Jelinek <jakub@redhat.com>
876 * config/alpha/alpha.c (va_list_skip_additions,
877 alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
878 (alpha_gimplify_va_arg): Call unshare_expr on second use of
881 PR tree-optimization/36766
882 * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
883 for already removed basic blocks.
886 * real.c (real_maxval): Clear a lower bit to make real_maxval
887 match get_max_float for IBM long double format.
889 2008-09-02 Andreas Schwab <schwab@suse.de>
891 * configure.ac: Use m4_quote to quote the expansion of m4_do.
892 * configure: Regenerate.
894 2008-09-02 Richard Sandiford <rdsandiford@googlemail.com>
896 * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
897 SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
898 checking for a non-VOID CONSTANT_P.
900 2008-09-02 Jan Hubicka <jh@suse.cz>
902 * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
903 * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and sdiv_pow2_cheap
905 2008-09-02 H.J. Lu <hongjiu.lu@intel.com>
907 * expr.c (emit_group_store): Don't assert stack temp mode size.
909 2008-09-02 Sebastian Pop <sebastian.pop@amd.com>
910 Tobias Grosser <grosser@fim.uni-passau.de>
911 Jan Sjodin <jan.sjodin@amd.com>
912 Harsha Jagasia <harsha.jagasia@amd.com>
913 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
914 Konrad Trifunovic <konrad.trifunovic@inria.fr>
915 Adrien Eliche <aeliche@isty.uvsq.fr>
917 Merge from graphite branch.
920 * tree-loop-linear.c (perfect_loop_nest_depth): Export.
921 * doc/invoke.texi (-floop-block, -floop-interchange,
922 -floop-strip-mine): Document new flags.
923 * tree-into-ssa.c (gimple_vec): Moved...
924 * tree-loop-distribution.c (rdg_component): Moved...
925 * cfgloopmanip.c: Include tree-flow.h.
926 (update_dominators_in_loop): New.
927 (create_empty_if_region_on_edge): New.
928 (create_empty_loop_on_edge): New.
929 (loopify): Use update_dominators_in_loop.
930 * tree-pass.h (pass_graphite_transforms): Declared.
931 * configure: Regenerate.
932 * tree-phinodes.c (make_phi_node): Export.
933 (add_phi_node_to_bb): New, split from create_phi_node.
934 * tree-chrec.c (for_each_scev_op): New.
935 * tree-chrec.h (for_each_scev_op): Declared.
936 * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
937 (remove_statement): Call get_phi_with_result.
938 * config.in (HAVE_cloog): Undef.
939 * gdbinit.in (pgg): New.
940 * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
941 * tree-ssa-loop.c (graphite_transforms): New.
942 (gate_graphite_transforms): New.
943 (pass_graphite_transforms): New.
944 * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
945 HAVE_cloog): Defined.
946 * tree-vectorizer.c (rename_variables_in_bb): Export.
947 * tree-data-ref.c (dr_may_alias_p): Export.
948 (stmt_simple_memref_p): New.
949 (find_data_references_in_stmt): Export.
950 (find_data_references_in_loop): Export.
951 (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
952 (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
953 (create_rdg_vertices): Export.
954 (build_empty_rdg): New.
955 (build_rdg): Call build_empty_rdg. Free dependence_relations.
956 * tree-data-ref.h (rdg_component): ... here.
958 (struct data_reference): Add a field scop.
960 (find_data_references_in_loop): Declared.
961 (find_data_references_in_stmt): Declared.
962 (create_rdg_vertices): Declared.
963 (dr_may_alias_p): Declared.
964 (stmt_simple_memref_p): Declared.
965 (struct rdg_edge): Add a field ddr_p relation.
966 (build_empty_rdg): Declared.
967 * lambda.h (lambda_matrix): Declare a VEC of.
968 (find_induction_var_from_exit_cond): Declared.
969 (lambda_vector_compare): New.
970 * common.opt (fgraphite, floop-strip-mine,
971 floop-interchange, floop-block): New flags.
972 * lambda-code.c (find_induction_var_from_exit_cond): Export.
973 * cfgloop.c (is_loop_exit): New.
974 * cfgloop.h (is_loop_exit): Declared.
975 (create_empty_if_region_on_edge): Declared.
976 (create_empty_loop_on_edge): Declared.
977 * tree-flow.h (add_phi_node_to_bb): Declared.
978 (make_phi_node): Declared.
979 (rename_variables_in_bb): Declared.
980 (perfect_loop_nest_depth): Declared.
981 (graphite_transform_loops): Declared.
982 * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
983 (graphite.o-warn): Add -Wno-error.
984 (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
985 (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
986 (INCLUDES): Add PPLINC, CLOOGINC.
987 (OBJS-common): Add graphite.o.
988 (graphite.o): Add rule.
989 * gimple.h (gimple_vec): ... here.
990 * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
991 * passes.c (init_optimization_passes): Schedule
992 pass_graphite_transforms.
994 2008-09-02 Samuel Tardieu <sam@rfc1149.net>
997 * opts.c (decode_options): Move processing of -fno-unit-at-a-time
998 and -fno-toplevel-reorder after handle_options.
1000 2008-09-02 Paul Brook <paul@codesourcery.com>
1002 * config/arm/arm.c (arm_tune_cortex_a9): Define.
1003 (arm_override_options): Set arm_tune_cortex_a9.
1004 (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
1005 (arm_issue_rate): Handle cortexa9.
1006 * config/arm/arm.h (arm_tune_cortex_a9): Declare.
1007 * config/arm/arm-cores.def: Add cortex-a9.
1008 * config/arm/arm-tune.md: Regenerate.
1009 * config/arm/arm.md: Include cortex-a9.md.
1010 (generic_sched, generic_vfp): Add cortexa9.
1011 * config/arm/cortex-a9.md: New file.
1013 2008-09-02 Richard Guenther <rguenther@suse.de>
1015 PR tree-optimization/37327
1016 * tree-vrp.c (register_new_assert_for): Make sure to not have
1017 TREE_OVERFLOW set on the bound.
1019 2008-09-02 Alexander Monakov <amonakov@ispras.ru>
1021 Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
1023 * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
1024 * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
1027 2008-09-02 Victor Kaplansky <victork@il.ibm.com>
1029 * gcc/config/spu/spu.md (divdf3): Removed.
1031 2008-09-02 Jakub Jelinek <jakub@redhat.com>
1033 PR tree-optimization/37095
1034 * cgraph.c (cgraph_node): When creating new cgraph node after
1035 assembler_name_hash has been populated, record it in the hash
1038 2008-09-01 Paul Brook <paul@codesourcery.com>
1040 * doc/invoke.texi: Document -mword-relocations.
1041 * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1042 * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1043 * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1044 * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
1045 (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
1046 (arm_emit_movpair): New function.
1047 (arm_print_operand <c>): Handle sybolic addresses.
1048 * config/arm/arm.h (TARGET_USE_MOVT): Define.
1049 (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1050 * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
1051 * config/arm/arm.opt: Add -mword-relocations.
1052 * config/arm/arm.md (movsi): Use arm_emit_movpair.
1053 (arm_movt, arm_movw): New.
1055 2008-09-01 Paul Brook <paul@codesourcery.com>
1057 * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
1058 Allow Interworking on ARMv4 EABI based targets.
1059 * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
1060 (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
1062 2008-09-01 Paul Brook <paul@codesourcery.com>
1064 * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
1065 optimized LT0 test. Remove optimization for GT.
1067 2008-09-01 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1069 * pa64-hpux.h (LIB_SPEC): Link against librt when building static
1070 openmp applications.
1071 * pa-hpux11.h (LIB_SPEC): Likewise.
1073 * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS is
1076 2008-09-01 Jan Hubicka <jh@suse.cz>
1078 * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
1079 present, use only counts; when guessed use only frequencies.
1080 (estimate_bb_frequencies): Use function_frequency.
1081 * profile.c (compute_branch_probabilities): Exit early when
1082 profile reading failed. Set profile_status.
1083 (branch_prob): Do not set profile_status.
1085 2008-09-01 Aldy Hernandez <aldyh@redhat.com>
1087 * tree.c (protected_set_expr_location): New.
1088 * tree.h (protected_set_expr_location): New prototype.
1089 * c-tree.h (build_array_ref): Add argument.
1090 (parser_build_unary_op): Same.
1091 * c-typeck.c (build_indirect_ref): Handle new location argument.
1092 (build_array_ref): Same.
1093 (parser_build_unary_op): Same.
1094 * gimplify.c (gimplify_asm_expr): Set input_location before calling
1096 * c-omp.c (c_finish_omp_atomic): Pass location when calling
1098 * c-common.c (finish_label_address_expr): Handle new location
1100 * c-common.h (build_indirect_ref): Add argument.
1101 (finish_label_address_expr): Same.
1102 * c-parser.c (c_parser_unary_expression): Pass location to build
1104 (c_parser_postfix_expression): Same.
1106 2008-09-01 Paul Brook <paul@codesourcery.com>
1108 * config/arm/arm.md: Include cortex-r4f.md.
1109 (attr fpu): Update type list.
1110 (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
1111 fconstd, fcmps and fcmpd.
1112 (attr tune_cortexr4): Define.
1113 (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
1114 * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
1115 fconsts, fconstd, fcmps and fcmpd. Use them in insn patterns.
1116 * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
1117 * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn
1119 * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
1120 cortex_a8_vfp_farith: Ditto.
1121 * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
1122 * config/arm/cortex-r4.md: Use tune_cortexr4.
1123 * config/arm/cortex-r4f.md: New file.
1125 2008-09-01 Richard Guenther <rguenther@suse.de>
1127 PR tree-optimization/37305
1128 * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
1129 the result of constant conversions.
1130 (fold_gimple_assign): Likewise.
1132 2008-09-01 Andrey Belevantsev <abel@ispras.ru>
1134 * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
1135 #ifdef ENABLE_CHECKING.
1137 2008-09-01 Andrey Belevantsev <abel@ispras.ru>
1139 * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
1140 * sched-int.h (print_insn, print_pattern, print_value): Declare also
1141 when !INSN_SCHEDULING.
1143 2008-09-01 Andreas Schwab <schwab@suse.de>
1145 * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
1147 2008-09-01 Paul Brook <paul@codesourcery.com>
1149 * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
1151 2008-09-01 Jan Hubicka <jh@suse.cz>
1153 * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
1155 * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
1156 * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
1157 * gimplify.c (gimplify_init_constructor): Add speed operand.
1158 * tree-sra.c (decide_block_copy): Likewise.
1159 * tree-inline.c (estimate_move_cost): Likewise.
1160 * config/alpha/alpha.h (MOVE_RATIO): Update.
1161 * config/frv/frv.c (MOVE_RATIO): Update.
1162 * config/spu/spu.h (MOVE_RATIO): Update.
1163 * config/sparc/sparc.h (MOVE_RATIO): Update.
1164 * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
1165 * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
1166 * config/cris/cris.h (MOVE_RATIO): Update.
1167 * config/mn10300/mn10300.h (MOVE_RATIO): Update.
1168 * config/arm/arm.h (MOVE_RATIO): Update.
1169 * config/pa/pa.md: Update uses of MOVE_RATIO
1170 * config/pa/pa.h (MOVE_RATIO): Update.
1171 * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
1172 * config/h8300/h8300.h (MOVE_RATIO): Update.
1173 * config/v850/v850.h (MOVE_RATIO): Update.
1174 * config/bfin/bfin.h (MOVE_RATIO): Update.
1176 2008-08-31 Andrey Belevantsev <abel@ispras.ru>
1177 Dmitry Melnik <dm@ispras.ru>
1178 Dmitry Zhurikhin <zhur@ispras.ru>
1179 Alexander Monakov <amonakov@ispras.ru>
1180 Maxim Kuvyrkov <maxim@codesourcery.com>
1182 * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
1183 sel-sched-dump.c, sel-sched-ir.c: New files.
1184 * Makefile.in (OBJS-common): Add selective scheduling object
1186 (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
1187 (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
1188 (sched-vis.o): Add dependency on $(INSN_ATTR_H).
1189 * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
1190 * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
1191 (make_forwarder_block): Update loop latch if we have redirected
1192 the loop latch edge.
1193 * cfgloop.c (get_loop_body_in_custom_order): New function.
1194 * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
1195 (CP_FALLTHRU_PREHEADERS): Likewise.
1196 (get_loop_body_in_custom_order): Declare.
1197 * cfgloopmanip.c (has_preds_from_loop): New.
1198 (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
1199 Assert that the preheader edge will be fall thru when it is set.
1200 * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
1201 fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
1202 fsel-sched-substitution, fselective-scheduling): New flags.
1203 * cse.c (hash_rtx_cb): New.
1205 * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
1206 sel_sched_insn_cnt): New counters.
1207 * final.c (compute_alignments): Export. Free dominance info after loop_optimizer_finalize.
1208 * genattr.c (main): Output maximal_insn_latency prototype.
1209 * genautomata.c (output_default_latencies): New. Factor its code from ...
1210 (output_internal_insn_latency_func): ... here.
1211 (output_internal_maximal_insn_latency_func): New.
1212 (output_maximal_insn_latency_func): New.
1213 * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
1214 (struct hard_reg_set_iterator): New.
1215 (hard_reg_set_iter_init, hard_reg_set_iter_set,
1216 hard_reg_set_iter_next): New functions.
1217 (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
1218 * lists.c (remove_free_INSN_LIST_node,
1219 remove_free_EXPR_LIST_node): New functions.
1220 * loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
1221 set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
1222 (loop_optimizer_finalize): Do not verify flow info after reload.
1223 * recog.c (validate_replace_rtx_1): New parameter simplify.
1224 Default it to true. Update all uses. Factor out simplifying
1226 (simplify_while_replacing): ... this new function.
1227 (validate_replace_rtx_part,
1228 validate_replace_rtx_part_nosimplify): New.
1229 * recog.h (validate_replace_rtx_part,
1230 validate_replace_rtx_part_nosimplify): Declare.
1231 * rtl.c (rtx_equal_p_cb): New.
1232 (rtx_equal_p): Use it.
1233 * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
1234 (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
1235 debug_bb_n_slim, debug_bb_slim, print_rtl_slim): Likewise.
1236 * vecprim.h: Add a vector type for unsigned int.
1237 * haifa-sched.c: Include vecprim.h and cfgloop.h.
1238 (issue_rate, sched_verbose_param, note_list, dfa_state_size,
1239 ready_try, cycle_issued_insns, spec_info): Make global.
1240 (readyp): Initialize.
1241 (dfa_lookahead): New global variable.
1242 (old_max_uid, old_last_basic_block): Remove.
1243 (h_i_d): Make it a vector.
1244 (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
1246 (after_recovery, adding_bb_to_current_region_p):
1247 New variables to handle correct insertion of the recovery code.
1248 (struct ready_list): Move declaration to sched-int.h.
1249 (rgn_n_insns): Removed.
1250 (rtx_vec_t): Move to sched-int.h.
1251 (find_insn_reg_weight): Remove.
1252 (find_insn_reg_weight1): Rename to find_insn_reg_weight.
1253 (haifa_init_h_i_d, haifa_finish_h_i_d):
1254 New functions to initialize / finalize haifa instruction data.
1255 (extend_h_i_d, init_h_i_d): Rewrite.
1256 (unlink_other_notes): Move logic to add_to_note_list. Handle
1257 selective scheduler.
1258 (ready_lastpos, ready_element, ready_sort, reemit_notes,
1259 find_fallthru_edge): Make global, remove static prototypes.
1260 (max_issue): Make global. Add privileged_n and state parameters. Use
1262 (extend_global, extend_all): Removed.
1263 (init_before_recovery): Add new param. Fix the handling of the case
1264 when we insert a recovery code before the EXIT which has a predecessor
1265 with a fallthrough edge to it.
1266 (create_recovery_block): Make global. Rename to
1267 sched_create_recovery_block. Update.
1268 (change_pattern): Rename to sched_change_pattern. Make global.
1269 (speculate_insn): Rename to sched_speculate_insn. Make global.
1270 Split haifa-specific functionality into ...
1271 (haifa_change_pattern): New static function.
1272 (sched_extend_bb): New static function.
1273 (sched_init_bbs): New function.
1274 (current_sched_info): Change type to struct haifa_sched_info.
1275 (insn_cost): Adjust for selective scheduling.
1276 (dep_cost_1): New function. Move logic from ...
1277 (dep_cost): ... here.
1278 (dep_cost): Use dep_cost_1.
1279 (contributes_to_priority_p): Use sched_deps_info instead of
1281 (priority): Adjust to work with selective scheduling. Process the
1282 corner case when all dependencies don't contribute to priority.
1283 (rank_for_schedule): Use ds_weak instead of dep_weak.
1284 (advance_state): New function. Move logic from ...
1285 (advance_one_cycle): ... here.
1286 (add_to_note_list, concat_note_lists): New functions.
1287 (rm_other_notes): Make static. Adjust for selective scheduling.
1288 (remove_notes, restore_other_notes): New functions.
1289 (move_insn): Add two arguments. Update assert. Don't call
1291 (choose_ready): Remove lookahead variable, use dfa_lookahead.
1292 Remove more_issue, max_points. Move the code to initialize
1293 max_lookahead_tries to max_issue.
1294 (schedule_block): Remove rgn_n_insns1 parameter. Don't allocate
1295 ready. Adjust use of move_insn. Call restore_other_notes.
1297 (sched_init, sched_finish): Move Haifa-specific initialization/
1299 (haifa_sched_init, haifa_sched_finish): ... respectively.
1301 (setup_sched_dump): New function.
1302 (haifa_init_only_bb): New static function.
1303 (haifa_speculate_insn): New static function.
1304 (try_ready): Use haifa_* instead of speculate_insn and
1306 (extend_ready, extend_all): Remove.
1307 (sched_extend_ready_list, sched_finish_ready_list): New functions.
1308 (create_check_block_twin, add_to_speculative_block): Use
1309 haifa_insns_init instead of extend_global. Update to use new
1310 initialization functions. Change parameter. Factor out code from
1311 create_check_block_twin to ...
1312 (sched_create_recovery_edges) ... this new function.
1313 (add_block): Remove.
1314 (sched_scan_info): New.
1315 (extend_bb): Use sched_scan_info.
1316 (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
1317 static functions for walking through scheduling region.
1318 (sched_luids): New vector variable to replace uid_to_luid.
1319 (luids_extend_insn): New function.
1320 (sched_max_luid): New variable.
1321 (luids_init_insn): New function.
1322 (sched_init_luids, sched_finish_luids): New functions.
1323 (insn_luid): New debug function.
1324 (sched_extend_target): New function.
1325 (haifa_init_insn): New static function.
1326 (sched_init_only_bb): New hook.
1327 (sched_split_block): New hook.
1328 (sched_split_block_1): New function.
1329 (sched_create_empty_bb): New hook.
1330 (sched_create_empty_bb_1): New function.
1331 (common_sched_info, ready): New global variables.
1332 (current_sched_info_var): Remove.
1333 (move_block_after_check): Use common_sched_info.
1334 (haifa_luid_for_non_insn): New static function.
1335 (init_before_recovery): Use haifa_init_only_bb instead of
1337 (increase_insn_priority): New.
1338 * modulo-sched.c: (issue_rate): Remove static declaration.
1339 (sms_sched_info): Change type to haifa_sched_info.
1340 (sms_sched_deps_info, sms_common_sched_info): New variables.
1341 (setup_sched_infos): New.
1342 (sms_schedule): Initialize them. Call haifa_sched_init/finish.
1343 Do not call regstat_free_calls_crossed.
1344 (sms_print_insn): Use const_rtx.
1345 * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
1346 PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
1347 PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
1348 PARAM_SCHED_MEM_TRUE_DEP_COST): New.
1349 * sched-deps.c (sched_deps_info): New. Update all relevant uses of
1350 current_sched_info to use it.
1351 (enum reg_pending_barrier_mode): Move to sched-int.h.
1352 (h_d_i_d): New variable. Initialize to NULL.
1353 ({true, output, anti, spec, forward}_dependency_cache): Initialize
1355 (estimate_dep_weak): Remove static declaration.
1356 (sched_has_condition_p): New function. Adjust users of
1357 sched_get_condition to use it instead.
1358 (conditions_mutex_p): Add arguments indicating which conditions are
1360 (sched_get_condition_with_rev): Rename from sched_get_condition. Add
1361 argument to indicate whether returned condition is reversed. Do not
1362 generate new rtx when condition should be reversed; indicate it by
1363 setting new argument instead.
1364 (add_dependence_list_and_free): Add deps parameter.
1365 Update all users. Do not free dependence list when
1366 deps context is readonly.
1367 (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
1369 (remove_from_dependence_list, remove_from_both_dependence_lists): New.
1370 (remove_from_deps): New. Use the above functions.
1371 (cur_insn, can_start_lhs_rhs_p): New static variables.
1372 (add_or_update_back_dep_1): Initialize present_dep_type.
1373 (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
1374 haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
1375 haifa_note_dep): New functions implementing dependence hooks for
1376 the Haifa scheduler.
1377 (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
1378 note_dep): New functions.
1379 (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
1381 (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
1382 (free_deps): Initialize deps->reg_last.
1383 (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
1384 sched_analyze_insn): Update to use dependency hooks infrastructure
1385 and readonly contexts.
1386 (deps_analyze_insn): New function. Move part of logic from ...
1387 (sched_analyze): ... here. Also move some logic to ...
1388 (deps_start_bb): ... here. New function.
1389 (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
1391 (sched_deps_init): New function. Move code from ...
1392 (init_dependency_caches): ... here. Remove.
1393 (init_deps_data_vector): New.
1394 (sched_deps_finish): New function. Move code from ...
1395 (free_dependency_caches): ... here. Remove.
1396 (init_deps_global, finish_deps_global): Adjust for use with
1397 selective scheduling.
1398 (get_dep_weak): Move logic to ...
1399 (get_dep_weak_1): New function.
1400 (ds_merge): Move logic to ...
1401 (ds_merge_1): New static function.
1402 (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
1403 (ds_get_max_dep_weak): New function.
1404 * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
1405 (n_insns): Rename to rgn_n_insns.
1406 (debug_ebb_dependencies): New function.
1407 (init_ready_list): Use it.
1408 (begin_schedule_ready): Use sched_init_only_bb.
1409 (ebb_print_insn): Indicate when an insn starts a new cycle.
1410 (contributes_to_priority, compute_jump_reg_dependencies,
1411 add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
1412 (add_block1): Remove to ebb_add_block.
1413 (ebb_sched_deps_info, ebb_common_sched_info): New variables.
1414 (schedule_ebb): Initialize them. Use remove_notes instead of
1415 rm_other_notes. Use haifa_local_init/finish.
1416 (schedule_ebbs): Use haifa_sched_init/finish.
1417 * sched-int.h: Include vecprim.h, remove rtl.h.
1418 (struct ready_list): Delete declaration.
1419 (sched_verbose_param, enum sched_pass_id_t,
1420 bb_vec_t, insn_vec_t, rtx_vec_t): New.
1421 (struct sched_scan_info_def): New structure.
1422 (sched_scan_info, sched_scan, sched_init_bbs,
1423 sched_init_luids, sched_finish_luids, sched_extend_target,
1424 haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
1425 (struct common_sched_info_def): New.
1426 (common_sched_info, haifa_common_sched_info,
1427 sched_emulate_haifa_p): Declare.
1429 (sched_luids): Declare.
1430 (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
1431 (sched_max_luid, insn_luid): Declare.
1432 (note_list, remove_notes, restore_other_notes, bb_note): Declare.
1433 (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
1434 print_insn, print_pattern, print_value, haifa_classify_insn,
1435 sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
1436 setup_sched_dump, sched_init, sched_finish,
1437 sel_insn_is_speculation_check): Export.
1438 (struct ready_list): Move from haifa-sched.c.
1439 (ready_try, ready, max_issue): Export.
1440 (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
1441 sched_init_only_bb, sched_split_block, sched_split_block_1,
1442 sched_create_empty_bb, sched_create_empty_bb_1,
1443 sched_create_recovery_block, sched_create_recovery_edges): Export.
1444 (enum reg_pending_barrier_mode): Export.
1445 (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
1447 (struct sched_info): Rename to haifa_sched_info. Use const_rtx for
1448 print_insn field. Move add_block and fix_recovery_cfg to
1449 common_sched_info_def. Move compute_jump_reg_dependencies, use_cselib ...
1450 (struct sched_deps_info_def): ... this new structure.
1451 (sched_deps_info): Declare.
1452 (struct spec_info_def): Remove weakness_cutoff, add
1453 data_weakness_cutoff and control_weakness_cutoff.
1454 (spec_info): Declare.
1455 (struct _haifa_deps_insn_data): Split from haifa_insn_data. Add
1457 (struct haifa_insn_data): Rename to struct _haifa_insn_data.
1458 (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
1459 (current_sched_info): Change type to struct haifa_sched_info.
1460 (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
1461 (h_d_i_d): New variable.
1462 (HDID): New accessor macro.
1463 (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
1464 (HID): New accessor macro. Rewrite h_i_d accessor macros through HID
1466 (IS_SPECULATION_CHECK_P): Update for selective scheduler.
1467 (enum SCHED_FLAGS): Update for selective scheduler.
1468 (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
1469 (init_dependency_caches, free_dependency_caches): Delete declarations.
1470 (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
1471 estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
1472 ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
1473 sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
1474 haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
1476 (rm_other_notes): Delete declaration.
1477 (schedule_block): Remove one argument.
1478 (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
1479 ready_element, ready_lastpos, sched_extend_ready_list,
1480 sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
1481 concat_note_lists): Export.
1482 (struct region): Move from sched-rgn.h.
1483 (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1484 RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1485 BLOCK_TO_BB, CONTAINING_RGN): Export.
1486 (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
1487 (current_nr_blocks, current_blocks, target_bb): Likewise.
1488 (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
1489 sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
1490 sched_rgn_local_init, extend_regions,
1491 rgn_make_new_region_out_of_new_block, compute_priorities,
1492 debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
1493 extend_rgns, deps_join rgn_setup_common_sched_info,
1494 rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
1495 dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
1496 (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
1497 increase_insn_priority): Likewise.
1498 * sched-rgn.c: Include sel-sched.h.
1499 (ref_counts): New static variable. Use it ...
1500 (INSN_REF_COUNT): ... here. Rewrite and move closer to uses.
1501 (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
1502 (sched_is_disabled_for_current_region_p): Delete static declaration.
1503 (struct region): Move to sched-int.h.
1504 (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1505 ebb_head): Define and initialize.
1506 (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1507 BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
1508 BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
1510 (find_single_block_region): Add new argument to indicate that EBB
1511 regions should be constructed.
1512 (debug_live): Delete declaration.
1513 (current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
1514 (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
1516 (init_regions): Delete declaration.
1517 (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
1518 rgn_estimate_number_of_insns): New.
1519 (too_large): Use estimate_number_of_insns.
1520 (haifa_find_rgns): New. Move the code from ...
1521 (find_rgns): ... here. Call either sel_find_rgns or haifa_find_rgns.
1522 (free_trg_info): New.
1523 (compute_trg_info): Allocate candidate tables here instead of ...
1524 (init_ready_list): ... here.
1525 (rgn_print_insn): Use const_rtx.
1526 (contributes_to_priority, extend_regions): Delete static declaration.
1527 (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
1528 (add_block1): Rename to rgn_add_block.
1529 (debug_rgn_dependencies): Delete static qualifier.
1530 (new_ready): Use sched_deps_info. Simplify.
1531 (rgn_common_sched_info, rgn_const_sched_deps_info,
1532 rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
1533 (region_sched_info): Rename to rgn_const_sched_info.
1534 (deps_join): New, extracted from ...
1535 (propagate_deps): ... here.
1536 (compute_block_dependences, debug_dependencies): Update for selective
1538 (free_rgn_deps, compute_priorities): New functions.
1539 (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
1540 sched_rgn_compute_dependencies): New functions.
1541 (schedule_region): Use them.
1542 (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
1543 rgn_setup_common_sched_info, rgn_setup_sched_infos):
1545 (schedule_insns): Call new functions that were split out.
1546 (rgn_make_new_region_out_of_new_block): New.
1547 (get_rgn_sched_max_insns_priority): New.
1548 (rest_of_handle_sched, rest_of_handle_sched2): Call selective
1549 scheduling when appropriate.
1550 * sched-vis.c: Include insn-attr.h.
1551 (print_value, print_pattern): Make global.
1552 (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
1553 * target-def.h (TARGET_SCHED_ADJUST_COST_2,
1554 TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
1555 TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1556 TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
1557 TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
1558 hooks. Initialize them to 0.
1559 (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
1560 * target.h (struct gcc_target): Add them. Rename gen_check field to
1562 * flags.h (sel_sched_switch_set): Declare.
1563 * opts.c (sel_sched_switch_set): New variable.
1564 (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
1565 pipelining is disabled from command line.
1566 (common_handle_option): Record whether selective scheduling is
1567 requested from command line.
1568 * doc/invoke.texi: Document new flags and parameters.
1569 * doc/tm.texi: Document new target hooks.
1570 * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
1571 (dfa_state_size): Do not declare locally.
1572 * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
1573 * config/rs6000/rs6000.c (rs6000_init_sched_context,
1574 rs6000_alloc_sched_context, rs6000_set_sched_context,
1575 rs6000_free_sched_context): New functions.
1576 (struct _rs6000_sched_context): New.
1577 (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
1579 (rs6000_sched_finish): Do not run for selective scheduling.
1581 2008-08-31 Jan Hubicka <jh@suse.cz>
1583 * frv.c (frv_rtx_costs): Update forward declaration.
1584 * spu.c (spu_rtx_costs): Likewise.
1585 * pdp11.c: Include df.h
1586 (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
1587 * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
1588 (m68hc11_rtx_costs_1): Fix call of rtx_cost.
1589 * iq2000.c (iq2000_address_cost): Add speed argument.
1590 (iq2000_rtx_costs): Likewise.
1591 * mn10300.c (mn10300_address_cost_1): Remove speed argument;
1592 update call of mn10300_address_cost.
1593 * mcore.c: Include df.h
1594 (mcore_rtx_costs): Update prototype.
1595 * score3.c: Include df.h
1596 (score3_rtx_costs): Remove speed argument.
1597 * score7.c: Include df.h
1598 (score7_address_cost): Remove speed argument.
1599 * score-protos.h (score_address_cost): Update prototype.
1600 * score.c: Include df.h
1601 (score_rtx_costs): Update call of costs functions.
1602 * v850.c (v850_rtx_costs): Add bool argument.
1604 2008-08-31 Hans-Peter Nilsson <hp@axis.com>
1606 * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
1608 2008-08-31 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
1610 * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
1611 * config/i386/gthr-win32.c (__gthread_setspecific): Same.
1613 2008-08-31 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
1615 * mkmap-flat.awk: Add option pe_dll.
1616 * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
1617 * config/i386/t-cygwin (SHLIB_LC): Add.
1618 * config/i386/t-mingw32 (SHLIB_LC): Add.
1619 * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
1620 (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
1621 (LINK_SPEC): Support libgcc_s.
1622 (LIBGCC_SPEC): Support libgcc_s.
1623 (LIBGCC_SONAME): New.
1625 2008-08-31 Jan Hubicka <jh@suse.cz>
1627 * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
1628 mistakely had old version of patch.
1630 * ipa-cp.c (ipcp_need_original_clone_p): Remove.
1631 (ipcp_estimate_growth): New.
1632 (ipcp_insert_stage): Use ipcp_estimate_growth.
1633 * profile.c (branch_prob): When reading failed, do not consider
1636 2008-08-31 Jan Hubicka <jh@suse.cz>
1638 * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
1639 loop is optimized for speed.
1641 2008-08-31 Richard Guenther <rguenther@suse.de>
1644 * fold-const.c (fold_binary): Retain conversions in folding
1647 2008-08-31 Jan Hubicka <jh@suse.cz>
1649 * postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p.
1650 * predict.c (maybe_hot_frequency_p): Make inline.
1651 (maybe_hot_count_p): Break out from ...
1652 (maybe_hot_bb_p): ... this one.
1653 (maybe_hot_edge_p): Simplify.
1654 * basic-block.h (probably_cold_bb_p): Remove.
1656 2008-08-31 Jakub Jelinek <jakub@redhat.com>
1659 * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
1661 * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
1662 * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
1663 Also split V4SFmode.
1664 * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
1667 2008-08-31 Jan Hubicka <jh@suse.cz>
1669 * predict.c (PROB_VERY_LIKELY): Make small enough so things
1671 * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
1673 2008-08-31 Jakub Jelinek <jakub@redhat.com>
1676 * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
1679 * dwarf2out.c (native_encode_initializer): Subtract min_index for
1680 non-range array index. Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
1682 2008-08-31 Jan Hubicka <jh@suse.cz>
1684 * sparc.h (BRANCH_COST): Fix macro definition.
1685 * avr.c (avr_operand_rtx_cost): Add speed argument.
1686 (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
1688 2008-08-31 Richard Guenther <rguenther@suse.de>
1690 * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
1691 types instead of operands. Re-instantiate verifying of
1692 binary expression operands.
1694 2008-08-30 Jan Hubicka <jh@suse.cz>
1696 * fwprop.c (should_replace_address): Add speed attribute.
1697 (PR_OPTIMIZE_FOR_SPEED): New flag.
1698 (propagate_rtx_1): Use it.
1699 (propagate_rtx): Set it.
1700 (try_fwprop_subst): Update call of rtx_costs.
1701 (forward_propagate_and_simplify): LIkewise.
1702 * hooks.c (hook_int_rtx_bool_0): New
1703 (hook_bool_rtx_int_int_intp_false): Replace by ...
1704 (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1705 * hooks.h (hook_int_rtx_bool_0): New
1706 (hook_bool_rtx_int_int_intp_false): Replace by ...
1707 (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1708 * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
1709 (prepare_cmp_insn): UPdate call of rtx_cost.
1710 * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
1711 (reload_cse_simplify_operands): Update call of rtx_cost.
1712 (reload_cse_move2add): call of rtx_cost.
1713 * target.h (struct gcc_target): Update rtx_costs and address_costs.
1714 * rtlanal.c (rtx_cost): Add speed argument.
1715 (address_cost): Add speed argument
1716 (default_address_cost): Likewise.
1717 (insn_rtx_cost): Likewise.
1718 * cfgloopanal.c (seq_cost): Add speed argument.
1719 (target_reg_cost, target_spill_cost): Turn to array.
1720 (init_set_costs): Update for speed.
1721 (estimate_reg_pressure_cost): Add speed argument.
1722 * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
1723 * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
1724 * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
1725 (seq_cost): Add speed argument.
1726 (computation_cost): Add speed arugment.
1727 (add_cost, multiply_by_const, get_address_cost): add speed argument.
1728 (force_expr_to_var_cost): Update for profile info.
1729 (force_var_cost): Likewise.
1730 (split_address_cost): Likewise.
1731 (ptr_difference_cost): Likewise.
1732 (difference_cost): Likewise.
1733 (get_computation_cost_at): Likewise.
1734 (determine_iv_cost): Likewise.
1735 (ivopts_global_cost_for_size): Likewise.
1736 (rewrite_use_address): Likewise.
1737 (tree_ssa_iv_optimize_loop): Initialize speed field.
1738 * cse.c (optimize_this_for_speed_p): New static var.
1739 (notreg_cost): Update call of rtx_cost.
1740 (cse_extended_basic_block): set optimize_this_for_speed_p.
1741 * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
1742 (noce_try_cmove_arith): Likewise.
1743 (noce_try_sign_mask): LIkewise.
1744 * expr.c (compress_float_constant): Update rtx_cost calls.
1745 * tree-ssa-address.c (most_expensive_mult_to_index): Add speed argument.
1746 (addr_to_parts): Likewise.
1747 (create_mem_ref): Likewise.
1748 * dse.c (find_shift_sequence): Add speed argument.
1749 (replace_read): Update call.
1750 * calls.c (precompute_register_parameters): Update call of rtx_cost.
1751 * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
1752 * neg_cost, shift_cost, shiftadd_cost,
1753 shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
1754 mul_highpart_cost): Increase dimension.
1755 (init_expmed): Initialize for both size and speed.
1756 (expand_shift): Use profile.
1757 (synth_mult): Use profile.
1758 (choose_mult_variant): Use profile.
1759 (expand_mult): Use profile.
1760 (expand_mult_highpart_optab): Use profile.
1761 (expand_mult_highpart): Use profile.
1762 (expand_smod_pow2): Use profile.
1763 (expand_divmod): Use profile.
1764 * simplify-rtx.c (simplify_binary_operation_1): Update call of rtx_cost.
1765 * loop-invariant.c (create_new_invariant): Use profile.
1766 (gain_for_invariant): Add speed parameter.
1767 (best_gain_for_invariant): Likewise.
1768 (find_invariants_to_move): Likewise.
1769 (move_single_loop_invariants): Set it.
1770 * target-def.h (TARGET_RTX_COSTS): Use hook.
1771 * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
1772 (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
1773 * output.h (default_address_cost): Update prototype.
1774 * combine.c (optimize_this_for_speed_p): New static var.
1775 (combine_validate_cost): Update call of rtx_cost.
1776 (combine_instructions): Set optimize_this_for_speed_p.
1777 (expand_compound_operation): Update call of rtx_cost.
1778 (make_extraction):Update call of rtx_cost.
1779 (force_to_mode):Update call of rtx_cost.
1780 (distribute_and_simplify_rtx):Update call of rtx_cost.
1781 * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
1782 (estimate_reg_pressure_cost): Update prototype.
1783 * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
1784 * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
1786 * config/alpha/alpha.c (alpha_rtx_costs): Update.
1787 (alpha_rtx_costs): Update.
1788 * config/frv/frv.c (frv_rtx_costs): Update.
1789 * config/s390/s390.c (s390_rtx_costs): Update.
1790 * config/m32c/m32c.c (m32c_memory_move_cost): Update.
1791 (m32c_rtx_costs): Update.
1792 * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
1793 (spu_rtx_costs): Update.
1794 * config/sparc/sparc.c (sparc_rtx_costs): Update.
1795 * config/m32r/m32r.c (m32r_rtx_costs): Update.
1796 * config/i386/i386.c (:ix86_address_cost): Update.
1797 (ix86_rtx_costs): Update.
1798 * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
1799 * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
1800 * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
1801 * config/crx/crx.c (crx_address_cost): Update.
1802 * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
1803 * config/stormy16/stormy16.c
1804 (xstormy16_address_cost, xstormy16_rtx_costs): Update.
1805 * config/m68hc11/m68hc11.c
1806 (m68hc11_address_cost, m68hc11_rtx_costs): Update.
1807 * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
1808 * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost): Update.
1809 * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs): Update
1810 * config/ia64/ia64.c (ia64_rtx_costs): Update.
1811 * config/m68k/m68k.c (m68k_rtx_costs): Update.
1812 * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
1813 * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
1814 * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
1815 (mcore_rtx_costs): update.
1816 * config/score/score3.c (score3_rtx_costs): Update.
1817 * config/score/score7.c (score7_rtx_costs): Update.
1818 * config/score/score3.h (score3_rtx_costs):Update.
1819 * config/score/score7.h (score7_rtx_costs): Update.
1820 * config/score/score.c (score_rtx_costs): Update.
1821 * config/arm/arm.c (arm_address_cost): Update.
1822 (arm_rtx_costs_1): Update.
1823 (arm_rtx_costs_1): Update.
1824 (arm_size_rtx_costs): Update.
1825 (arm_size_rtx_costs): Update.
1826 (arm_size_rtx_costs): Update.
1827 (arm_xscale_rtx_costs): Update.
1828 (arm_thumb_address_cost): Update.
1829 * config/pa/pa.c (hppa_address_cost): Update.
1830 * config/mips/mips.c (mips_rtx_costs): Update.
1831 * config/vax/vax.c (vax_address_cost): Update.
1832 * config/h8300/h8300.c (h8300_shift_costs): Update.
1833 (h8300_rtx_costs): Update.
1834 * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
1835 (v850_rtx_costs): Update.
1836 * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
1837 * config/bfin/bfin.c
1838 (bfin_address_cost): Update.
1839 (bfin_rtx_costs): Update.
1840 * stmt.c (lshift_cheap_p): Update.
1842 2008-08-30 Andrew Pinski <andrew_pinski@playstation.sony.com>
1845 * expmed.c (extract_bit_field_1): Check the mode size to make
1846 sure the vector modes have the same size.
1848 2008-08-29 Michael Meissner <gnu@the-meissners.org>
1850 * dojump.c (top level): Include basic-block.h to declare
1851 optimize_insn_for_speed_p
1853 * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
1855 * opts.h (CL_SAVE): New option class for marking options that are
1856 target specific options usable in the target attribute.
1857 (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
1859 * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
1860 can easily find the target specific options that are safe to use
1861 in the attribute or pragma.
1863 * attribs.c (decl_attributes): Change #pragma GCC option to
1864 #pragma GCC target, and attribute((option(...))) to
1865 attribute((target(...))).
1867 * doc/extend.texi (target attribute): Change from option
1868 attribute. Delete push/pop/reset.
1869 (#pragma GCC target): Change from #pragma GCC option. Delete
1871 (#pragma GCC push_options): Document new pragma.
1872 (#pragma GCC pop_options): Document new pragma.
1873 (#pragma GCC reset_options): Document new pragma.
1875 * targhooks.c (default_target_option_valid_attribute_p): Add
1876 warning about port not supporting target attributes.
1877 (default_target_option_pragma_parse): New function, warn about
1878 #pragma GCC target not being supported.
1880 * targhooks.h (default_target_option_pragma_parse): Add
1883 * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
1884 TI_CURRENT_OPTION_PRAGMA.
1885 (current_target_pragma): Rename from current_option_pragma.
1887 * target.h: (struct target_option): Delete booleans for changing
1888 the optimization level on hot/cold functions. Change signature of
1889 pragma_parse hook to take a second tree.
1891 * c-tree.h (c_builtin_function_ext_scope): Add declaration.
1893 * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
1894 that the declaration is done at global scope.
1896 * langhooks.c (add_builtin_function_common): Move most of the code
1897 from add_builtin_function here, calling the hook passed in.
1898 (add_builtin_function): Call add_builtin_function_common with
1899 standard builtin hook.
1900 (add_builtin_function_ext_scope): New function to add builtins to
1903 * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
1905 (add_builtin_function_ext_scope): Add declaration.
1907 * c-pragma.c (handle_pragma_target): Rename from
1908 handle_pragma_option, #pragma GCC option is now #pragma GCC
1909 target. Move warning about port not supporting target options to
1910 default pragma parse hook. Remove push/pop/reset from this
1912 (handle_pragma_optimize): Remove push/pop/reset from this pragma.
1913 (option_stack): Delete static variable.
1914 (optimize_stack): Ditto.
1915 (optons_stack): New stack of saved target and optimization
1917 (handle_pragma_push_options): New function to handle pushing both
1918 target and optimization options.
1919 (handle_pragma_pop_options): New function to handle popping both
1920 target and optimization options.
1921 (handle_pragma_reset_options): New function to handle resetting
1922 both target and optimization options to their initial state.
1923 (init_pragma): Rename handle_pragma_option to
1924 handle_pragma_target. Add support for push_options, pop_options,
1925 and reset_options pragmas.
1927 * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
1928 default_target_option_pragma_parse.
1929 (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
1930 default_target_option_valid_attribute_p.
1931 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1932 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1933 (TARGET_OPTION_HOOKS): Delete the fields for whether to change
1934 optimization level on hot/cold functions.
1936 * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
1937 if the caller and callee have different optimization levels.
1939 * c-common.c (handle_target_attribute): Rename from
1940 handle_option_attribute, attribute((option(...))) is now
1941 attribute((target(...))). Move warning if the port does not
1942 support target attributes to the default hook.
1943 (handle_hot_attribute): Delete code to change the optimization
1944 level of hot functions.
1945 (handle_cold_attribute): Ditto.
1947 * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
1948 argument that is the binary tree options to use if there are no
1949 arguments. Call ix86_valid_target_attribute_tree instead of
1950 ix86_valid_option_attribute_tree.
1951 (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
1952 (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
1953 ix86_pragma_option_parse.
1955 * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
1956 Rename from ix86_valid_option_attribute_tree.
1958 * config/i386/i386.c (ix86_add_new_builtins): New function to add
1959 new builtins when the ISA changes.
1960 (ix86_valid_target_attribute_tree): Rename from
1961 ix86_valid_option_attribute_tree. Change callers. If the
1962 function specified optimization options, use those as the starting
1963 point before setting up the target attributes. If the
1964 optimization options were changed in the course of setting the
1965 target attributes, record the new optimization options.
1966 (ix86_valid_target_attribute_tree_inner_p): Rename from
1967 ix86_valid_option_attribute_tree_inner_p. Change callers. Call
1968 ix86_add_new_builtins if the ISA changed.
1969 (ix86_valid_target_attribute_p): Rename from
1970 ix86_valid_option_attribute_p. Change callers.
1971 (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
1972 __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
1973 as delayed builtin functions.
1974 (struct builtin_isa): New structure to record builtin functions
1975 that should be delayed until the ISA for that function is used.
1976 (ix86_builtins_isa): Change from int to struct to track builtin
1977 functions we want to declare at some point.
1978 (def_builtin): If the front end can delay defining the builtin
1979 functions, don't create builtins for ISAs not part of the default
1981 (def_builtin_const): Ditto.
1982 (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
1983 __builtin_ia32_pcmov_v2di to be different builtin functions.
1984 (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
1985 a structure instead of an int.
1986 (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
1987 ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
1988 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1989 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1991 * config/ia64/ia64.h
1992 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1993 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1995 * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
1996 hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
1997 (LANG_HOOKS_INITIALIZER): Add
1998 LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
2000 2008-08-30 Kaz Kojima <kkojima@gcc.gnu.org>
2003 * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
2004 the reload address with the index register for SFmode
2005 access with a displacement.
2007 2008-08-30 Jan Hubicka <jh@suse.cz>
2009 * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
2010 * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
2011 * dojump.c (do_jump): Likewise.
2012 * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
2013 (note-if_info): Add BRANCH_COST.
2014 (noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
2015 noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
2016 noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
2018 * expr.h (BRANCH_COST): Update default.
2019 * predict.c (predictable_edge_p): New function.
2020 * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
2021 Update BRANCH_COST call.
2022 * basic-block.h (predictable_edge_p): Declare.
2023 * config/alpha/alpha.h (BRANCH_COST): Update.
2024 * config/frv/frv.h (BRANCH_COST): Update.
2025 * config/s390/s390.h (BRANCH_COST): Update.
2026 * config/spu/spu.h (BRANCH_COST): Update.
2027 * config/sparc/sparc.h (BRANCH_COST): Update.
2028 * config/m32r/m32r.h (BRANCH_COST): Update.
2029 * config/i386/i386.h (BRANCH_COST): Update.
2030 * config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
2031 * config/sh/sh.h (BRANCH_COST): Update.
2032 * config/pdp11/pdp11.h (BRANCH_COST): Update.
2033 * config/avr/avr.h (BRANCH_COST): Update.
2034 * config/crx/crx.h (BRANCH_COST): Update.
2035 * config/xtensa/xtensa.h (BRANCH_COST): Update.
2036 * config/stormy16/stormy16.h (BRANCH_COST): Update.
2037 * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
2038 * config/iq2000/iq2000.h (BRANCH_COST): Update.
2039 * config/ia64/ia64.h (BRANCH_COST): Update.
2040 * config/rs6000/rs6000.h (BRANCH_COST): Update.
2041 * config/arc/arc.h (BRANCH_COST): Update.
2042 * config/score/score.h (BRANCH_COST): Update.
2043 * config/arm/arm.h (BRANCH_COST): Update.
2044 * config/pa/pa.h (BRANCH_COST): Update.
2045 * config/mips/mips.h (BRANCH_COST): Update.
2046 * config/vax/vax.h (BRANCH_COST): Update.
2047 * config/h8300/h8300.h (BRANCH_COST): Update.
2048 * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
2049 * doc/invoke.texi (predictable-branch-cost-outcome): Document.
2050 * doc/tm.texi (BRANCH_COST): Update.
2052 2008-08-30 Samuel Tardieu <sam@rfc1149.net>
2055 * config/arm/arm.c (arm_optimization_options): Set
2056 flag_section_anchors to 2 instead of 1 to distinguish it from
2057 -fsection-anchors given explicitely on the command line.
2059 2008-08-30 Richard Sandiford <rdsandiford@googlemail.com>
2061 * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
2062 final insn of a split.
2064 2008-08-30 Jan Hubicka <jh@suse.cz>
2066 * postreload-gcse.c (gate_handle_gcse2): Disable for functions
2067 optimized for speed.
2068 * final.c (compute_alignments): Use optimize_bb_for_size_p.
2069 * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
2070 * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
2071 flag_gcse_after_reload_set): New static vars.
2072 (common_handle_option): Enable those flags for profile-use.
2073 (decode_options): Remove optimize_size flags that are handled
2074 on higher granuality.
2075 * tree-vectorizer.c (vectorize_loops): Use
2076 optimize_loop_nest_for_speed_p.
2077 * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
2078 * tree-predcom.c (tree_predictive_commoning): Use
2079 optimize_loop_for_speed_p.
2080 * varasm.c (assemble_start_function): Use optimize_function_for_speed_p.
2081 * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
2082 * predict.c (optimize_loop_for_speed_p): Fix walk.
2084 2008-08-30 Jan Hubicka <jh@suse.cz>
2086 * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
2088 (cgraph_decide_inlining_of_small_function): Use edge->count to detect
2089 profile presence locally.
2091 2008-08-29 Joseph Myers <joseph@codesourcery.com>
2094 * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
2095 versions before 4.0.
2097 2008-08-29 Jan Hubicka <jh@suse.cz>
2099 * tree-inline.c (insert_init_stmt): Insert sequence even when
2102 2008-08-29 Jeff Law <law@redhat.com>
2104 * mn10300.c (mn10300_secondary_reload_class): We need secondary
2105 reloads for AM33-2 if IN is a pseudo with an equivalent memory
2106 location and class is an FP register.
2108 2008-08-29 Jan Hubicka <jh@suse.cz>
2110 * see.c (see_merge_one_def_extension): Silence used uninitialized
2112 * matrix-reorg.c (check_allocation_function): Likewise.
2113 * config/i386/driver-i386.c (detect_caches_amd): Likewise.
2115 2008-08-29 Jakub Jelinek <jakub@redhat.com>
2118 * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
2119 compute new & and | in type rather than TREE_TYPE (arg0).
2121 * dwarf2out.c (fortran_common): Update comment.
2122 (gen_variable_die): Swap com_die and var_die variables in Fortran
2123 COMMON block handling code.
2125 * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
2127 * dwarf2out.c (gen_const_die): New function.
2128 (size_of_die, value_format, output_die): Output larger
2129 dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
2130 (native_encode_initializer): New function.
2131 (tree_add_const_value_attribute): Call it.
2132 (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
2134 * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
2135 DECL_BY_REFERENCE decls don't pass TREE_READONLY and
2136 TREE_THIS_VOLATILE to add_type_attribute.
2138 * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
2140 (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
2143 * dwarf2out.c (loc_by_reference): New function.
2144 (add_location_or_const_value_attribute): Use it.
2147 * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
2148 as DW_TAG_variable children of DW_TAG_common_block rather than
2149 DW_TAG_member children. Put DW_AT_external to individual
2150 DW_TAG_variable DIEs, not to DW_TAG_common_block.
2152 * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
2153 loc_descriptor_from_tree_1.
2157 * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
2158 arguments to imported_module_or_decl.
2159 (debug_nothing_tree_tree): Removed.
2160 (debug_nothing_tree_tree_tree_bool): New prototype.
2161 * debug.c (do_nothing_debug_hooks): Adjust.
2162 (debug_nothing_tree_tree): Removed.
2163 (debug_nothing_tree_tree_tree_bool): New function.
2164 * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
2165 (gen_variable_die): Put all common vars for the
2166 same COMMON block under one DW_TAG_common_block.
2167 (declare_in_namespace): Return new context_die, for Fortran
2168 return the module DIE instead of adding extra declarations into
2170 (gen_type_die_with_usage): Adjust declare_in_namespace caller.
2171 (gen_namespace_die): If is_fortran (), generate DW_TAG_module
2172 instead of DW_TAG_namespace. If DECL_EXTERNAL is set, add
2174 (dwarf2out_global_decl): Don't skip Fortran global vars.
2175 (gen_decl_die): Likewise. Adjust declare_in_namespace callers.
2176 (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
2177 If NAME is non-NULL, add DW_AT_name. If CHILD is non-NULL, put
2178 DW_TAG_imported_declaration as child of previous
2179 DW_TAG_imported_module.
2180 * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
2181 * sdbout.c (sdb_debug_hooks): Likewise.
2182 * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2184 2008-08-29 Jan Hubicka <jh@suse.cz>
2186 * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
2188 * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
2189 * ipa-cp.c (n_cloning_candidates): New static variable.
2190 (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
2191 (ipcp_print_all_lattices): Improve debug output.
2192 (ipcp_cloning_candidate_p): New function.
2193 (ipcp_initialize_node_lattices): Use it.
2194 (ipcp_init_stage): Do only analyzis here; prettier debug output.
2195 (ipcp_propagate_stage): Prettier debug output.
2196 (ipcp_iterate_stage): Initialize latices here; prettier debug output.
2197 (ipcp_print_all_structures): Remove.
2198 (ipcp_need_redirect_p): Test !n_cloning_candidates.
2199 (ipcp_insert_stage): Prettier debug output; call
2200 cgraph_remove_unreachable_nodes before propagating.
2201 (pass_ipa_cp): Schedule function removal pass.
2202 * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
2204 (cgraph_maybe_hot_edge_p): Move to ...
2205 * predict.c (cgraph_maybe_hot_edge_p) ... here.
2206 * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
2207 (common_handle_option): Set them; enable ipa-cp when profiling.
2208 * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
2209 (ipa_print_all_jump_functions): Likewise.
2210 (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
2211 (ipa_print_node_params, ipa_print_all_params): New.
2212 * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
2213 ipa_print_all_param_flags): Remove.
2214 (ipa_print_node_params, ipa_print_all_params): New.
2216 2008-08-29 Bob Wilson <bob.wilson@acm.org>
2218 * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
2219 change from 2008-04-03.
2220 * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
2222 2008-08-29 Vladimir Makarov <vmakarov@redhat.com>
2226 * ira-color.c (push_allocnos_to_stack): Truncate
2227 removed_splay_allocno_vec.
2229 2008-08-29 Vladimir Makarov <vmakarov@redhat.com>
2232 * ira-color (ira_fast_allocation): Don't assign hard registers to
2235 2008-08-29 Jan Hubicka <jh@suse.cz>
2238 * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
2239 for cold internal loops.
2241 2008-08-29 Richard Guenther <rguenther@suse.de>
2243 * tree-ssa-structalias.c (create_variable_info_for): Do not
2244 create fields for heap vars or vars with a noalias state.
2245 For NO_ALIAS_ANYTHING variables add a self-constraint, not one
2248 2008-08-29 Richard Guenther <rguenther@suse.de>
2250 * common.opt (ftree-store-ccp): Mark as preserved for
2251 backward compatibility.
2252 * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
2253 * tree-pass.h (pass_store_ccp): Remove.
2254 * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
2255 (first_vdef): Remove declaration.
2256 (get_value_loaded_by): Likewise.
2257 * tree-ssa-ccp.c (do_store_ccp): Remove.
2258 (get_default_value): Simplify as do_store_ccp is always false
2259 now. Do not initialize mem_ref.
2260 (set_value_varying): Likewise.
2261 (canonicalize_float_value): Likewise.
2262 (set_lattice_value): Likewise.
2263 (likely_value): Likewise.
2264 (surely_varying_stmt_p): Likewise.
2265 (ccp_initialize): Likewise.
2266 (ccp_lattice_meet): Likewise.
2267 (ccp_visit_phi_node): Likewise.
2268 (ccp_fold): Likewise.
2269 (evaluate_stmt): Likewise.
2270 (visit_assignment): Likewise.
2271 (ccp_visit_stmt): Likewise.
2272 (execute_ssa_ccp): Fold into ...
2273 (do_ssa_ccp): ... this.
2274 (do_ssa_store_ccp): Remove.
2275 (gate_store_ccp): Likewise.
2276 (pass_store_ccp): Likewise.
2277 * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
2279 * tree-ssa-propagate.c (first_vdef): Remove.
2280 (get_value_loaded_by): Likewise.
2281 (replace_vuses_in): Likewise.
2282 (substitute_and_fold): Do not call replace_vuses_in.
2283 * opts.c (decode_options): Do not set flag_tree_store_ccp.
2285 2008-08-29 Richard Guenther <rguenther@suse.de>
2288 * tree-ssa-structalias.c (intra_create_variable_infos): Mark
2289 PARAM_NOALIAS tags with is_heapvar.
2290 * tree-ssa-operands.c (access_can_touch_variable): Offset
2291 based tests do not apply for heapvars. Fix offset test.
2293 2008-08-29 Jan Hubicka <jh@suse.cz>
2295 * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
2296 (-fipa-cp-clone): Enabled by default at -O3.
2297 * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
2298 make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
2300 2008-08-29 Jan Hubicka <jh@suse.cz>
2302 * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
2304 * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
2306 * gimple.c (giple_copy_call_skip_args): New function.
2307 (giple_copy_call_skip_args): Declare.
2309 * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
2310 * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
2311 (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p.
2312 (ipcp_create_replace_map): Improve debug output.
2313 (ipcp_need_redirect_p): Return false when not clonning.
2314 (ipcp_update_callgraph): Skip args.
2315 (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
2317 * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
2318 (save_inline_function_body): Update call of tree_function_versioning.
2319 * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
2320 * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument.
2321 (tree_function_versioning): Likewise.
2322 * tree-inline.h (tree_function_versioning): Update prototype.
2324 2008-08-29 Jan Hubicka <jh@suse.cz>
2326 * loop-unswitch.c (unswitch_single_loop): Use optimize_loop_for_speed_p.
2327 * tree-ssa-threadupdate.c (mark_threaded_blocks): Use optimize_function_for_size_p.
2328 * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
2329 * postreload-gcse.c (eliminate_partially_redundant_load): Use optimize_bb_for_size_p.
2330 * value-prof.c (gimple_divmod_fixed_value_transform,
2331 gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
2332 gimple_stringops_transform): Use optimize_bb_for_size_p.
2333 * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
2334 * final.c (compute_alignments): Use optimize_function_for_size_p.
2335 * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
2336 (fold_builtin_strcpy, fold_builtin_fputs): Use
2337 optimize_function_for_size_p.
2338 * fold-const.c (tree_swap_operands_p): Use optimize_function_for_size_p.
2339 * recog.c (relax_delay_slots): Likewise.
2340 * tree-ssa-math-opts.c (replace_reciprocal): Use optimize_bb_for_speed_p.
2341 (execute_cse_reciprocals): Use optimize_bb_for_size_p.
2342 * ipa-inline.c (cgraph_decide_recursive_inlining): Use
2343 optimize_function_for_size_p.
2344 (cgraph_decide_inlining_of_small_function): Use
2345 optimize_function_for_size_p.
2346 * global.c (find_reg): Use optimize_function_for_size_p.
2347 * opts.c (decode_options): Do not clear flag_tree_ch, flag_inline_functions,
2348 flag_unswitch_loops, flag_unroll_loops, flag_unroll_all_loops and
2349 flag_prefetch_loop_arrays. Those can work it out from profile.
2350 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
2351 optimize_loop_for_speed_p.
2352 * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p): Constify
2354 (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
2355 * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
2356 * tree-eh.c (decide_copy_try_finally): Use optimize_function_for_size_p.
2357 * local-alloc.c (block_alloc): Pass BB pointer.
2358 (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
2359 * gcse.c (gcse_main): Use optimize_function_for_size_p.
2360 * loop-unroll.c (decide_unrolling_and_peeling): Use optimize_loop_for_size_p.
2361 (decide_peel_completely): Likewise.
2362 * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
2363 optimize_loop_for_size_p.
2364 (vect_enhance_data_refs_alignment): Likewise.
2365 * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
2366 (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map): Update call.
2367 * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
2368 (try_crossjump_bb): Use optimize_bb_for_size_p.
2369 * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
2370 optimize_loop_for_speed_p.
2371 * bb-reorder.c (find_traces_1_round): Likewise.
2372 (copy_bb): Use optimize_bb_for_speed_p.
2373 (duplicate_computed_gotos): Likewise.
2374 * basic-block.h (optimize_loop_nest_for_size_p,
2375 optimize_loop_nest_for_speed_p): New.
2376 * stmt.c (expand_case): Use optimize_insn_for_size_p.
2378 2008-08-29 Tristan Gingold <gingold@adacore.com>
2380 * gcov.c (main): Call expandargv.
2382 2008-08-29 Jan Hubicka <jh@suse.cz>
2384 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
2386 * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
2388 (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
2389 * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
2391 (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
2393 2008-08-29 Jan Hubicka <jh@suse.cz>
2395 * tree-pass.h (pass_strip_predict_hints): Declare.
2396 * predict.c (strip_builtin_expect): Rename to ...
2397 (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
2398 (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
2399 (tree_estimate_probability): Do not strip builtin_expect.
2400 (pass_strip_predict_hints): New pass.
2401 * tree-inline.c (expand_call_inline): When inlining cold function, predict
2403 * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
2405 2008-08-29 Richard Guenther <rguenther@suse.de>
2407 PR tree-optimization/37207
2408 * tree-vrp.c (extract_range_from_binary_expr): Also try
2409 to constant fold if only one of the operands is a constant.
2411 2008-08-29 Nick Clifton <nickc@redhat.com>
2413 * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
2414 the same way as SYMBOL_REFs.
2416 2008-08-28 Bob Wilson <bob.wilson@acm.org>
2418 * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
2420 2008-08-28 Adam Nemet <anemet@caviumnetworks.com>
2422 * config/mips/mips.h (ISA_HAS_BBIT): New macro.
2423 * config/mips/mips.md (branch_likely): Remove const. Fix
2425 (define_delay for type "branch"): Change to only apply for branch
2426 with likely variant.
2427 (define_delay for type "branch" and "branch_likely" no). New delay
2429 (equality_op): New code iterator.
2430 (bbv, bbinv): New code attributes.
2431 (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
2434 2008-08-28 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2435 Andrew Pinski <pinskia@gcc.gnu.org>
2438 * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
2440 2008-08-28 Paolo Carlini <paolo.carlini@oracle.com>
2442 * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
2443 rule that a symbolic constant must be defined and >= 0 for the
2444 corresponding facility to be present at compile-time.
2445 * gthr-posix.c: Likewise.
2447 2008-08-28 Adam Nemet <anemet@caviumnetworks.com>
2449 * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
2450 * config/mips/mips.md (D): New mode attribute.
2451 (mulsi3, muldi3): Merge it into ...
2452 (mul<mode>3): ... new template. Use _mul3 ending for 3-op
2454 (muldi3_mul3): New pattern.
2455 (mulsi3_mult3): Rename to mulsi3_mul3.
2457 2008-08-28 Jan Hubicka <jh@suse.cz>
2459 * expmed.c (store_bit_field_1): Be prepared for movstrict expander
2461 * predict.c (always_optimize_for_size_p): Rename to ...
2462 (optimize_function_for_size): ... this one; make extern.
2463 (optimize_function_for_speed_p): New.
2464 (optimize_bb_for_size_p, optimize_bb_for_size_p,
2465 optimize_edge_for_size_p,optimize_edge_for_size_p,
2466 optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
2467 * basic-block.h (optimize_function_for_size_p,
2468 optimize_function_for_speed_p): Declare.
2469 * i386.md (optimize_size checks): Replace them by appropriate
2471 (standard_80387_constant_p, ix86_compute_frame_layout,
2472 ix86_expand_epilogue, ix86_decompose_address,
2473 print_operand, emit_i387_cw_initialization,
2474 inline_memory_move_cost, ix86_pad_returns,
2475 ix86_reorg): Replace optimize_size checks.
2477 2008-08-28 Richard Sandiford <rdsandiford@googlemail.com>
2479 * rtl.h (simplify_subreg_regno): Declare.
2480 * rtlanal.c (simplify_subreg_regno): New function, split out from...
2481 * simplify-rtx.c (simplify_subreg): ...here.
2482 * reload.c (find_reloads): Use simplify_subreg_regno instead of
2483 subreg_offset_representable_p.
2485 2008-08-28 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2488 * c-typeck.c (convert_for_assignment): Give a note describing what
2489 was passed and what was expected.
2491 2008-08-28 Joey Ye <joey.ye@intel.com>
2493 * doc/extend.texi: Document AVX built-in functions.
2494 * doc/invoke.texi: Document -mavx.
2496 2008-08-28 H.J. Lu <hongjiu.lu@intel.com>
2497 Joey Ye <joey.ye@intel.com>
2498 Xuepeng Guo <xuepeng.guo@intel.com>
2500 * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
2502 * config/i386/cpuid.h (bit_FMA): New.
2503 (bit_XSAVE): Likewise.
2504 (bit_OSXSAVE): Likewise.
2505 (bit_AVX): Likewise.
2507 * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
2508 define. Use ASM_OUTPUT_AVX_PREFIX.
2510 * config/i386/gmmintrin.h: New.
2512 * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
2513 (OPTION_MASK_ISA_AVX_SET): New.
2514 (OPTION_MASK_ISA_FMA_SET): Likewise.
2515 (OPTION_MASK_ISA_AVX_UNSET): Likewise.
2516 (OPTION_MASK_ISA_FMA_SET): Likewise.
2517 (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
2518 (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
2519 (pta_flags): Add PTA_AVX and PTA_FMA.
2520 (override_options): Handle PTA_AVX and PTA_FMA.
2521 (init_cumulative_args): Handle warn_avx.
2522 (classify_argument): Return 0 for COImode and OImode. Return
2523 1 and X86_64_AVX_CLASS for 256bit vector types.
2524 (examine_argument): Handle X86_64_AVX_CLASS.
2525 (construct_container): Likewise.
2526 (function_arg_advance_32): Pass OImode and 256bit vector types
2528 (function_arg_advance_64): Take a new argument to indicate if a
2529 parameter is named. Handle 256bit vector types. Return
2530 immediately for unnamed 256bit vector mode parameters.
2531 (function_arg_advance): Updated.
2532 (function_arg_32): Add comments for TImode. Handle OImode
2533 and 256bit vector types.
2534 (function_arg_64): Take a new argument to indicate if a
2535 parameter is named. Handle 256bit vector types. Return NULL
2536 for unnamed 256bit vector mode parameters.
2537 (function_arg): Updated.
2538 (setup_incoming_varargs_64): Support
2539 AVX encoding for *sse_prologue_save_insn.
2540 (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
2541 (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
2542 enabled. For all 1s in 256bit vector modes, return 3 if AVX is
2543 enabled, otherwise return -3.
2544 (standard_sse_constant_opcode): Handle AVX and 256bit vector
2546 (print_reg): Support AVX registers. Handle 'x' and 't'.
2547 Handle 'd' to duplicate the operand.
2548 (print_operand): Likewise. Also support AVX vector compare
2550 (output_387_binary_op): Support AVX.
2551 (output_fp_compare): Likewise.
2552 (ix86_expand_vector_move_misalign): Likewise.
2553 (ix86_attr_length_vex_default): New.
2554 (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
2555 IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
2556 IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
2557 IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
2558 IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
2559 IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
2560 IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
2561 IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
2562 IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
2563 IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
2564 IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
2565 IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
2566 IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
2567 IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
2568 IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
2569 IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
2570 IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
2571 IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
2572 IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
2573 IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
2574 IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
2575 IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
2576 IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
2577 IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
2578 IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
2579 IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
2580 IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
2581 IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
2582 IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
2583 IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
2584 IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
2585 IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
2586 IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
2587 IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
2588 IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
2589 IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
2590 IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
2591 IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
2592 IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
2593 IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
2594 IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
2595 IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
2596 IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
2597 IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
2598 IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
2599 IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
2600 IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
2601 IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
2602 IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
2603 IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
2604 IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
2605 IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
2606 IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
2607 IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
2608 IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
2609 IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
2610 IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
2611 IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
2612 IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
2613 IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
2614 IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
2615 IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
2616 IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
2617 IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
2618 and IX86_BUILTIN_MOVMSKPS256,
2619 (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
2620 V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
2621 V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
2622 V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
2623 V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
2624 VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
2625 VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
2626 VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
2627 (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
2628 INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
2629 INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
2630 INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
2631 V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
2632 V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
2633 V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
2634 V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
2635 V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
2636 V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
2637 V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
2638 V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
2639 V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
2640 V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
2641 V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
2642 V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
2643 V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
2644 V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
2645 (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
2646 IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
2647 IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
2648 IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
2649 IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
2650 IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
2651 IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
2652 IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
2653 IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
2654 IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
2655 IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
2656 IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
2657 (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
2658 IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
2659 IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
2660 IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
2661 IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
2662 IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
2663 IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
2664 IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
2665 IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
2666 IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
2667 IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
2668 IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
2669 IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
2670 IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
2671 IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
2672 IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
2673 IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
2674 IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
2675 IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
2676 IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
2678 IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
2679 IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
2680 IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
2681 IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
2682 IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
2683 IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
2684 IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
2685 IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
2686 IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
2687 IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2688 IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
2689 IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2690 IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
2691 IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
2692 IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
2693 IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
2694 IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
2695 IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
2696 IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
2697 IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
2698 IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
2699 IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
2700 IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
2701 IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
2702 IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
2703 IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
2704 IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
2705 IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
2706 IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
2707 IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
2708 IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
2709 IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
2710 IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
2711 IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
2712 IX86_BUILTIN_MOVMSKPS256.
2713 (ix86_init_mmx_sse_builtins): Support AVX builtins.
2714 (ix86_expand_args_builtin): Likewise.
2715 (ix86_expand_special_args_builtin): Likewise.
2716 (ix86_hard_regno_mode_ok): Handle AVX modes.
2717 (ix86_expand_vector_init_duplicate): Likewise.
2718 (ix86_expand_vector_init_one_nonzero): Likewise.
2719 (ix86_expand_vector_init_one_var): Likewise.
2720 (ix86_expand_vector_init_concat): Likewise.
2721 (ix86_expand_vector_init_general): Likewise.
2722 (ix86_expand_vector_set): Likewise.
2723 (ix86_vector_mode_supported_p): Likewise.
2724 (x86_extended_reg_mentioned_p): Check INSN_P before using
2727 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2728 OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
2730 * config/i386/i386.h (TARGET_AVX): New.
2731 (TARGET_FMA): Likewise.
2732 (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
2733 (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
2734 (VALID_AVX256_REG_MODE): New.
2735 (AVX256_VEC_FLOAT_MODE_P): Likewise.
2736 (AVX_FLOAT_MODE_P): Likewise.
2737 (AVX128_VEC_FLOAT_MODE_P): Likewise.
2738 (AVX256_VEC_FLOAT_MODE_P): Likewise.
2739 (AVX_VEC_FLOAT_MODE_P): Likewise.
2740 (ASM_OUTPUT_AVX_PREFIX): Likewise.
2741 (ASM_OUTPUT_OPCODE): Likewise.
2742 (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
2744 (SSE_REG_MODE_P): Allow 256bit vector modes.
2745 (ix86_args): Add a warn_avx field.
2747 * config/i386/i386.md (UNSPEC_PCMP): New.
2748 (UNSPEC_VPERMIL): Likewise.
2749 (UNSPEC_VPERMIL2): Likewise.
2750 (UNSPEC_VPERMIL2F128): Likewise.
2751 (UNSPEC_MASKLOAD): Likewise.
2752 (UNSPEC_MASKSTORE): Likewise.
2753 (UNSPEC_CAST): Likewise.
2754 (UNSPEC_VTESTP): Likewise.
2755 (UNSPECV_VZEROALL): Likewise.
2756 (UNSPECV_VZEROUPPER): Likewise.
2757 (XMM0_REG): Likewise.
2758 (XMM1_REG): Likewise.
2759 (XMM2_REG): Likewise.
2760 (XMM3_REG): Likewise.
2761 (XMM4_REG): Likewise.
2762 (XMM5_REG): Likewise.
2763 (XMM6_REG): Likewise.
2764 (XMM8_REG): Likewise.
2765 (XMM9_REG): Likewise.
2766 (XMM10_REG): Likewise.
2767 (XMM11_REG): Likewise.
2768 (XMM12_REG): Likewise.
2769 (XMM13_REG): Likewise.
2770 (XMM14_REG): Likewise.
2771 (XMM15_REG): Likewise.
2773 (prefix_vex_imm8): Likewise.
2774 (prefix_vex_w): Likewise.
2775 (length_vex): Likewise.
2778 (*avx_ashlti3): Likewise.
2779 (*avx_lshrti3): Likewise.
2780 (*avx_setcc<mode>): Likewise.
2781 (*fop_<mode>_comm_mixed_avx): Likewise.
2782 (*fop_<mode>_comm_avx): Likewise.
2783 (*fop_<mode>_1_mixed_avx): Likewise.
2784 (*fop_<mode>_1_avx): Likewise.
2785 (*avx_<code><mode>3): Likewise.
2786 (*avx_ieee_smin<mode>3): Likewise.
2787 (*avx_ieee_smax<mode>3): Likewise.
2788 (mode): Add OI, V8SF and V4DF.
2789 (length): Support VEX prefix.
2790 (*cmpfp_i_mixed): Set prefix attribute.
2791 (*cmpfp_i_sse): Likewise.
2792 (*cmpfp_iu_mixed): Likewise.
2793 (*cmpfp_iu_sse): Likewise.
2794 (*movsi_1): Support AVX.
2795 (*movdi_2): Likewise.
2796 (*movdi_1_rex64): Likewise.
2797 (*movti_internal): Likewise.
2798 (*movti_rex64): Likewise.
2799 (*movsf_1): Likewise.
2800 (*movdf_nointeger): Likewise.
2801 (*movdf_integer_rex64): Likewise.
2802 (*movtf_internal): Likewise.
2803 (zero_extendsidi2_32): Likewise.
2804 (zero_extendsidi2_rex64): Likewise.
2805 (*extendsfdf2_mixed): Likewise.
2806 (*extendsfdf2_sse): Likewise.
2807 (*truncdfsf_fast_mixed): Likewise.
2808 (*truncdfsf_fast_sse): Likewise.
2809 (*truncdfsf_mixed): Likewise.
2810 (fix_trunc<mode>di_sse): Likewise.
2811 (fix_trunc<mode>si_sse): Likewise.
2812 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
2813 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
2814 (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
2815 (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
2816 (*rcpsf2_sse): Likewise.
2817 (*rsqrtsf2_sse): Likewise.
2818 (*sqrt<mode>2_sse): Likewise.
2819 (sse4_1_round<mode>2): Likewise.
2820 (*sse_prologue_save_insn): Disallow REX prefix for AVX.
2821 Support AVX. Set length attribute properly for AVX.
2823 * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
2824 (VECTOR_MODES (FLOAT, 32)): Likewise.
2825 (VECTOR_MODE (INT, DI, 8)): Likewise.
2826 (VECTOR_MODE (INT, HI, 32)): Likewise.
2827 (VECTOR_MODE (INT, QI, 64)): Likewise.
2828 (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
2829 (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
2830 (VECTOR_MODE (INT, DI, 4)): Removed.
2831 (VECTOR_MODE (INT, SI, 8)): Likewise.
2832 (VECTOR_MODE (INT, HI, 16)): Likewise.
2833 (VECTOR_MODE (INT, QI, 32)): Likewise.
2834 (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
2835 (INT_MODE (OI, 32)): Likewise.
2837 * config/i386/i386.opt (mavx): New.
2840 * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
2842 * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
2843 (*mov<mode>_internal_avx): New.
2844 (*movv2sf_internal_rex64_avx): Likewise.
2845 (*movv2sf_internal_avx): Likewise.
2847 * config/i386/predicates.md (const_4_to_5_operand): New.
2848 (const_6_to_7_operand): Likewise.
2849 (const_8_to_11_operand): Likewise.
2850 (const_12_to_15_operand): Likewise.
2851 (avx_comparison_float_operator): Likewise.
2853 * config/i386/sse.md (AVX256MODEI): New.
2854 (AVX256MODE): Likewise.
2855 (AVXMODEQI): Likewise.
2856 (AVXMODE): Likewise.
2857 (AVX256MODEF2P): Likewise.
2858 (AVX256MODE2P): Likewise.
2859 (AVX256MODE4P): Likewise.
2860 (AVX256MODE8P): Likewise.
2861 (AVXMODEF2P): Likewise.
2862 (AVXMODEF4P): Likewise.
2863 (AVXMODEDCVTDQ2PS): Likewise.
2864 (AVXMODEDCVTPS2DQ): Likewise.
2865 (avxvecmode): Likewise.
2866 (avxvecpsmode): Likewise.
2867 (avxhalfvecmode): Likewise.
2868 (avxscalarmode): Likewise.
2869 (avxcvtvecmode): Likewise.
2870 (avxpermvecmode): Likewise.
2871 (avxmodesuffixf2c): Likewise.
2872 (avxmodesuffixp): Likewise.
2873 (avxmodesuffixs): Likewise.
2874 (avxmodesuffix): Likewise.
2875 (vpermilbits): Likewise.
2876 (pinsrbits): Likewise.
2877 (mov<mode>): Likewise.
2878 (*mov<mode>_internal): Likewise.
2879 (push<mode>1): Likewise.
2880 (movmisalign<mode>): Likewise.
2881 (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2882 (avx_movdqu<avxmodesuffix>): Likewise.
2883 (avx_lddqu<avxmodesuffix>): Likewise.
2884 (<plusminus_insn><mode>3): Likewise.
2885 (*avx_<plusminus_insn><mode>3): Likewise.
2886 (*avx_vm<plusminus_insn><mode>3): Likewise.
2887 (mul<mode>3): Likewise.
2888 (*avx_mul<mode>3): Likewise.
2889 (*avx_vmmul<mode>3): Likewise.
2890 (divv8sf3): Likewise.
2891 (divv4df3): Likewise.
2892 (avx_div<mode>3): Likewise.
2893 (*avx_div<mode>3): Likewise.
2894 (*avx_vmdiv<mode>3): Likewise.
2895 (avx_rcpv8sf2): Likewise.
2896 (*avx_vmrcpv4sf2): Likewise.
2897 (sqrtv8sf2): Likewise.
2898 (avx_sqrtv8sf2): Likewise.
2899 (*avx_vmsqrt<mode>2): Likewise.
2900 (rsqrtv8sf2): Likewise.
2901 (avx_rsqrtv8sf2): Likewise.
2902 (*avx_vmrsqrtv4sf2): Likewise.
2903 (<code><mode>3): Likewise.
2904 (*avx_<code><mode>3_finite): Likewise.
2905 (*avx_<code><mode>3): Likewise.
2906 (*avx_vm<code><mode>3): Likewise.
2907 (*avx_ieee_smin<mode>3): Likewise.
2908 (*avx_ieee_smax<mode>3): Likewise.
2909 (avx_addsubv8sf3): Likewise.
2910 (avx_addsubv4df3): Likewise.
2911 (*avx_addsubv4sf3): Likewise.
2912 (*avx_addsubv2df3): Likewise.
2913 (avx_h<plusminus_insn>v4df3): Likewise.
2914 (avx_h<plusminus_insn>v8sf3): Likewise.
2915 (*avx_h<plusminus_insn>v4sf3): Likewise.
2916 (*avx_h<plusminus_insn>v2df3): Likewise.
2917 (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
2918 (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
2919 (*avx_maskcmp<mode>3): Likewise.
2920 (avx_nand<mode>3): Likewise.
2921 (*avx_<code><mode>3): Likewise.
2922 (*avx_nand<mode>3): Likewise.
2923 (*avx_<code><mode>3): Likewise.
2924 (*avx_cvtsi2ss): Likewise.
2925 (*avx_cvtsi2ssq): Likewise.
2926 (*avx_cvtsi2sd): Likewise.
2927 (*avx_cvtsi2sdq): Likewise.
2928 (*avx_cvtsd2ss): Likewise.
2929 (avx_cvtss2sd): Likewise.
2930 (avx_cvtdq2ps<avxmodesuffix>): Likewise.
2931 (avx_cvtps2dq<avxmodesuffix>): Likewise.
2932 (avx_cvttps2dq<avxmodesuffix>): Likewise.
2933 (*avx_cvtsi2sd): Likewise.
2934 (*avx_cvtsi2sdq): Likewise.
2935 (avx_cvtdq2pd256): Likewise.
2936 (avx_cvtpd2dq256): Likewise.
2937 (avx_cvttpd2dq256): Likewise.
2938 (*avx_cvtsd2ss): Likewise.
2939 (*avx_cvtss2sd): Likewise.
2940 (avx_cvtpd2ps256): Likewise.
2941 (avx_cvtps2pd256): Likewise.
2942 (*avx_movhlps): Likewise.
2943 (*avx_movlhps): Likewise.
2944 (avx_unpckhps256): Likewise.
2945 (*avx_unpckhps): Likewise.
2946 (avx_unpcklps256): Likewise.
2947 (*avx_unpcklps): Likewise.
2948 (avx_movshdup256): Likewise.
2949 (avx_movsldup256): Likewise.
2950 (avx_shufps256): Likewise.
2951 (avx_shufps256_1): Likewise.
2952 (*avx_shufps_<mode>): Likewise.
2953 (*avx_loadhps): Likewise.
2954 (*avx_storelps): Likewise.
2955 (*avx_loadlps): Likewise.
2956 (*avx_movss): Likewise.
2957 (*vec_dupv4sf_avx): Likewise.
2958 (*vec_concatv2sf_avx): Likewise.
2959 (*vec_concatv4sf_avx): Likewise.
2960 (*vec_setv4sf_0_avx): Likewise.
2961 (*vec_setv4sf_avx): Likewise.
2962 (*avx_insertps): Likewise.
2963 (avx_vextractf128<mode>): Likewise.
2964 (vec_extract_lo_<mode>): Likewise.
2965 (vec_extract_hi_<mode>): Likewise.
2966 (vec_extract_lo_<mode>): Likewise.
2967 (vec_extract_hi_<mode>): Likewise.
2968 (vec_extract_lo_v16hi): Likewise.
2969 (vec_extract_hi_v16hi): Likewise.
2970 (vec_extract_lo_v32qi): Likewise.
2971 (vec_extract_hi_v32qi): Likewise.
2972 (avx_unpckhpd256): Likewise.
2973 (*avx_unpckhpd): Likewise.
2974 (avx_movddup256): Likewise.
2975 (*avx_movddup): Likewise.
2976 (avx_unpcklpd256): Likewise.
2977 (*avx_unpcklpd): Likewise.
2978 (avx_shufpd256): Likewise.
2979 (avx_shufpd256_1): Likewise.
2980 (*avx_punpckhqdq): Likewise.
2981 (*avx_punpcklqdq): Likewise.
2982 (*avx_shufpd_<mode>): Likewise.
2983 (*avx_storehpd): Likewise.
2984 (*avx_loadhpd): Likewise.
2985 (*avx_loadlpd): Likewise.
2986 (*avx_movsd): Likewise.
2987 (*vec_concatv2df_avx): Likewise.
2988 (*avx_<plusminus_insn><mode>3): Likewise.
2989 (*avx_<plusminus_insn><mode>3): Likewise.
2990 (*avx_mulv8hi3): Likewise.
2991 (*avxv8hi3_highpart): Likewise.
2992 (*avx_umulv8hi3_highpart): Likewise.
2993 (*avx_umulv2siv2di3): Likewise.
2994 (*avx_mulv2siv2di3): Likewise.
2995 (*avx_pmaddwd): Likewise.
2996 (*avx_mulv4si3): Likewise.
2997 (*avx_ashr<mode>3): Likewise.
2998 (*avx_lshr<mode>3): Likewise.
2999 (*avx_ashl<mode>3): Likewise.
3000 (*avx_<code><mode>3): Likewise.
3001 (*avx_eq<mode>3): Likewise.
3002 (*avx_gt<mode>3): Likewise.
3003 (*avx_nand<mode>3): Likewise.
3004 (*avx_nand<mode>3): Likewise.
3005 (*avx_<code><mode>3): Likewise.
3006 (*avx_<code><mode>3): Likewise.
3007 (*avx_packsswb): Likewise.
3008 (*avx_packssdw): Likewise.
3009 (*avx_packuswb): Likewise.
3010 (*avx_punpckhbw): Likewise.
3011 (*avx_punpcklbw): Likewise.
3012 (*avx_punpckhwd): Likewise.
3013 (*avx_punpcklwd): Likewise.
3014 (*avx_punpckhdq): Likewise.
3015 (*avx_punpckldq): Likewise.
3016 (*avx_pinsr<avxmodesuffixs>): Likewise.
3017 (*avx_pinsrq): Likewise.
3018 (*avx_loadld): Likewise.
3019 (*vec_extractv2di_1_rex64_avx): Likewise.
3020 (*vec_extractv2di_1_avx): Likewise.
3021 (*vec_dupv2di_avx): Likewise.
3022 (*vec_concatv2si_avx): Likewise.
3023 (*vec_concatv4si_1_avx): Likewise.
3024 (*vec_concatv2di_avx): Likewise.
3025 (*vec_concatv2di_rex64_avx): Likewise.
3026 (*avx_uavgv16qi3): Likewise.
3027 (*avx_uavgv8hi3): Likewise.
3028 (*avx_psadbw): Likewise.
3029 (avx_movmskp<avxmodesuffixf2c>256): Likewise.
3030 (*avx_phaddwv8hi3): Likewise.
3031 (*avx_phadddv4si3): Likewise.
3032 (*avx_phaddswv8hi3): Likewise.
3033 (*avx_phsubwv8hi3): Likewise.
3034 (*avx_phsubdv4si3): Likewise.
3035 (*avx_phsubswv8hi3): Likewise.
3036 (*avx_pmaddubsw128): Likewise.
3037 (*avx_pmulhrswv8hi3): Likewise.
3038 (*avx_pshufbv16qi3): Likewise.
3039 (*avx_psign<mode>3): Likewise.
3040 (*avx_palignrti): Likewise.
3041 (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3042 (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3043 (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3044 (*avx_mpsadbw): Likewise.
3045 (*avx_packusdw): Likewise.
3046 (*avx_pblendvb): Likewise.
3047 (*avx_pblendw): Likewise.
3048 (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3049 (avx_ptest256): Likewise.
3050 (avx_roundp<avxmodesuffixf2c>256): Likewise.
3051 (*avx_rounds<ssemodesuffixf2c>): Likewise.
3052 (*avx_aesenc): Likewise.
3053 (*avx_aesenclast): Likewise.
3054 (*avx_aesdec): Likewise.
3055 (*avx_aesdeclast): Likewise.
3056 (avx_vzeroupper): Likewise.
3057 (avx_vzeroupper_rex64): Likewise.
3058 (avx_vpermil<mode>): Likewise.
3059 (avx_vpermilvar<mode>3): Likewise.
3060 (avx_vpermil2<mode>3): Likewise.
3061 (avx_vperm2f128<mode>3): Likewise.
3062 (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3063 (avx_vbroadcastss256): Likewise.
3064 (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
3065 (avx_vinsertf128<mode>): Likewise.
3066 (vec_set_lo_<mode>): Likewise.
3067 (vec_set_hi_<mode>): Likewise.
3068 (vec_set_lo_<mode>): Likewise.
3069 (vec_set_hi_<mode>): Likewise.
3070 (vec_set_lo_v16hi): Likewise.
3071 (vec_set_hi_v16hi): Likewise.
3072 (vec_set_lo_v32qi): Likewise.
3073 (vec_set_hi_v32qi): Likewise.
3074 (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3075 (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3076 (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
3077 (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
3078 (vec_init<mode>): Likewise.
3079 (*vec_concat<mode>_avx): Likewise.
3080 (blendbits): Support V8SF and V4DF.
3081 (sse2_movq128): Support AVX.
3082 (<sse>_movnt<mode>): Likewise.
3083 (sse2_movntv2di): Likewise.
3084 (sse_rcpv4sf2): Likewise.
3085 (sse_sqrtv4sf2): Likewise.
3086 (sse_rsqrtv4sf2): Likewise.
3087 (<sse>_comi): Likewise.
3088 (<sse>_ucomi): Likewise.
3089 (sse_cvtss2si): Likewise.
3090 (sse_cvtss2si_2): Likewise.
3091 (sse_cvtss2siq): Likewise.
3092 (sse_cvtss2siq_2): Likewise.
3093 (sse_cvttss2si): Likewise.
3094 (sse_cvttss2siq): Likewise.
3095 (sse2_cvtsd2si): Likewise.
3096 (sse2_cvtsd2si_2): Likewise.
3097 (sse2_cvtsd2siq): Likewise.
3098 (sse2_cvtsd2siq_2): Likewise.
3099 (sse2_cvttsd2si): Likewise.
3100 (sse2_cvttsd2siq): Likewise.
3101 (sse2_cvtdq2pd): Likewise.
3102 (*sse2_cvtpd2dq): Likewise.
3103 (*sse2_cvttpd2dq): Likewise.
3104 (*sse2_cvtpd2ps): Likewise.
3105 (sse2_cvtps2pd): Likewise.
3106 (sse3_movshdup): Likewise.
3107 (sse3_movsldup): Likewise.
3108 (sse_storehps): Likewise.
3109 (*sse4_1_extractps): Likewise.
3110 (sse2_storelpd): Likewise.
3111 (vec_dupv2df_sse3): Likewise.
3112 (*vec_concatv2df_sse3): Likewise.
3113 (*sse4_1_pextrb): Likewise.
3114 (*sse4_1_pextrb_memory): Likewise.
3115 (*sse2_pextrw): Likewise.
3116 (*sse4_1_pextrw_memory): Likewise.
3117 (*sse4_1_pextrd): Likewise.
3118 (*sse4_1_pextrq): Likewise.
3119 (sse2_pshufd_1): Likewise.
3120 (sse2_pshuflw_1): Likewise.
3121 (sse2_pshufhw_1): Likewise.
3122 (*sse2_storeq_rex64): Likewise.
3123 (*vec_dupv4si): Likewise.
3124 (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
3125 (sse2_pmovmskb): Likewise.
3126 (*sse2_maskmovdqu): Likewise.
3127 (*sse2_maskmovdqu_rex64): Likewise.
3128 (sse_ldmxcsr): Likewise.
3129 (sse_stmxcsr): Likewise.
3130 (abs<mode>2): Likewise.
3131 (sse4_1_movntdqa): Likewise.
3132 (sse4_1_phminposuw): Likewise.
3133 (sse4_1_extendv8qiv8hi2): Likewise.
3134 (*sse4_1_extendv8qiv8hi2): Likewise.
3135 (sse4_1_extendv4qiv4si2): Likewise.
3136 (*sse4_1_extendv4qiv4si2): Likewise.
3137 (sse4_1_extendv2qiv2di2): Likewise.
3138 (*sse4_1_extendv2qiv2di2): Likewise.
3139 (sse4_1_extendv4hiv4si2): Likewise.
3140 (*sse4_1_extendv4hiv4si2): Likewise.
3141 (sse4_1_extendv2hiv2di2): Likewise.
3142 (*sse4_1_extendv2hiv2di2): Likewise.
3143 (sse4_1_extendv2siv2di2): Likewise.
3144 (*sse4_1_extendv2siv2di2): Likewise.
3145 (sse4_1_zero_extendv8qiv8hi2): Likewise.
3146 (*sse4_1_zero_extendv8qiv8hi2): Likewise.
3147 (sse4_1_zero_extendv4qiv4si2): Likewise.
3148 (*sse4_1_zero_extendv4qiv4si2): Likewise.
3149 (sse4_1_zero_extendv2qiv2di2): Likewise.
3150 (*sse4_1_zero_extendv2qiv2di2): Likewise.
3151 (sse4_1_zero_extendv4hiv4si2): Likewise.
3152 (*sse4_1_zero_extendv4hiv4si2): Likewise.
3153 (sse4_1_zero_extendv2hiv2di2): Likewise.
3154 (*sse4_1_zero_extendv2hiv2di2): Likewise.
3155 (sse4_1_zero_extendv2siv2di2): Likewise.
3156 (*sse4_1_zero_extendv2siv2di2): Likewise.
3157 (sse4_1_ptest): Likewise.
3158 (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
3159 (sse4_2_pcmpestri): Likewise.
3160 (sse4_2_pcmpestrm): Likewise.
3161 (sse4_2_pcmpistri): Likewise.
3162 (sse4_2_pcmpistrm): Likewise.
3164 (aeskeygenassist): Likewise.
3166 2008-08-28 Uros Bizjak <ubizjak@gmail.com>
3168 * config/i386/predicates.md (vzeroall_operation): New.
3170 * config/i386/sse.md (avx_vzeroall): New.
3171 (*avx_vzeroall): Likewise.
3173 2008-08-28 Paul Brook <paul@codesourcery.com>
3174 Mark Shinwell <shinwell@codesourcery.com>
3175 Richard Earnshaw <richard.earnshaw@arm.com>
3177 * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
3178 (TARGET_MIN_ANCHOR_OFFSET): New.
3179 (arm_override_options): Set correct anchor ranges for Thumb-1
3180 and Thumb-2 if required.
3181 (legitimize_pic_address): Handle case involving a TLS symbol
3182 reference with an addend.
3183 (arm_optimization_options): Enable section anchors at -O1 and
3185 * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
3186 * config/arm/arm-protos.h (arm_optimization_options): New.
3188 2008-08-28 Nick Clifton <nickc@redhat.com>
3190 * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
3191 * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
3194 * config/v850/v850.h (IRA_COVER_CLASSES): Define.
3195 * config/v850/v850.md (return): Remove frame size restriction.
3197 * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
3199 * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
3201 * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
3203 * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
3205 2008-08-28 Paul Brook <paul@codesourcery.com>
3207 * config/arm/vfp11.md: Update license notice.
3208 * config/arm/cortex-r4.md: Ditto.
3210 2008-08-28 Richard Guenther <rguenther@suse.de>
3212 PR tree-optimization/37207
3213 * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
3216 2008-08-28 Dodji Seketeli <dodji@redhat.com>
3219 * tree.c (int_fits_type_p): Don't forget unsigned integers
3220 of type sizetype which higher end word equals -1.
3222 2008-08-28 Ira Rosen <irar@il.ibm.com>
3224 * target.h (struct vectorize): Add new target builtin.
3225 * tree-vectorizer.c (destroy_loop_vec_info): Call
3226 vect_free_slp_instance instead of vect_free_slp_node.
3227 * tree-vectorizer.h (enum slp_load_perm_type): New.
3228 (struct _slp_instance): Add new fields.
3229 (SLP_INSTANCE_LOAD_PERMUTATION): New.
3230 (SLP_INSTANCE_LOADS): New.
3231 (vect_free_slp_tree): Remove.
3232 (vect_free_slp_instance): Declare.
3233 (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
3234 (vectorizable_load): Add argument.
3235 (vect_transform_slp_perm_load): New.
3236 * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
3238 (vect_get_place_in_interleaving_chain): New function.
3239 (vect_free_slp_tree): Make static.
3240 (vect_free_slp_instance): New function.
3241 (vect_build_slp_tree): Add new arguments. Allow load permutations and
3242 collect the load location in the interleaving chain.
3243 (vect_supported_slp_permutation_p): New function.
3244 (vect_supported_load_permutation_p): Likewise.
3245 (vect_analyze_slp_instance): In case of loads permutation, call
3246 vect_supported_load_permutation_p to check that the permutation is
3248 * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
3249 * tree-vect-transform.c (vect_transform_stmt): Add new argument.
3250 (vect_create_mask_and_perm): New function.
3251 (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
3252 (vectorizable_load): Add an argument. Don't keep the created vectors
3253 statements in the node if permutation is required. Call
3254 vect_transform_slp_perm_load to generate the permutation.
3255 (vect_transform_stmt): Add new argument. Call vectorizable_load with
3256 additional argument.
3257 (vect_schedule_slp_instance): In case of loads permutation, allocate
3258 vectorized statements structure for all the related SLP nodes. Call
3259 vect_transform_stmt with addditional argument.
3260 (vect_transform_loop): Call vect_transform_stmt with correct arguments.
3261 * config/spu/spu.c (spu_builtin_vec_perm): New.
3262 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
3263 * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
3264 * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
3265 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
3267 2008-08-28 Chris Fairles <chris.fairles@gmail.com>
3269 * gthr-posix.h (__gthread_create, __gthread_join, __gthread_detach,
3270 __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
3271 __gthread_cond_signal, __gthread_cond_timedwait,
3272 __gthread_cond_timedwait_recursive): New functions.
3273 * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
3275 * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
3278 2008-08-28 Richard Guenther <rguenther@suse.de>
3281 * fold-const.c (maybe_canonicalize_comparison_1): Require
3282 undefined overflow only for canonicalizing A +- CST cmp CST.
3283 Make sure to not generate new constants that are not inside
3284 their TYPE_MIN/MAX_VALUE range.
3285 (maybe_canonicalize_comparison): Remove undefined overflow
3287 (fold_binary): Remove now duplicate folding.
3289 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
3291 * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
3292 use not updated in the last change.
3294 2008-08-27 Kaz Kojima <kkojima@gcc.gnu.org>
3296 * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
3297 (IRA_COVER_CLASSES): Add FPUL_REGS.
3299 2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3302 * c-common.c (conversion_warning): Check for null operands.
3304 2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3307 * c-decl.c (check_for_loop_decls): Improve error message. Give
3310 2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3313 * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
3314 (convert_for_assignment): Pass corrent OPT_W* parameter to
3315 WARN_FOR_ASSIGNMENT.
3317 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
3320 * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
3322 2008-08-27 Paul Brook <paul@codesourcery.com>
3324 * config.gcc: Loosen checks for arm uclinux eabi targets.
3326 2008-08-27 Paul Brook <paul@codesourcery.com>
3328 * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
3330 * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
3332 2008-08-26 Douglas Gregor <doug.gregor@gmail.com>
3334 * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
3335 the enumerators of an ENUMERAL_TYPE.
3336 * dbxout.c (dbxout_type): Ditto.
3338 2008-08-26 Andrew Pinski <andrew_pinski@playstation.sony.com>
3341 * fwprop.c (fwprop): Check that the loop_father is the outer loop.
3342 (fwprop_addr): Check that the loop_father is not the outer loop.
3344 2008-08-26 Paul Brook <paul@codesourcery.com>
3346 * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
3347 Remove documentation entry for fmul type.
3348 Use fmuls to annotate single-precision multiplication patterns,
3349 fmuld to annotate double-precision multiplication patterns,
3350 fmacs to annotate single-precision multiply-accumulate patterns
3351 and fmacd to annotate double-precision multiply-accumulate patterns.
3352 * config/arm/vfp11.md: Update reservations accordingly.
3353 * config/arm/arm.md: Note that certain values of the "type"
3354 attribute are documented in vfp.md.
3355 * config/arm/arm1020e.md: Remove out of date duplicate comment.
3356 (v10_cvt): Use new fmul types.
3358 2008-08-26 Paul Brook <paul@codesourcery.com>
3360 * config/arm/vfp.md: Move pipeline description for VFP11 to...
3361 * config/arm/vfp11.md: ...here. New.
3362 * config/arm/arm.md: Include vfp11.md.
3364 2008-08-26 Hans-Peter Nilsson <hp@axis.com>
3366 * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
3367 parameter to inform call.
3369 2008-08-26 Jeff Law <law@redhat.com>
3371 * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
3372 avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
3373 preferred class when copying a constant into a partial word register.
3375 2008-08-26 Ben Elliston <bje@au.ibm.com>