1 2011-09-08 Martin Jambor <mjambor@suse.cz>
3 PR tree-optimization/50287
4 * ipa-split.c (split_function): Do not create SSA names for
7 2011-09-08 Richard Guenther <rguenther@suse.de>
9 PR tree-optimization/19831
10 * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Also
11 skip builtins with vdefs that do not really store something.
12 (propagate_necessity): For calls to free that we can associate
13 with an allocation function do not mark the freed pointer
15 (eliminate_unnecessary_stmts): Remove a call to free if
16 the associated call to an allocation function is not necessary.
18 2011-09-08 Richard Guenther <rguenther@suse.de>
20 PR tree-optimization/19831
21 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Do not mark
22 allocation functions as necessary.
24 2011-09-08 Iain Sandoe <iains@gcc.gnu.org>
26 *config/darwin-driver.c (darwin_find_version_from_kernel): New routine
27 cut from ... (darwin_default_min_version): Amended to provide defaults
28 for the cross directory case.
29 (darwin_driver_init): call darwin_default_min_version unconditionally.
30 * config/darwin.h (DEF_MIN_OSX_VERSION): New.
31 * config/darwin9.h: Likewise.
32 * config/darwin10.h: Likewise.
33 * config/rs6000/darwin7.h: Likewise.
35 2011-09-08 Jakub Jelinek <jakub@redhat.com>
38 * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Return
39 code early if TARGET_AVX.
40 (ix86_expand_fp_vcond): Handle LTGT and UNEQ.
42 2011-09-07 Jakub Jelinek <jakub@redhat.com>
44 * config/i386/sse.md (sseinsnmode): Remove 32-byte integer vector
48 * config/i386/sse.md (*andnot<mode>3, *<code><mode>3): Fix up
49 "mode" attribute computation.
51 2011-09-07 Bernd Schmidt <bernds@codesourcery.com>
53 * regrename.c (struct du_head): Make nregs signed.
54 (closed_chains): Remove.
55 (create_new_chain): Return the new chain.
56 (chain_from_id): New static function.
57 (dump_def_use_chain): Change argument to be an int, indicating
58 the first ID to print. All callers changed.
59 (merge_overlapping_regs): Use chain_from_id. Assert that
60 chains don't conflict with themselves.
61 (rename_chains): Take no argument. Iterate over id_to_chain
62 rather to find chains to rename. Clear tick before the main
64 (struct incoming_reg_info): New struct.
65 (struct bb_rename_info): New struct.
66 (init_rename_info, set_incoming_from_chain, merge_chains): New
68 (regrename_analyze): New static function, broken out of
69 regrename_optimize. Record and make use of open chain information
70 at basic block boundaries, and merge chains where possible.
71 (scan_rtx_reg): Make this_nregs signed. Don't update
73 (build_def_use): Return a bool to indicate success. All callers
74 changed. Don't initialize global data here.
75 (regrename_optimize): Move most code out of here into
77 * regs.h (add_range_to_hard_reg_set, remove_range_from_hard_reg_set,
78 range_overlaps_hard_reg_set_p, range_in_hard_reg_set_p): New
79 static inline functions.
80 * vec.h (FOR_EACH_VEC_ELT_FROM): New macro.
82 * bb-reorder.c (insert_section_boundary_note): Don't check
83 optimize_function_for_speed_p.
84 (gate_handle_partition_blocks): Do it here instead.
85 (gate_handle_reorder_blocks): Move preliminary checks here ...
86 (rest_of_handle_reorder_blocks): ... from here.
88 2011-09-07 Martin Jambor <mjambor@suse.cz>
91 * ipa-cp.c (find_more_values_for_callers_subset): Check jump
92 function index bounds.
93 (perhaps_add_new_callers): Likewise.
95 2011-09-07 Martin Jambor <mjambor@suse.cz>
97 PR tree-optimization/49911
98 * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced
99 enumerations to the corresponding plain integer type.
101 2011-09-07 Richard Guenther <rguenther@suse.de>
103 PR tree-optimization/50319
104 * tree-if-conv.c (set_bb_predicate): Assert we only set
105 canonical predicates.
106 (add_to_predicate_list): Simplify. Allow TRUTH_NOT_EXPR
107 around canonical predicates.
108 (predicate_bbs): Do not re-gimplify already canonical
109 predicates. Properly unshare them though.
110 (find_phi_replacement_condition): Simplify.
112 2011-09-07 Richard Sandiford <richard.sandiford@linaro.org>
115 * config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
116 * config/arm/arm.c (maybe_get_arm_condition_code): New function,
117 reusing the old code from get_arm_condition_code. Return ARM_NV
118 for invalid comparison codes.
119 (get_arm_condition_code): Redefine in terms of
120 maybe_get_arm_condition_code.
121 * config/arm/predicates.md (arm_comparison_operator): Use
122 maybe_get_arm_condition_code.
124 2011-09-07 Richard Guenther <rguenther@suse.de>
126 * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond):
127 Canonicalize negated predicates by swapping edges.
128 (forward_propagate_into_cond): Likewise.
130 2011-09-07 Richard Guenther <rguenther@suse.de>
132 PR tree-optimization/50213
133 * tree-flow.h (simple_iv_increment_p): Declare.
134 * tree-ssa-dom.c (simple_iv_increment_p): Export. Also handle
136 * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Do
137 not propagate simple IV counter increments.
139 2011-09-07 Eric Botcazou <ebotcazou@adacore.com>
140 Iain Sandoe <iains@gcc.gnu.org>
142 * config/rs6000/rs6000.c (compute_save_world_info): Test
143 cfun->has_nonlocal_label to determine if the out-of-line save
144 world call may be used.
146 2011-09-07 Nick Clifton <nickc@redhat.com>
148 * config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Set the jump
149 label on the parallel part of the insn.
151 2011-09-07 Jakub Jelinek <jakub@redhat.com>
154 * dwarf2out.c (mem_loc_descriptor) <case MEM>: Try
155 avoid_constant_pool_reference first instead of last.
157 2011-09-06 Michael Meissner <meissner@linux.vnet.ibm.com>
159 * doc/configfiles.texi (Configuration Files): Update documentation
160 about tm_p.h and remove FIXME comment.
162 2011-09-06 Uros Bizjak <ubizjak@gmail.com>
164 * config/i386/i386.c (ix86_function_value_regno_p): Use AX_REG.
165 (function_value_32): Do not check TARGET_MMX, TARGET_SSE or TARGET_AVX.
167 2011-09-06 Iain Sandoe <iains@gcc.gnu.org>
169 * config/darwin10.h Remove duplicate LIB_SPEC.
171 2011-09-06 Enkovich Ilya <ilya.enkovich@intel.com>
174 * target.def (reassociation_width): New hook.
176 * doc/tm.texi.in (reassociation_width): Likewise.
178 * doc/tm.texi (reassociation_width): Likewise.
180 * doc/invoke.texi (tree-reassoc-width): New param documented.
182 * hooks.h (hook_int_uint_mode_1): New default hook.
184 * hooks.c (hook_int_uint_mode_1): Likewise.
186 * config/i386/i386.h (ix86_tune_indices): Add
187 X86_TUNE_REASSOC_INT_TO_PARALLEL and
188 X86_TUNE_REASSOC_FP_TO_PARALLEL.
190 (TARGET_REASSOC_INT_TO_PARALLEL): New.
191 (TARGET_REASSOC_FP_TO_PARALLEL): Likewise.
193 * config/i386/i386.c (initial_ix86_tune_features): Add
194 X86_TUNE_REASSOC_INT_TO_PARALLEL and
195 X86_TUNE_REASSOC_FP_TO_PARALLEL.
197 (ix86_reassociation_width) implementation of
198 new hook for i386 target.
200 * params.def (PARAM_TREE_REASSOC_WIDTH): New param added.
202 * tree-ssa-reassoc.c (get_required_cycles): New function.
203 (get_reassociation_width): Likewise.
204 (swap_ops_for_binary_stmt): Likewise.
205 (rewrite_expr_tree_parallel): Likewise.
207 (rewrite_expr_tree): Refactored. Part of code moved into
208 swap_ops_for_binary_stmt.
210 (reassociate_bb): Now checks reassociation width to be used
211 and call rewrite_expr_tree_parallel instead of rewrite_expr_tree
214 2011-09-06 Richard Guenther <rguenther@suse.de>
216 PR tree-optimization/47025
217 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): BUILT_IN_VA_END
219 (call_may_clobber_ref_p_1): BUILT_IN_VA_END is a barrier like
221 (stmt_kills_ref_p_1): BUILT_IN_VA_END kills what its argument
222 definitely points to.
223 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
224 BUILT_IN_VA_START doesn't let its va_list argument escape.
225 * tree-ssa-dce.c (propagate_necessity): BUILT_IN_VA_END does
226 not make any previous stores necessary.
228 2011-09-06 Martin Jambor <mjambor@suse.cz>
230 * ipa-inline.h (struct inline_summary): Move versionable flag...
231 * cgraph.h (struct cgraph_local_info): ...here
232 * ipa-cp.c (determine_versionability): Use the new versionable flag.
233 (determine_versionability): Likewise.
234 (ipcp_versionable_function_p): Likewise.
235 (ipcp_generate_summary): Likewise.
236 * ipa-inline-analysis.c (dump_inline_summary): Do not dump the
238 (compute_inline_parameters): Do not clear the versionable flag.
239 (inline_read_section): Do not stream the versionable flag.
240 (inline_write_summary): Likewise.
241 * lto-cgraph.c (lto_output_node): Stream the versionable flag.
242 (input_overwrite_node): Likewise.
244 2011-09-06 Richard Guenther <rguenther@suse.de>
246 PR tree-optimization/48149
247 * tree-ssa-sccvn.c (vn_get_expr_for): Simplify. Fix tuplification bug.
248 (vn_valueize): Move earlier.
249 (valueize_expr): Use vn_valueize.
250 (simplify_binary_expression): Simplify, also combine COMPLEX_EXPR
252 (simplify_unary_expression): Simplify.
254 2011-09-06 Richard Guenther <rguenther@suse.de>
256 PR tree-optimization/48317
257 * tree-ssa-sccvn.h (struct vn_nary_op_s): Make op a true
259 (sizeof_vn_nary_op): New inline function.
260 (vn_nary_op_lookup_pieces): Adjust.
261 (vn_nary_op_insert_pieces): Likewise.
262 * tree-ssa-sccvn.c (vn_nary_op_eq): Also compare the length.
263 (init_vn_nary_op_from_pieces): Adjust signature. Deal with
264 any number of operands.
265 (vn_nary_length_from_stmt): New function.
266 (init_vn_nary_op_from_stmt): Adjust for CONSTRUCTOR handling.
267 (vn_nary_op_lookup_pieces): Adjust signature and allocate properly
269 (vn_nary_op_lookup): Likewise.
270 (vn_nary_op_lookup_stmt): Likewise.
271 (vn_nary_op_insert_into): Likewise.
272 (vn_nary_op_insert_stmt): Likewise.
273 (visit_use): Handle CONSTRUCTOR as nary.
274 * tree-ssa-pre.c (phi_translate_1): Adjust.
275 (create_expression_by_pieces): Likewise.
276 (compute_avail): Likewise.
278 2011-09-06 Ira Rosen <ira.rosen@linaro.org>
280 * config/arm/arm.c (arm_preferred_simd_mode): Check
281 TARGET_NEON_VECTORIZE_DOUBLE instead of
282 TARGET_NEON_VECTORIZE_QUAD.
283 (arm_autovectorize_vector_sizes): Likewise.
284 * config/arm/arm.opt (mvectorize-with-neon-quad): Make inverse
285 mask of mvectorize-with-neon-double. Add RejectNegative.
286 (mvectorize-with-neon-double): New.
288 2011-09-06 Richard Guenther <rguenther@suse.de>
290 * tree-ssa-sccvn.c (visit_use): CSE stmt pieces and simplify
293 2011-09-06 Tom de Vries <tom@codesourcery.com>
295 * recog.c (asm_labels_ok): New function.
296 (check_asm_operands): Use asm_labels_ok.
298 2011-09-05 Richard Sandiford <rdsandiford@googlemail.com>
301 * config/mips/mips.h (ABI_HAS_64BIT_SYMBOLS): Check Pmode.
302 (PMODE_INSN): New macro.
303 * config/mips/mips.c (gen_load_const_gp): Use PMODE_INSN.
304 (mips_got_load, mips_expand_synci_loop): Likewise.
305 (mips_save_gp_to_cprestore_slot): Handle SImode and DImode
307 (mips_emit_loadgp): Use PMODE_INSN. Handle SImode and DImode
308 copygp_mips16 patterns.
309 (mips_expand_prologue): Handle SImode and DImode potential_cprestore
310 and use_cprestore patterns.
311 (mips_override_options): Check for incompatible -mabi and -mlong
313 * config/mips/mips.md (unspec_got<mode>): Rename to...
314 (unspec_got_<mode>): ...this.
315 (copygp_mips16): Use the Pmode iterator.
316 (potential_cprestore, cprestore, use_cprestore): Likewise.
317 (clear_cache, indirect_jump): Use PMODE_INSN.
318 (indirect_jump<mode>): Rename to...
319 (indirect_jump_<mode>): ...this.
320 (tablejump): Use PMODE_INSN.
321 (tablejump<mode>): Rename to...
322 (tablejump_<mode>): ...this.
323 (exception_receiver): Handle restore_gp_si and restore_gp_di.
324 (restore_gp): Use the Pmode iterator.
325 * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Use
328 2011-09-05 Richard Sandiford <rdsandiford@googlemail.com>
330 * config/mips/mips.c (mips_gimplify_va_arg_expr): Unshare off.
331 Fix the type of the BIT_AND_EXPR.
333 2011-09-05 David S. Miller <davem@davemloft.net>
335 * config.host: Add driver-sparc.o and sparc/x-sparc on
336 native sparc*-*-linux* builds.
337 * config/sparc/driver-sparc.c: Correct Linux strings.
338 * config/sparc/linux.h: Add DRIVER_SELF_SPECS.
339 * config/sparc/linux64.h: Likewise.
340 * doc/invoke.texi: Document that Linux also supports
341 -mcpu=native and -mtune=native on sparc.
343 * config/sparc/sparc-opts.h (PROCESSOR_NIAGARA3,
344 PROCESSOR_NIAGARA4): New.
345 * config/sparc/sparc.opt: Handle new processor types.
346 * config/sparc/sparc.md: Add to "cpu" attribute.
347 * config/sparc/sparc.h (TARGET_CPU_niagara3,
348 TARGET_CPU_niagara4): New, treat as niagara2.
349 * config/sparc/linux64.h: Handle niagara3 and niagara4
351 * config/sparc/sol2.h: Likewise.
352 * config/sparc/niagara2.md: Schedule niagara3 like
354 * config/sparc/sparc.c (sparc_option_override): Add
355 niagara3 and niagara4 handling.
356 (sparc32_initialize_trampoline): Likewise.
357 (sparc64_initialize_trampoline): Likewise.
358 (sparc_use_sched_lookahead): Likewise.
359 (sparc_issue_rate): Likewise.
360 (sparc_register_move_cost): Likewise.
361 * config/sparc/driver-sparc.c (cpu_names): Use niagara3
362 and niagara4 as appropriate.
363 * doc/invoke.texi: Document new processor types.
364 * config.gcc: Recognize niagara3 and niagara4 in --with-cpu
365 and --with-tune options.
367 * config/sparc/sol2-64.h: Move ...
368 * config/sparc/default-64.h: ... to here. Update comment.
369 * config.gcc: Update Solaris sparc to use default-64.h, also
370 prefix this header into the list on sparc64-*-linux.
371 * config/sparc/linux64.h (TARGET_DEFAULT): Only override if
372 TARGET_64BIT_DEFAULT is defined. Remove commented out reference
375 2011-09-05 Georg-Johann Lay <avr@gjlay.de>
378 * config/avr/avr.c (sequent_regs_live): Don't recognize sequences
379 that contain global register variable.
381 2011-09-05 Richard Guenther <rguenther@suse.de>
383 * tree-cfg.c (replace_uses_by): Use fold_stmt, not fold_stmt_inplace.
385 2011-09-05 Richard Guenther <rguenther@suse.de>
387 * stor-layout.c (layout_type): Use size_binop for array size
390 2011-09-05 Georg-Johann Lay <avr@gjlay.de>
392 * config/avr/avr.h (progmem_section): Remove Declaration.
393 * config/avr/avr.c (progmem_section): Make static and rename to
394 progmem_swtable_section.
395 (avr_output_addr_vec_elt): No need to switch sections.
396 (avr_asm_init_sections): Use output_section_asm_op as section
397 callback for progmem_swtable_section.
398 (avr_output_progmem_section_asm_op): Remove Function.
399 (TARGET_ASM_FUNCTION_RODATA_SECTION): New Define.
400 (avr_asm_function_rodata_section): New static Function.
401 * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Output
402 alignment 2**1 for jump tables.
404 2011-09-04 Jan Hubicka <jh@suse.cz>
406 * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Check that
407 parameter is SSA name.
409 2011-09-04 Richard Guenther <rguenther@suse.de>
412 2011-08-31 Richard Guenther <rguenther@suse.de>
414 * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
417 2011-09-04 Iain Sandoe <iains@gcc.gnu.org>
420 * config/darwin.h (DEBUG_MACRO_SECTION): New macro.
422 2011-09-04 Jakub Jelinek <jakub@redhat.com>
423 Ira Rosen <ira.rosen@linaro.org>
425 PR tree-optimization/50208
426 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add an
427 argument. Check that def_stmt is inside the loop.
428 (vect_recog_widen_mult_pattern): Update calls to
429 vect_handle_widen_mult_by_cons.
430 (vect_operation_fits_smaller_type): Check that def_stmt is
433 2011-09-04 Ira Rosen <ira.rosen@linaro.org>
435 * tree-vectorizer.c (vect_print_dump_info): Print line
436 number when dumping to a file.
437 (vectorize_loops): Add new messages to dump file.
439 2011-09-03 Martin Jambor <mjambor@suse.cz>
441 * ipa-prop.h (ipa_jump_func_t): New typedef.
442 (struct ipa_edge_args): Removed field argument_count, field
443 jump_functions turned into a vector.
444 (ipa_set_cs_argument_count): Removed.
445 (ipa_get_cs_argument_count): Updated to work on vectors.
446 (ipa_get_ith_jump_func): Likewise.
447 * ipa-prop.c (ipa_count_arguments): Removed.
448 (compute_scalar_jump_functions): Use ipa_get_ith_jump_func to access
449 jump functions. Update caller.
450 (compute_pass_through_member_ptrs): Likewise.
451 (compute_cst_member_ptr_arguments): Likewise.
452 (ipa_compute_jump_functions_for_edge): Get number of arguments from
453 the statement, allocate vector.
454 (ipa_compute_jump_functions): Do not call ipa_count_arguments.
455 (duplicate_ipa_jump_func_array): Removed.
456 (ipa_edge_duplication_hook): Use VEC_copy, do not copy argument count.
457 (ipa_read_node_info): Allocate vector.
459 2011-09-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
462 * config/pa/pa.md (return): Define "return" insn pattern.
463 (epilogue): Use it when no epilogue is needed.
464 * config/pa/pa.c (pa_can_use_return_insn): New function.
465 * config/pa/pa-protos.h (pa_can_use_return_insn): Declare.
467 2011-09-03 Eric Botcazou <ebotcazou@adacore.com>
469 * cfgexpand.c (add_stack_var): Assert that the alignment is not zero.
470 * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Revert latest change.
471 Force at least BITS_PER_UNIT alignment on the new variable.
473 2011-09-02 Gary Funck <gary@intrepid.com>
475 * opts.c (print_specific_help): Fix off-by-one compare in
477 * opts.h (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_DRIVER,
478 CL_TARGET, CL_COMMON, CL_JOINED, CL_SEPARATE, CL_UNDOCUMENTED):
479 Increase by +5 to allow for more languages.
480 * optc-gen.awk: Generate #if that ensures that the number of
481 languages is within the implementation-defined limit.
483 2011-09-02 Michael Matz <matz@suse.de>
486 * ipa-split.c (split_function): Call add_referenced_var.
488 * tree-ssa-phiopt.c (cond_store_replacement): Don't call get_var_ann.
489 (cond_if_else_store_replacement_1): Ditto.
490 * tree-ssa-pre.c (get_representative_for): Ditto.
491 (create_expression_by_pieces): Ditto.
492 (insert_into_preds_of_block): Ditto.
493 * tree-sra.c (create_access_replacement): Ditto.
494 (get_replaced_param_substitute): Ditto.
496 2011-09-02 Bernd Schmidt <bernds@codesourcery.com>
498 * config/c6x/c6x.md (collapse-ndfa, no-comb-vect): New
500 (d1, l1, s1, m1, d2, l2, s2, m2): Changed to define_query_cpu_unit.
501 (l1w, s1w, l2w, s2w): Define in the main automaton.
502 (fps1, fpl1, adddps1, adddpl1, fps2, fpl2, adddps2, adddpl2): New
504 * config/c6x/c6x.c (c6x_sched_insn_info): Add unit_mask member.
505 (c6x_unit_names): Add the new units.
506 (c6x_unit_codes): New static array.
507 (UNIT_QID_D1, UNIT_QID_L1, UNIT_QID_S1, UNIT_QID_M1, UNIT_QID_FPS1,
508 UNIT_QID_FPL1, UNIT_QID_ADDDPS1, UNIT_QID_ADDDPL1,
509 UNIT_QID_SIDE_OFFSET): New macros.
510 (RESERVATION_S2): Adjust value.
511 (c6x_option_override): Compute c6x_unit_codes.
512 (assign_reservations): Take the unit_mask of the last instruction
513 into account. Detect floating point reservations by looking for
514 the new units. Don't assign reservations if the field is already
516 (struct c6x_sched_context): Add member prev_cycle_state_ctx.
517 (init_sched_state): Initialize it.
518 (c6x_clear_sched_context): Free it.
519 (insn_set_clock): Clear reservation.
520 (prev_cycle_state): New static variable.
521 (c6x_init_sched_context): Save it.
522 (c6x_sched_init): Allocate space for it and clear it.
523 (c6x_sched_dfa_pre_cycle_insn): New static function.
524 (c6x_dfa_new_cycle): Save state at the start of a new cycle.
525 (c6x_variable_issue): Only record units in the unit_mask that
526 were not set at the start of the cycle.
527 (c6x_variable_issue): Compute and store the unit_mask from the
529 (reorg_split_calls): Ensure the new information remains correct.
530 (TARGET_SCHED_DFA_NEW_CYCLE, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
531 TARGET_SCHED_DFA_PRE_CYCLE_INSN): Define.
532 * config/c6x/c6x.h (CPU_UNITS_QUERY): Define.
533 * config/c6x/c6x-sched.md.in (fp4_ls_N__CROSS_, adddp_ls_N__CROSS_):
534 Add special reservations.
535 * config/c6x/c6x-sched.md: Regenerate.
537 2011-09-02 Martin Jambor <mjambor@suse.cz>
539 * ipa-prop.h (ipa_node_params): Removed fields
540 called_with_var_arguments and node_versionable.
541 (ipa_set_called_with_variable_arg): Removed.
542 (ipa_is_called_with_var_arguments): Likewise.
543 * ipa-cp.c (ipa_get_lattice): Fixed index check in an assert.
544 (determine_versionability): Do not check for type attributes and va
545 builtins. Record versionability into inline summary.
546 (initialize_node_lattices): Do not check
547 ipa_is_called_with_var_arguments.
548 (propagate_constants_accross_call): Likewise, ignore arguments we do
549 not have PARM_DECLs for, set variable flag for parameters that were
551 (create_specialized_node): Dump info that we cannot change signature.
552 * ipa-prop.c (ipa_compute_jump_functions): Do not care about variable
554 (ipa_make_edge_direct_to_target): Likewise.
555 (ipa_update_after_lto_read): Likewise.
556 (ipa_node_duplication_hook): Do not copy called_with_var_arguments flag.
557 * tree-inline.c (copy_arguments_for_versioning): Copy PARM_DECLs if
560 2011-09-02 Richard Guenther <rguenther@suse.de>
562 PR tree-optimization/27460
564 * doc/md.texi (vcond): Document.
565 * genopinit.c (optabs): Turn vcond{,u}_optab into a conversion
566 optab with two modes.
567 * optabs.h (enum convert_optab_index): Add COI_vcond, COI_vcondu.
568 (enum direct_optab_index): Remove DOI_vcond, DOI_vcondu.
569 (vcond_optab): Adjust.
570 (vcondu_optab): Likewise.
571 (expand_vec_cond_expr_p): Adjust prototype.
572 * optabs.c (get_vcond_icode): Adjust.
573 (expand_vec_cond_expr_p): Likewise.
574 (expand_vec_cond_expr): Likewise.
575 * tree-vect-stmts.c (vect_is_simple_cond): Return the comparison
577 (vectorizable_condition): Allow differing types for comparison
579 * config/i386/i386.c (ix86_expand_sse_cmp): Use proper mode
581 * config/i386/sse.md (vcond<mode>): Split to
582 vcond<V_256:mode><VF_256:mode>, vcond<V_128:mode><VF_128:mode>,
583 vcond<V_128:mode><VI124_128:mode> and
584 vcondu<V_128:mode><VI124_128:mode>.
585 (vcondv2di): Change to vcond<VI8F_128:mode>v2di.
586 (vconduv2di): Likewise.
587 * config/arm/neon.md (vcond<mode>): Change to vcond*<mode><mode>.
588 (vcondu<mode>): Likewise.
589 * config/ia64/vect.md (vcond<mode>): Likewise.
590 (vcondu<mode>): Likewise.
591 (vcondv2sf): Likewise.
592 * config/mips/mips-ps-3d.md (vcondv2sf): Likewise.
593 * config/rs6000/paired.md (vcondv2sf): Likewise.
594 * config/rs6000/vector.md (vcond<mode>): Likewise.
595 (vcondu<mode>): Likewise.
596 * config/spu/spu.md (vcond<mode>): Likewise.
597 (vcondu<mode>): Likewise.
599 2011-09-02 Richard Guenther <rguenther@suse.de>
601 * pretty-print.h (pp_unsigned_wide_integer): New.
602 * tree-pretty-print.c (dump_generic_node): Print unsigned
603 host-wide-int fitting INTEGER_CSTs with pp_unsigned_wide_integer.
605 2011-09-02 Richard Sandiford <richard.sandiford@linaro.org>
608 * config/rs6000/rs6000.c (paired_expand_vector_init): Check for
609 valid CONST_VECTOR operands.
610 (rs6000_expand_vector_init): Likewise.
612 2011-09-02 Martin Jambor <mjambor@suse.cz>
614 * cgraph.h (cgraph_indirect_call_info): Removed field thunk_delta.
615 * gimple-fold.c (gimple_get_virt_method_for_binfo): Rewritten to use
616 BINFO_VTABLE. Parameter delta removed, all callers updated.
617 * tree.c (free_lang_data_in_binfo): Clear BINFO_VIRTUALs instead
619 * cgraph.c (cgraph_make_edge_direct): Removed parameter delta, updated
621 * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Removed
622 handling of thunk_delta.
623 * ipa-cp.c (get_indirect_edge_target): Removed parameter delta.
624 (devirtualization_time_bonus): Do not handle thunk deltas.
625 (ipcp_discover_new_direct_edges): Likewise.
626 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
627 (try_make_edge_direct_simple_call): Likewise.
628 (try_make_edge_direct_virtual_call): Likewise.
629 * lto-cgraph.c (output_cgraph_opt_summary_p): Likewise. Mark
630 parameter set as unused.
631 (output_edge_opt_summary): Likewise. Mark both parameters as unused.
632 * lto-cgraph.c (output_cgraph_opt_summary_p): Likewise. Mark
633 parameter set as unused.
634 (output_edge_opt_summary): Likewise. Mark both parameters as unused.
635 (input_edge_opt_summary): Likewise.
636 * lto-streamer-out.c (lto_output_ts_binfo_tree_pointers): Do not stream
637 BINFO_VIRTUALS at all.
638 * lto-streamer-in.c (lto_input_ts_binfo_tree_pointers): Likewise.
640 2011-09-02 Richard Guenther <rguenther@suse.de>
642 * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not fold alloca (0).
643 (ccp_fold_stmt): Continue replacing args when folding alloca fails.
645 2011-08-31 Richard Guenther <rguenther@suse.de>
647 * expr.c (expand_expr_real_2): Move COND_EXPR and VEC_COND_EXPR
648 handling here, from ...
649 (expand_expr_real_1): ... here.
650 * gimple-pretty-print.c (dump_ternary_rhs): Handle COND_EXPR
652 * gimple.c (gimple_rhs_class_table): Make COND_EXPR and VEC_COND_EXPR
653 a GIMPLE_TERNARY_RHS.
654 * tree-cfg.c (verify_gimple_assign_ternary): Handle COND_EXPR
655 and VEC_COND_EXPR here ...
656 (verify_gimple_assign_single): ... not here.
657 * gimple-fold.c (fold_gimple_assign): Move COND_EXPR folding.
658 * tree-object-size.c (cond_expr_object_size): Adjust.
659 (collect_object_sizes_for): Likewise.
660 * tree-scalar-evolution.c (interpret_expr): Don't handle
662 * tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and simplify.
663 (ssa_forward_propagate_and_combine): Adjust.
664 * tree-ssa-loop-im.c (move_computations_stmt): Build the COND_EXPR
666 * tree-ssa-threadedge.c (fold_assignment_stmt): Adjust.
667 * tree-vect-loop.c (vect_is_simple_reduction_1): Likewise.
668 * tree-vect-stmt.c (vectorizable_condition): Likewise.
669 * tree-vrp.c (extract_range_from_cond_expr): Likewise.
670 (extract_range_from_assignment): Likewise.
672 2011-08-31 Richard Sandiford <rdsandiford@googlemail.com>
674 * config/i386/i386.md: Use (match_test ...) for attribute tests.
675 * config/i386/mmx.md: Likewise.
676 * config/i386/sse.md: Likewise.
677 * config/i386/predicates.md (call_insn_operand): Use
678 (not (match_test "...")) instead of (match_test "!...")
679 * config/i386/constraints.md (w): Likewise.
681 2011-08-31 Richard Sandiford <rdsandiford@googlemail.com>
683 * doc/md.texi: Describe the use of match_tests in attribute tests.
684 * rtl.def (MATCH_TEST): Update commentary.
685 * genattrtab.c (attr_copy_rtx, check_attr_test, clear_struct_flag)
686 (write_test_expr, walk_attr_value): Handle MATCH_TEST.
688 2011-08-31 Richard Sandiford <rdsandiford@googlemail.com>
690 * genattrtab.c (attr_rtx_1): Hash SYMBOL_REFs.
691 (attr_string): Use copy_md_ptr_loc.
693 2011-08-31 Martin Jambor <mjambor@suse.cz>
696 * ipa-inline-analysis.c (compute_inline_parameters): Set
697 can_change_signature of noes with typde attributes.
698 * ipa-split.c (split_function): Do not skip any arguments if
699 can_change_signature is set.
701 2011-08-31 Martin Jambor <mjambor@suse.cz>
703 * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Alias
706 2011-08-31 Richard Guenther <rguenther@suse.de>
708 * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
711 2011-08-31 Marc Glisse <marc.glisse@inria.fr>
713 * doc/generic.texi (Types for C++): CP_TYPE_QUALS -> cp_type_quals.
715 2011-08-31 Tom de Vries <tom@codesourcery.com>
718 * Makefile.in (tree-ssa-ccp.o): Add $(PARAMS_H) to rule.
719 * tree-ssa-ccp.c (params.h): Include.
720 (fold_builtin_alloca_for_var): New function.
721 (ccp_fold_stmt): Use fold_builtin_alloca_for_var.
723 2011-08-30 Uros Bizjak <ubizjak@gmail.com>
725 * config/i386/i386.c (ix86_valid_target_attribute_inner_p):
728 2011-08-30 Andrew Stubbs <ams@codesourcery.com>
730 * config/arm/arm.c (optimal_immediate_sequence_1): Make b1, b2,
733 2011-08-30 Andrew Stubbs <ams@codesourcery.com>
735 * config/arm/arm.c (arm_gen_constant): Set can_negate correctly
738 2011-08-30 Richard Guenther <rguenther@suse.de>
741 * gimple.h (maybe_fold_offset_to_address): Remove.
742 (maybe_fold_offset_to_reference): Likewise.
743 (maybe_fold_stmt_addition): Likewise.
744 (may_propagate_address_into_dereference): Likewise.
745 * tree-inline.c (remap_gimple_op_r): Do not reconstruct
747 * gimple-fold.c (canonicalize_constructor_val): Likewise.
748 Canonicalize invariant POINTER_PLUS_EXPRs to invariant MEM_REF
750 (may_propagate_address_into_dereference): Remove.
751 (maybe_fold_offset_to_array_ref): Likewise.
752 (maybe_fold_offset_to_reference): Likewise.
753 (maybe_fold_offset_to_address): Likewise.
754 (maybe_fold_stmt_addition): Likewise.
755 (fold_gimple_assign): Do not reconstruct array references but
756 instead canonicalize invariant POINTER_PLUS_EXPRs to invariant
758 (gimple_fold_stmt_to_constant_1): Likewise.
759 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
760 * gimplify.c (gimplify_conversion): Likewise.
761 (gimplify_expr): Likewise.
763 2011-08-30 Ilya Tocar <ilya.tocar@intel.com>
765 * config/i386/fmaintrin.h: New.
766 * config.gcc: Add fmaintrin.h.
768 (enum ix86_builtins) <IX86_BUILTIN_VFMADDSS3>: New.
769 <IX86_BUILTIN_VFMADDSD3>: Likewise.
770 * config/i386/sse.md (fmai_vmfmadd_<mode>): New.
771 (*fmai_fmadd_<mode>): Likewise.
772 (*fmai_fmsub_<mode>): Likewise.
773 (*fmai_fnmadd_<mode>): Likewise.
774 (*fmai_fnmsub_<mode>): Likewise.
775 * config/i386/immintrin.h: Add fmaintrin.h.
777 2011-08-30 Bernd Schmidt <bernds@codesourcery.com>
779 * genautomata.c (NO_COMB_OPTION): New macro.
780 (no_comb_flag): New static variable.
781 (gen_automata_option): Handle NO_COMB_OPTION.
782 (comb_vect_p): False if no_comb_flag.
783 (add_vect): Move computation of min/max values. Return early if
785 * doc/md.texi (automata_option): Document no-comb-vect.
787 * config/i386/i386.c (get_pc_thunk_name): Change prefix to
788 "__x86.get_pc_thunk".
790 * bb-reorder.c (insert_section_boundary_note): Only do it if
791 we reordered the blocks; i.e. not if !optimize_function_for_speed_p.
793 2011-08-30 Christian Bruel <christian.bruel@st.com>
795 * coverage.c (coverage_init): Check flag_branch_probabilities instead of
798 2011-08-29 Michael Meissner <meissner@linux.vnet.ibm.com>
800 * config/rs6000/rs6000.opt (-msave-toc-indirect): Change default
801 to off. Document switch.
802 * doc/invoke.texi (-msave-toc-indirect): Ditto.
804 2011-08-29 Jakub Jelinek <jakub@redhat.com>
806 * gthr-posix.h (__gthread_active_p): Do not use preprocessor
807 conditionals and comments inside macro arguments.
809 2011-08-29 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
810 Richard Guenther <rguenther@suse.de>
812 * tree.h (constant_boolean_node): Adjust prototype.
813 * fold-const.c (fold_convert_loc): Move aggregate conversion
815 (constant_boolean_node): Make value parameter boolean, add
816 vector type handling.
817 (fold_unary_loc): Use constant_boolean_node.
818 (fold_binary_loc): Preserve types properly when folding
819 COMPLEX_EXPR <__real x, __imag x>.
820 * gimplify.c (gimplify_expr): Handle vector comparison.
821 * tree.def (EQ_EXPR, ...): Document behavior on vector typed
823 * tree-cfg.c (verify_gimple_comparison): Verify vector typed
826 2011-08-29 Jakub Jelinek <jakub@redhat.com>
829 * emit-rtl.c (unshare_all_rtl_again): For CALL_INSNs,
830 reset_used_flags also in CALL_INSN_FUNCTION_USAGE.
831 (verify_rtl_sharing): Likewise and verify_rtx_sharing
833 (unshare_all_rtl_in_chain): For CALL_INSNs
834 copy_rtx_if_shared also CALL_INSN_FUNCTION_USAGE.
836 2011-08-29 Richard Guenther <rguenther@suse.de>
838 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Set a location
839 on the built ADDR_EXPR.
841 2011-08-29 Jakub Jelinek <jakub@redhat.com>
844 * var-tracking.c (create_entry_value): Call cselib_lookup_from_insn
845 before adding ENTRY_VALUE to val->locs.
847 2011-08-28 Mikael Pettersson <mikpe@it.uu.se>
850 * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Initialize
853 2011-08-27 Bernd Schmidt <bernds@codesourcery.com>
855 * doc/rtl.texi (simple_return): Document.
856 (parallel, PATTERN): Here too.
857 * doc/md.texi (return): Mention it's allowed to expand to simple_return
859 (simple_return): Document standard pattern.
860 * gengenrtl.c (special_rtx): SIMPLE_RETURN is special.
861 * final.c (final_scan_insn): Use ANY_RETURN_P on body.
862 * reorg.c (function_return_label, function_simple_return_label):
863 New static variables, replacing...
864 (end_of_function_label): ... this.
865 (simplejump_or_return_p): New static function.
866 (optimize_skip, steal_delay_list_from_fallthrough,
867 fill_slots_from_thread): Use it.
868 (relax_delay_slots): Likewise. Use ANY_RETURN_P on body.
869 (rare_destination, follow_jumps): Use ANY_RETURN_P on body.
870 (find_end_label): Take a new arg which is one of the two return
871 rtxs. Depending on which, set either function_return_label or
872 function_simple_return_label. All callers changed.
873 (make_return_insns): Make both kinds.
874 (dbr_schedule): Adjust for two kinds of end labels.
875 * function.c (emit_return_into_block): Set JUMP_LABEL properly.
876 * genemit.c (gen_exp): Handle SIMPLE_RETURN.
877 (gen_expand, gen_split): Use ANY_RETURN_P.
878 * df-scan.c (df_uses_record): Handle SIMPLE_RETURN.
879 * rtl.def (SIMPLE_RETURN): New code.
880 * ifcvt.c (find_if_case_1): Be more careful about
881 redirecting jumps to the EXIT_BLOCK.
882 * jump.c (condjump_p, condjump_in_parallel_p, any_condjump_p,
883 returnjump_p_1): Handle SIMPLE_RETURNs.
884 * print-rtl.c (print_rtx): Likewise.
885 * rtl.c (copy_rtx): Likewise.
886 * bt-load.c (compute_defs_uses_and_gen): Use ANY_RETURN_P.
887 * combine.c (simplify_set): Likewise.
888 * resource.c (find_dead_or_set_registers, mark_set_resources):
890 * emit-rtl.c (verify_rtx_sharing, classify_insn, copy_insn_1,
891 copy_rtx_if_shared_1, mark_used_flags): Handle SIMPLE_RETURNs.
892 (init_emit_regs): Initialize simple_return_rtx.
893 * cfglayout.c (fixup_reorder_chain): Pass a JUMP_LABEL to
894 force_nonfallthru_and_redirect.
895 * rtl.h (ANY_RETURN_P): Allow SIMPLE_RETURN.
896 (GR_SIMPLE_RETURN): New enum value.
897 (simple_return_rtx): New macro.
898 * basic-block.h (force_nonfallthru_and_redirect): Adjust
900 * cfgrtl.c (force_nonfallthru_and_redirect): Take a new jump_label
901 argument. All callers changed. Be careful about what kinds of
902 returnjumps to generate.
903 * config/i386/3i86.c (ix86_pad_returns, ix86_count_insn_bb,
904 ix86_pad_short_function): Likewise.
905 * config/arm/arm.c (arm_final_prescan_insn): Handle both kinds
907 * config/mips/mips.md (any_return): New code_iterator.
908 (optab): Add cases for return and simple_return.
909 (return): Expand to a simple_return.
910 (simple_return): New pattern.
911 (*<optab>, *<optab>_internal for any_return): New patterns.
912 (return_internal): Remove.
913 * config/mips/mips.c (mips_expand_epilogue): Make the last insn
914 a simple_return_internal.
916 2011-08-27 Uros Bizjak <ubizjak@gmail.com>
918 * config/i386/sse.md (*absneg<mode>2): Fix split condition.
919 (vec_extract_lo_<mode>): Prevent both operands in memory.
920 (vec_extract_lo_v16hi): Ditto.
921 (*vec_extract_v4sf_mem): Add TARGET_SSE insn constraint.
923 2011-08-27 Uros Bizjak <ubizjak@gmail.com>
925 * config/i386/sse.md (mulv16qi3): Attach REG_EQUAL note.
926 (*sse2_mulv4si3): Ditto.
928 * config/i386/i386.c (legitimize_tls_address): Change REG_EQIV
931 2011-08-27 Uros Bizjak <ubizjak@gmail.com>
934 * config/i386/sse.md (sse4_2_pcmpestr): Emit NOTE_INSN_DELETED note
935 when all outputs are unused.
936 (sse4_2_pcmpistr): Ditto.
938 2011-08-26 Uros Bizjak <ubizjak@gmail.com>
940 * config/i386/i386.md (round<mode>2): New expander.
941 * config/i386/i386.c (enum ix86_builtins): Add
942 IX86_BUILTIN_ROUND{PS,PD}_AZ{,256}.
943 (struct builtin_description): Add __builtin_ia32_round{ps,pd}_az{,256}
945 (ix86_builtin_vectorized_function): Handle BUILT_IN_ROUND{,F} builtins.
946 (ix86_build_const_vector): Rewrite using loop with RTVEC_ELT accessor.
948 2011-08-26 Uros Bizjak <ubizjak@gmail.com>
951 * convert.c (convert_to_integer) <BUIT_IN_ROUND{,F,L}>: Convert
952 only when TARGET_C99_FUNCTIONS.
953 <BUILT_IN_NEARBYINT{,F,L}>: Ditto.
954 <BUILT_IN_RINT{,F,L}>: Ditto.
956 2011-08-26 Michael Matz <matz@suse.de>
957 Jakub Jelinek <jakub@redhat.com>
960 * lto-streamer-in.c (canon_file_name): Initialize new_slot->len;
961 don't call strlen twice, use memcpy.
963 2011-08-26 H.J. Lu <hongjiu.lu@intel.com>
965 * config/i386/bmi2intrin.h: Allow in <immintrin.h>.
966 * config/i386/bmiintrin.h: Likewise.
967 * config/i386/lzcntintrin.h: Likewise.
969 * config/i386/immintrin.h: Include <lzcntintrin.h>,
970 <bmiintrin.h> and <bmi2intrin.h>.
972 2011-08-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
975 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check count in main.
976 * configure: Regenerate.
978 2011-08-26 Jakub Jelinek <jakub@redhat.com>
981 * c-typeck.c (c_process_expr_stmt): Skip over nops and
982 call mark_exp_read even if exprv is ADDR_EXPR.
984 2011-08-26 Richard Sandiford <richard.sandiford@linaro.org>
986 * df-problems.c (df_note_bb_compute): Pass uses rather than defs
987 to df_set_dead_notes_for_mw.
989 2011-08-26 Richard Guenther <rguenther@suse.de>
991 * varasm.c (decode_addr_const): Handle MEM_REF[&X, OFF].
993 2011-08-26 Zdenek Dvorak <ook@ucw.cz>
994 Tom de Vries <tom@codesourcery.com>
996 * tree-ssa-loop-ivopts.c (struct cost_pair): Add comp field.
997 (struct ivopts_data): Add loop_single_exit_p field.
998 (niter_for_exit): Change parameter desc_p into return value. Return
999 desc if desc->may_be_zero. Free desc if unused.
1000 (niter_for_single_dom_exit): Change return type.
1001 (find_induction_variables): Handle changed return type of
1002 niter_for_single_dom_exit. Dump may_be_zero.
1003 (add_candidate_1): Keep original base and step type for IP_ORIGINAL.
1004 (set_use_iv_cost): Add and handle comp parameter.
1005 (determine_use_iv_cost_generic, determine_use_iv_cost_address): Add
1006 comp argument to set_use_iv_cost.
1007 (strip_wrap_conserving_type_conversions, expr_equal_p)
1008 (difference_cannot_overflow_p, iv_elimination_compare_lt): New function.
1009 (may_eliminate_iv): Add comp parameter. Handle new return type of
1010 niter_for_exit. Use loop_single_exit_p. Use iv_elimination_compare_lt.
1011 (determine_use_iv_cost_condition): Add comp argument to set_use_iv_cost
1012 and may_eliminate_iv.
1013 (rewrite_use_compare): Move call to iv_elimination_compare to ...
1014 (may_eliminate_iv): Here.
1015 (tree_ssa_iv_optimize_loop): Initialize loop_single_exit_p.
1017 2011-08-26 Tom de Vries <tom@codesourcery.com>
1019 * tree-pretty-print (dump_generic_node): Test for NULL_TREE before
1020 accessing TREE_TYPE.
1022 2011-08-26 Jiangning Liu <jiangning.liu@arm.com>
1024 * config/arm/arm.md (*ior_scc_scc): Enable for Thumb2 as well.
1025 (*ior_scc_scc_cmp): Likewise
1026 (*and_scc_scc): Likewise.
1027 (*and_scc_scc_cmp): Likewise.
1028 (*and_scc_scc_nodom): Likewise.
1029 (*cmp_ite0, *cmp_ite1, *cmp_and, *cmp_ior): Handle Thumb2.
1031 2011-08-26 Jakub Jelinek <jakub@redhat.com>
1033 * rtlanal.c (nonzero_bits1): Handle CLRSB.
1035 2011-08-26 Richard Guenther <rguenther@suse.de>
1037 * expr.c (string_constant): Handle &MEM_REF.
1039 2011-08-26 Andrew Stubbs <ams@codesourcery.com>
1041 * config/arm/arm.c (struct four_ints): New type.
1042 (count_insns_for_constant): Delete function.
1043 (find_best_start): Delete function.
1044 (optimal_immediate_sequence): New function.
1045 (optimal_immediate_sequence_1): New function.
1046 (arm_gen_constant): Move constant splitting code to
1047 optimal_immediate_sequence.
1048 Rewrite constant negation/invertion code.
1050 2011-08-26 Andrew Stubbs <ams@codesourcery.com>
1052 * config/arm/arm-protos.h (const_ok_for_op): Add prototype.
1053 * config/arm/arm.c (const_ok_for_op): Add support for addw/subw.
1054 Remove prototype. Remove static function type.
1055 * config/arm/arm.md (*arm_addsi3): Add addw/subw support.
1057 * config/arm/constraints.md (Pj, PJ): New constraints.
1059 2011-08-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
1061 * config/arm/cortex-a9.md ("cortex_a9_mult_long"): New.
1062 ("cortex_a9_multiply_long"): New and use above. Handle all
1063 long multiply cases.
1064 ("cortex_a9_multiply"): Handle smmul and smmulr.
1065 ("cortex_a9_mac"): Handle smmla.
1067 2011-08-25 Richard Henderson <rth@redhat.com>
1071 * cfgcleanup.c (old_insns_match_p): Don't allow cross-jump for
1072 non-constant stack adjutment.
1073 * expr.c (find_args_size_adjust): Break out from ...
1074 (fixup_args_size_notes): ... here.
1075 * rtl.h (find_args_size_adjust): Declare.
1077 2011-08-25 Uros Bizjak <ubizjak@gmail.com>
1079 * config/i386/i386.md (isa): Add sse2, sse2_noavx, sse3,
1080 sse4 and sse4_noavx.
1081 (enabled): Handle sse2, sse2_noavx, sse3, sse4 and sse4_noavx.
1082 (*pushdf_rex64): Change Y2 register constraint to x.
1083 (*movdf_internal_rex64): Ditto.
1084 (*zero_extendsidi2_rex64): Ditto.
1085 (*movdi_internal): Change Y2 register constraint to x
1086 and update "isa" attribute.
1088 (*movdf internal): Ditto.
1089 (zero_extendsidi2_1): Ditto.
1090 (*truncdfdf_mixed): Ditto.
1091 (*truncxfdf2_mixed): Ditto.
1092 * config/i386/mmx.md (*mov<mode>_internal_rex64): Change Y2
1093 register constraint to x.
1094 (*movv2sf_internal_rex64): Ditto.
1095 (*mov<mode>_internal): Change Y2 register constraint to x
1096 and add "isa" attribute.
1097 (*movv2sf_internal): Ditto.
1098 (*vec_extractv2si_1): Ditto.
1099 * config/i386/sse.md ("vec_set<mode>_0): Change Y2 and Y4 register
1100 constraints to x and update "isa" attribute.
1101 (*vec_interleave_highv2df): Change Y3 registerconstraint
1102 to x and update "isa" attribute.
1103 (*vec_interleave_lowv2df): Ditto.
1104 (*vec_concatv2df): Change Y2 register constraint to x and
1105 update "isa" attribute.
1106 (sse2_loadld): Ditto.
1107 (*vec_extractv2di_1): Ditto.
1108 (*vec_dupv4si): Ditto.
1109 (*vec_dupv2di): Ditto.
1110 (*vec_concatv4si): Ditto.
1111 (vec_concatv2di): Ditto.
1112 * config/i386/constraints.md (Y2): Remove.
1116 2011-08-25 Bernd Schmidt <bernds@codesourcery.com>
1118 * regrename.c (scan_rtx_reg, scan_rtx_address, build_def_use,
1119 dump_def_use_chain): Don't declare.
1120 (mark_conflict, create_new_chain): Move before users.
1121 (regrename_optimize): Move to near end of file.
1123 2011-08-25 Georg-Johann Lay <avr@gjlay.de>
1125 * config/avr-protos.h (byte_immediate_operand): Remove Prototype.
1126 (secondary_input_reload_class): Remove Prototype.
1127 * config/avr/avr.c (byte_immediate_operand): Remove Function.
1128 * config/avr/avr.md (setmemhi): Use u8_operand.
1129 (strlenhi): Use const0_rtx for comparison.
1130 * config/avr/avr.h (avr_reg_order): Remove Declaration.
1132 2011-08-25 Georg-Johann Lay <avr@gjlay.de>
1134 * config/avr/avr.c (reg_class_tab): Make local to
1135 avr_regno_reg_class. Return smallest register class available.
1137 2011-08-25 Georg-Johann Lay <avr@gjlay.de>
1139 * config/avr/avr.c (STR_PREFIX_P): New Define.
1140 (avr_asm_declare_function_name): Use it.
1141 (avr_asm_named_section): Use it.
1142 (avr_section_type_flags): Use it.
1144 2011-08-25 Bernd Schmidt <bernds@codesourcery.com>
1146 * doc/md.texi (automata_option): Document collapse-ndfa.
1147 * genautomata.c (COLLAPSE_OPTION): New macro.
1148 (collapse_flag): New static variable.
1149 (struct description): New member normal_decls_num.
1150 (struct automaton): New members advance_ainsn and collapse_ainsn.
1151 (gen_automata_option): Check for COLLAPSE_OPTION.
1152 (collapse_ndfa_insn_decl): New static variable.
1153 (add_collapse_ndfa_insn_decl, special_decl_p): New functions.
1154 (find_arc): If insn is the collapse-ndfa insn, accept any arc we find.
1155 (transform_insn_regexps): Call add_collapse_ndfa_insn_decl if
1156 necessary. Use normal_decls_num rather than decls_num, remove
1157 test for special decls.
1158 (create_alt_states, form_ainsn_with_same_reservs): Use special_decl_p.
1159 (make_automaton); Likewise. Use the new advance_cycle_insn member
1160 of struct automaton.
1161 (create_composed_state): Disallow advance-cycle arcs if collapse_flag
1163 (NDFA_to_DFA): Don't create composed states for the collapse-ndfa
1164 transition. Create the necessary transitions for it.
1165 (create_ainsns): Return void. Take an automaton_t argument, and
1166 update its ainsn_list, advance_ainsn and collapse_ainsn members. All
1168 (COLLAPSE_NDFA_VALUE_NAME): New macro.
1169 (output_tables): Output code to define it.
1170 (output_internal_insn_code_evaluation): Output code to accept
1171 const0_rtx as collapse-ndfa transition.
1172 (output_default_latencies, output_print_reservation_func,
1173 output_print_description): Reorganize loops to use normal_decls_num
1174 as loop bound; remove special case for advance_cycle_insn_decl.
1175 (initiate_automaton_gen): Handle COLLAPSE_OPTION.
1176 (check_automata_insn_issues): Check for collapse_ainsn.
1177 (expand_automate): Allocate sufficient space. Initialize
1180 2011-08-25 Georg-Johann Lay <avr@gjlay.de>
1182 * config/avr/avr.md: Fix indentation from r177991.
1184 2011-08-25 Bernd Schmidt <bernds@codesourcery.com>
1186 * regrename.c (struct du_head): Remove member terminated.
1187 (create_new_chain): Don't initialize it.
1188 (scan_rtx_reg): Don't set or test it, test the open_chains_set
1190 (tick, this_tick): New global variables, moved out of
1192 (current_id, open_chains, closed_chains, open_chains_set,
1193 live_in_chains, live_hard_regs): Reorder declarations.
1194 (dump_def_use_chain): Move function earlier in the file.
1195 (rename_chains): New static function, broken out of
1197 (regrename_optimize): Use it. Remove #if 0'ed code.
1199 2011-08-25 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
1201 * varasm.c: (default_binds_local_p_1): Commentary typo fix.
1203 2011-08-24 H.J. Lu <hongjiu.lu@intel.com>
1206 * config/i386/i386.c (ix86_expand_builtin): Convert to Pmode if needed.
1208 2011-08-24 Richard Guenther <rguenther@suse.de>
1210 * tree-data-ref.c (dr_analyze_indices): Avoid unsharing the
1211 ref in the basic-block case. Move stripping array-refs
1212 to the place we create an access-function for it. Remove
1213 bogus stripping down a MEM_REF to its base.
1215 2011-08-24 Richard Guenther <rguenther@suse.de>
1217 * fold-const.c (fold_comparison): Fold &a < &a + 4 even
1218 with -fno-strict-overflow.
1220 2011-08-24 Richard Guenther <rguenther@suse.de>
1222 * tree-vectorizer.c (vect_print_dump_info): Avoid the
1223 file and location clutter when dumping to dump files.
1225 2011-08-24 Simon Baldwin <simonb@google.com>
1227 * gengtype-state.c (write_state): Remove timestamped header line.
1229 2011-08-24 Joseph Myers <joseph@codesourcery.com>
1231 * Makefile.in (CFLAGS-collect2.o, CFLAGS-c-family/c-opts.o)
1232 (CFLAGS-c-family/c-pch.o, CFLAGS-prefix.o, CFLAGS-version.o)
1233 (CFLAGS-lto-compress.o, CFLAGS-toplev.o, CFLAGS-intl.o)
1234 (CFLAGS-cppbuiltin.o, CFLAGS-cppdefault.o): New.
1235 (collect2.o, c-family/c-cppbuiltin.o, c-family/c-opts.o)
1236 (c-family/c-pch.o, prefix.o, version.o, lto-compress.o, toplev.o)
1237 (intl.o, cppbuiltin.o, cppdefault.o): Remove explicit compilation
1239 (lto-wrapper$(exeext)): Use $(LINKER) not $(COMPILER).
1241 2011-08-24 Joseph Myers <joseph@codesourcery.com>
1243 * Makefile.in (ALL_CXXFLAGS): Include $(CFLAGS-$@).
1245 2011-08-24 Richard Guenther <rguenther@suse.de>
1247 PR tree-optimization/50067
1248 * tree-data-ref.c (dr_analyze_indices): Do not add an access
1249 function for a MEM_REF base that has no evolution in the loop
1250 nest or that is not analyzable.
1252 2011-08-23 Vladimir Makarov <vmakarov@redhat.com>
1254 * ira.c (ira_init_register_move_cost): Check small subclasses
1255 through ira_reg_class_max_nregs and ira_available_class_regs.
1257 2011-08-23 Uros Bizjak <ubizjak@gmail.com>
1259 * config/i386/constraints.md (Yp): New register constraint.
1260 * config/i386/i386.md (*addhi_1): Merge with *addhi_1_lea using
1261 Yp register constraint.
1262 (*addqi_1): Merge with *addqi_1_lea using Yp register constraint.
1263 (*ashlhi3_1): Merge with *ashlhi3_1_lea using Yp register constraint.
1264 (*ashlqi3_1): Merge with *ashlqi3_1_lea using Yp register constraint.
1266 2011-08-23 Kirill Yukhin <kirill.yukhin@intel.com>
1268 * config/i386/sse.md (<s>mul<mode>3_highpart): Update.
1270 2011-08-23 Mark Heffernan <meheff@google.com>
1273 * common.opt (Wfree-nonheap-object): New option.
1274 * doc/invoke.texi (Warning options): Document -Wfree-nonheap-object.
1275 * builtins.c (maybe_emit_free_warning): Add OPT_Wfree_nonheap_object
1277 (expand_builtin): Make warning conditional.
1279 2011-08-23 Uros Bizjak <ubizjak@gmail.com>
1281 * config/i386/i386.md (type): Add imulx, ishiftx and rotatex.
1282 (length_immediate): Handle imulx, ishiftx and rotatex.
1285 (enabled): Handle bmi2.
1286 (*mul<mode><dwi>3): Split from *<u>mul<mode><dwi>3.
1287 (*umul<mode><dwi>3): Ditto. Add imulx BMI2 alternative.
1288 (*bmi2_umulditi3_1): New insn pattern.
1289 (*bmi2_umulsidi3_1): Ditto.
1290 (*umul<mode><dwi>3 splitter): New splitter to avoid flags dependency.
1291 (*bmi2_ashl<mode>3_1): New insn pattern.
1292 (*ashl<mode>3_1): Add ishiftx BMI2 alternative.
1293 (*ashl<mode>3_1 splitter): New splitter to avoid flags dependency.
1294 (*bmi2_ashlsi3_1_zext): New insn pattern.
1295 (*ashlsi3_1_zext): Add ishiftx BMI2 alternative.
1296 (*ashlsi3_1_zext splitter): New splitter to avoid flags dependency.
1297 (*bmi2_<shiftrt_insn><mode>3_1): New insn pattern.
1298 (*<shiftrt_insn><mode>3_1): Add ishiftx BMI2 alternative.
1299 (*<shiftrt_insn><mode>3_1 splitter): New splitter to avoid
1301 (*bmi2_<shiftrt_insn>si3_1_zext): New insn pattern.
1302 (*<shiftrt_insn>si3_1_zext): Add ishiftx BMI2 alternative.
1303 (*<shiftrt_insn>si3_1_zext splitter): New splitter to avoid
1305 (*bmi2_rorx<mode>3_1): New insn pattern.
1306 (*<rotate_insn><mode>3_1): Add rotatex BMI2 alternative.
1307 (*rotate<mode>3_1 splitter): New splitter to avoid flags dependency.
1308 (*rotatert<mode>3_1 splitter): Ditto.
1309 (*bmi2_rorxsi3_1_zext): New insn pattern.
1310 (*<rotate_insn>si3_1_zext): Add rotatex BMI2 alternative.
1311 (*rotatesi3_1_zext splitter): New splitter to avoid flags dependency.
1312 (*rotatertsi3_1_zext splitter): Ditto.
1314 2011-08-23 Kirill Yukhin <kirill.yukhin@intel.com>
1316 * common/config/i386/i386-common.c (OPTION_MASK_ISA_BMI2_SET): New.
1317 (OPTION_MASK_ISA_BMI2_UNSET): Likewise.
1318 (ix86_handle_option): Handle OPT_mbmi2 case.
1319 * config.gcc (i[34567]86-*-*): Add bmi2intrin.h.
1320 (x86_64-*-*): Likewise.
1321 * config/i386/bmi2intrin.h: New file.
1322 * config/i386/cpuid.h (bit_BMI2): New.
1323 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
1325 * config/i386/i386-c.c (ix86_target_macros_internal):
1326 Conditionally define __BMI2__.
1327 * config/i386/i386.c (ix86_option_override_internal): Define PTA_BMI2.
1329 (ix86_valid_target_attribute_inner_p): Handle BMI2 option.
1330 (print_reg): New code.
1331 (ix86_print_operand): Likewise.
1332 (ix86_builtins): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
1333 IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
1334 IX86_BUILTIN_PEXT64.
1335 (bdesc_args): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
1336 IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
1337 IX86_BUILTIN_PEXT64.
1338 * config/i386/i386.h (TARGET_BMI2): New.
1339 * config/i386/i386.md (UNSPEC_PDEP): New.
1340 (UNSPEC_PEXT): Likewise.
1341 (*bmi2_bzhi_<mode>3): Likewise.
1342 (*bmi2_pdep_<mode>3): Likewise.
1343 (*bmi2_pext_<mode>3): Likewise.
1344 * config/i386/i386.opt (mbmi2): New.
1345 * config/i386/x86intrin.h: Include bmi2intrin.h when __BMI2__
1347 * doc/extend.texi: Document BMI2 built-in functions.
1348 * doc/invoke.texi: Document -mbmi2.
1350 2011-08-23 Jakub Jelinek <jakub@redhat.com>
1353 * simplify-rtx.c (simplify_const_unary_operation): If
1354 op is CONST_INT, don't look at op_mode, but use instead mode.
1355 * optabs.c (add_equal_note): For FFS, CLZ, CTZ,
1356 CLRSB, POPCOUNT, PARITY and BSWAP use operand mode for
1357 operation and TRUNCATE/ZERO_EXTEND if needed.
1358 * doc/rtl.texi (ffs, clrsb, clz, ctz, popcount, parity, bswap):
1359 Document that operand mode must be same as operation mode,
1361 * config/avr/avr.md (paritysi2, *parityqihi2.libgcc,
1362 *paritysihi2.libgcc, popcountsi2, *popcountsi2.libgcc,
1363 *popcountqihi2.libgcc, clzsi2, *clzsihi2.libgcc, ctzsi2,
1364 *ctzsihi2.libgcc, ffssi2, *ffssihi2.libgcc): For unary ops
1365 use the mode of operand for the operation and add truncate
1366 or zero_extend around if needed.
1367 * config/c6x/c6x.md (ctzdi2): Likewise.
1368 * config/bfin/bfin.md (clrsbsi2, signbitssi2): Likewise.
1370 2011-08-12 Michael Matz <matz@suse.de>
1372 * cfgexpand.c (expand_one_register_var): Use get_pointer_alignment.
1373 (gimple_expand_cfg): Merge alignment info for coalesced pointer
1376 2011-08-23 Richard Guenther <rguenther@suse.de>
1378 * Makefile.in (tree-data-ref.o): Add tree-affine.h dependency.
1379 * tree-affine.h (aff_comb_cannot_overlap_p): Declare.
1380 * tree-affine.c (aff_comb_cannot_overlap_p): New function, moved
1382 * tree-ssa-loop-im.c (cannot_overlap_p): ... here.
1383 (mem_refs_may_alias_p): Adjust.
1384 * tree-data-ref.h (dr_may_alias_p): Adjust.
1385 * tree-data-ref.c: Include tree-affine.h.
1386 (dr_analyze_indices): Do nothing for the non-loop case.
1387 (dr_may_alias_p): Distinguish loop and non-loop case. Disambiguate
1388 more cases in the non-loop case.
1389 * graphite-sese-to-poly.c (write_alias_graph_to_ascii_dimacs): Adjust
1390 calls to dr_may_alias_p.
1391 (write_alias_graph_to_ascii_ecc): Likewise.
1392 (write_alias_graph_to_ascii_dot): Likewise.
1393 (build_alias_set_optimal_p): Likewise.
1395 2011-08-23 Richard Guenther <rguenther@suse.de>
1397 PR tree-optimization/50162
1398 * tree-vect-stmts.c (vectorizable_call): Fix argument lookup.
1400 2011-08-23 Richard Guenther <rguenther@suse.de>
1402 * tree-data-ref.c (dr_analyze_indices): Add comments, handle
1403 REALPART_EXPR and IMAGPART_EXPR similar to ARRAY_REFs.
1404 (create_data_ref): Also dump access functions for the created data-ref.
1406 2011-08-22 Uros Bizjak <ubizjak@gmail.com>
1407 Kirill Yukhin <kirill.yukhin@intel.com>
1410 * config/i386/sse.md (VI_AVX2): New.
1411 (<plusminus_insn><mode>3): Use VI_AVX2 mode iterator.
1412 (*<plusminus_insn><mode>3): Ditto.
1413 (<sse2_avx2>_andnot<mode>3): Ditto.
1414 (*andnot<mode>3): Fix order of cond operands.
1415 Add asserts for correct TARGET_xxx.
1416 (*<any_logic:code><mode>3): Ditto.
1418 2011-08-22 Anatoly Sokolov <aesok@post.ru>
1420 * config/m32c/m32c.h (CLASS_MAX_NREGS): Remove macro.
1421 * config/m32c/m32c-protos.h (m32c_class_max_nregs): Remove.
1422 * config/m32c/m32c.c (m32c_class_max_nregs): Make static. Change
1423 regclass argument type to reg_class_t. Change 'max' and 'v' vars
1424 and return types to unsigned char. Use reg_class_contents instead
1426 (TARGET_CLASS_MAX_NREGS): Define.
1428 2011-08-22 Bernd Schmidt <bernds@codesourcery.com>
1430 * config/c6x/c6x.md (indirect_jump_shadow): Tweak representation
1431 to make computed_jump_p return true.
1433 2011-08-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1435 * configure.ac (GCC_PICFLAG_FOR_TARGET): Call it.
1436 (PICFLAG_FOR_TARGET): Substitute.
1437 * aclocal.m4: Regenerate.
1438 * configure: Regenerate.
1440 2011-08-22 Dodji Seketeli <dodji@redhat.com>
1442 * c-family/c-pch.c (c_common_read_pch): Re-set line table right
1443 after reading in the pch.
1445 2011-08-22 H.J. Lu <hongjiu.lu@intel.com>
1447 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Error if __ELF__ isn't defined.
1448 * configure: Regenerated.
1450 2011-08-22 Jakub Jelinek <jakub@redhat.com>
1452 PR tree-optimization/50133
1453 * tree-vect-stmts.c (vect_finish_stmt_generation): Copy location
1454 from stmt instead of some statement around gsi.
1457 * expr.c (get_bit_range): Only use DECL_THREAD_LOCAL_P if
1458 innerdecl is a VAR_DECL.
1460 2011-08-22 Kirill Yukhin <kirill.yukhin@intel.com>
1462 * config/i386/avx2intrin.h: New file.
1463 * config/i386/i386-builtin-types.def (PCINT, PCINT64, PV4SI,
1464 PV8SI, V32QI_FTYPE_V32QI, V32QI_FTYPE_V16QI, V16HI_FTYPE_V16HI,
1465 V16HI_FTYPE_V8HI, V8SI_FTYPE_V8SI, V16HI_FTYPE_V16QI,
1466 V8SI_FTYPE_V16QI, V4DI_FTYPE_V16QI, V8SI_FTYPE_V8HI,
1467 V4DI_FTYPE_V8HI, V4DI_FTYPE_V4SI, V4DI_FTYPE_PV4DI,
1468 V4DI_FTYPE_V2DI, V2DI_FTYPE_PCV2DI_V2DI, V4SI_FTYPE_PCV4SI_V4SI,
1469 V32QI_FTYPE_V16HI_V16HI, V16HI_FTYPE_V8SI_V8SI,
1470 V32QI_FTYPE_V32QI_V32QI, V16HI_FTYPE_V32QI_V32QI,
1471 V16HI_FTYPE_V16HI_V8HI, V16HI_FTYPE_V16HI_V16HI,
1472 V16HI_FTYPE_V16HI_INT, V16HI_FTYPE_V16HI_SI,
1473 V16HI_FTYPE_V16HI_V16HI_INT, V32QI_FTYPE_V32QI_V32QI_INT,
1474 V8SI_FTYPE_V8SI_V4SI, V8SI_FTYPE_V8SI_V8SI,
1475 V8SI_FTYPE_V16HI_V16HI, V8SI_FTYPE_V8SI_INT, V8SI_FTYPE_V8SI_SI,
1476 V8SI_FTYPE_PCV8SI_V8SI, V4DI_FTYPE_V4DI_V4DI,
1477 V4DI_FTYPE_V8SI_V8SI, V4DI_FTYPE_V4DI_V2DI,
1478 V4DI_FTYPE_PCV4DI_V4DI, V4DI_FTYPE_V4DI_INT,
1479 V2DI_FTYPE_V4DI_INT, V4DI_FTYPE_V4DI_V4DI_INT,
1480 V4DI_FTYPE_V4DI_V2DI_INT, VOID_FTYPE_PV2DI_V2DI_V2DI,
1481 VOID_FTYPE_PV4DI_V4DI_V4DI, VOID_FTYPE_PV4SI_V4SI_V4SI,
1482 VOID_FTYPE_PV8SI_V8SI_V8SI,
1483 V2DF_FTYPE_V2DF_PCDOUBLE_V4SI_V2DF_INT,
1484 V4DF_FTYPE_V4DF_PCDOUBLE_V4SI_V4DF_INT,
1485 V2DF_FTYPE_V2DF_PCDOUBLE_V2DI_V2DF_INT,
1486 V4DF_FTYPE_V4DF_PCDOUBLE_V4DI_V4DF_INT,
1487 V4SF_FTYPE_V4SF_PCFLOAT_V4SI_V4SF_INT,
1488 V8SF_FTYPE_V8SF_PCFLOAT_V8SI_V8SF_INT,
1489 V4SF_FTYPE_V4SF_PCFLOAT_V2DI_V4SF_INT,
1490 V4SF_FTYPE_V4SF_PCFLOAT_V4DI_V4SF_INT,
1491 V2DI_FTYPE_V2DI_PCINT64_V4SI_V2DI_INT,
1492 V4DI_FTYPE_V4DI_PCINT64_V4SI_V4DI_INT,
1493 V2DI_FTYPE_V2DI_PCINT64_V2DI_V2DI_INT,
1494 V4DI_FTYPE_V4DI_PCINT64_V4DI_V4DI_INT,
1495 V4SI_FTYPE_V4SI_PCINT_V4SI_V4SI_INT,
1496 V8SI_FTYPE_V8SI_PCINT_V8SI_V8SI_INT,
1497 V4SI_FTYPE_V4SI_PCINT_V2DI_V4SI_INT,
1498 V4SI_FTYPE_V4SI_PCINT_V4DI_V4SI_INT,
1499 V16HI_FTYPE_V16HI_SI_COUNT, V16HI_FTYPE_V16HI_V8HI_COUNT,
1500 V8SI_FTYPE_V8SI_SI_COUNT, V8SI_FTYPE_V8SI_V4SI_COUNT,
1501 V4DI_FTYPE_V4DI_INT_COUNT, V4DI_FTYPE_V4DI_V2DI_COUNT,
1502 V4DI_FTYPE_V4DI_INT_CONVERT,
1503 V4DI_FTYPE_V4DI_V4DI_INT_CONVERT): New.
1504 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MPSADBW256,
1505 IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
1506 IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
1507 IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
1508 IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
1509 IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
1510 IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
1511 IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
1512 IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
1513 IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
1514 IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
1515 IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
1516 IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
1517 IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
1518 IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
1519 IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
1520 IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
1521 IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
1522 IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
1523 IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
1524 IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
1525 IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
1526 IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
1527 IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
1528 IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
1529 IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
1530 IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
1531 IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
1532 IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
1533 IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
1534 IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
1535 IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
1536 IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
1537 IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
1538 IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
1539 IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
1540 IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
1541 IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
1542 IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
1543 IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
1544 IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
1545 IX86_BUILTIN_PSLLWI256, IX86_BUILTIN_PSLLW256,
1546 IX86_BUILTIN_PSLLDI256, IX86_BUILTIN_PSLLD256,
1547 IX86_BUILTIN_PSLLQI256, IX86_BUILTIN_PSLLQ256,
1548 IX86_BUILTIN_PSRAWI256, IX86_BUILTIN_PSRAW256,
1549 IX86_BUILTIN_PSRADI256, IX86_BUILTIN_PSRAD256,
1550 IX86_BUILTIN_PSRLDQI256, IX86_BUILTIN_PSRLWI256,
1551 IX86_BUILTIN_PSRLW256, IX86_BUILTIN_PSRLDI256,
1552 IX86_BUILTIN_PSRLD256, IX86_BUILTIN_PSRLQI256,
1553 IX86_BUILTIN_PSRLQ256, IX86_BUILTIN_PSUBB256,
1554 IX86_BUILTIN_PSUBW256, IX86_BUILTIN_PSUBD256,
1555 IX86_BUILTIN_PSUBQ256, IX86_BUILTIN_PSUBSB256,
1556 IX86_BUILTIN_PSUBSW256, IX86_BUILTIN_PSUBUSB256,
1557 IX86_BUILTIN_PSUBUSW256, IX86_BUILTIN_PUNPCKHBW256,
1558 IX86_BUILTIN_PUNPCKHWD256, IX86_BUILTIN_PUNPCKHDQ256,
1559 IX86_BUILTIN_PUNPCKHQDQ256, IX86_BUILTIN_PUNPCKLBW256,
1560 IX86_BUILTIN_PUNPCKLWD256, IX86_BUILTIN_PUNPCKLDQ256,
1561 IX86_BUILTIN_PUNPCKLQDQ256, IX86_BUILTIN_PXOR256,
1562 IX86_BUILTIN_MOVNTDQA256, IX86_BUILTIN_VBROADCASTSS_PS,
1563 IX86_BUILTIN_VBROADCASTSS_PS256,
1564 IX86_BUILTIN_VBROADCASTSD_PD256,
1565 IX86_BUILTIN_VBROADCASTSI256, IX86_BUILTIN_PBLENDD256,
1566 IX86_BUILTIN_PBLENDD128, IX86_BUILTIN_PBROADCASTB256,
1567 IX86_BUILTIN_PBROADCASTW256, IX86_BUILTIN_PBROADCASTD256,
1568 IX86_BUILTIN_PBROADCASTQ256, IX86_BUILTIN_PBROADCASTB128,
1569 IX86_BUILTIN_PBROADCASTW128, IX86_BUILTIN_PBROADCASTD128,
1570 IX86_BUILTIN_PBROADCASTQ128, IX86_BUILTIN_VPERMVARSI256,
1571 IX86_BUILTIN_VPERMDF256, IX86_BUILTIN_VPERMVARSF256,
1572 IX86_BUILTIN_VPERMDI256, IX86_BUILTIN_VPERMTI256,
1573 IX86_BUILTIN_VEXTRACT128I256, IX86_BUILTIN_VINSERT128I256,
1574 IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ,
1575 IX86_BUILTIN_MASKLOADD256, IX86_BUILTIN_MASKLOADQ256,
1576 IX86_BUILTIN_MASKSTORED, IX86_BUILTIN_MASKSTOREQ,
1577 IX86_BUILTIN_MASKSTORED256, IX86_BUILTIN_MASKSTOREQ256,
1578 IX86_BUILTIN_PSLLVV4DI, IX86_BUILTIN_PSLLVV2DI,
1579 IX86_BUILTIN_PSLLVV8SI, IX86_BUILTIN_PSLLVV4SI,
1580 IX86_BUILTIN_PSRAVV8SI, IX86_BUILTIN_PSRAVV4SI,
1581 IX86_BUILTIN_PSRLVV4DI, IX86_BUILTIN_PSRLVV2DI,
1582 IX86_BUILTIN_PSRLVV8SI, IX86_BUILTIN_PSRLVV4SI,
1583 IX86_BUILTIN_GATHERSIV2DF, IX86_BUILTIN_GATHERSIV4DF,
1584 IX86_BUILTIN_GATHERDIV2DF, IX86_BUILTIN_GATHERDIV4DF,
1585 IX86_BUILTIN_GATHERSIV4SF, IX86_BUILTIN_GATHERSIV8SF,
1586 IX86_BUILTIN_GATHERDIV4SF, IX86_BUILTIN_GATHERDIV8SF,
1587 IX86_BUILTIN_GATHERSIV2DI, IX86_BUILTIN_GATHERSIV4DI,
1588 IX86_BUILTIN_GATHERDIV2DI, IX86_BUILTIN_GATHERDIV4DI,
1589 IX86_BUILTIN_GATHERSIV4SI, IX86_BUILTIN_GATHERSIV8SI,
1590 IX86_BUILTIN_GATHERDIV4SI, IX86_BUILTIN_GATHERDIV8SI.
1591 (bdesc_special_args): Add IX86_BUILTIN_MOVNTDQA256,
1592 IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ,
1593 IX86_BUILTIN_MASKLOADD256, IX86_BUILTIN_MASKLOADQ256,
1594 IX86_BUILTIN_MASKSTORED, IX86_BUILTIN_MASKSTOREQ,
1595 IX86_BUILTIN_MASKSTORED256, IX86_BUILTIN_MASKSTOREQ256.
1596 (bdesc_args): Add IX86_BUILTIN_MPSADBW256,
1597 IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
1598 IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
1599 IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
1600 IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
1601 IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
1602 IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
1603 IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
1604 IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
1605 IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
1606 IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
1607 IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
1608 IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
1609 IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
1610 IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
1611 IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
1612 IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
1613 IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
1614 IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
1615 IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
1616 IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
1617 IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
1618 IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
1619 IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
1620 IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
1621 IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
1622 IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
1623 IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
1624 IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
1625 IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
1626 IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
1627 IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
1628 IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
1629 IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
1630 IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
1631 IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
1632 IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
1633 IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
1634 IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
1635 IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
1636 IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
1637 IX86_BUILTIN_PSLLWI256, IX86_BUILTIN_PSLLW256,
1638 IX86_BUILTIN_PSLLDI256, IX86_BUILTIN_PSLLD256,
1639 IX86_BUILTIN_PSLLQI256, IX86_BUILTIN_PSLLQ256,
1640 IX86_BUILTIN_PSRAWI256, IX86_BUILTIN_PSRAW256,
1641 IX86_BUILTIN_PSRADI256, IX86_BUILTIN_PSRAD256,
1642 IX86_BUILTIN_PSRLDQI256, IX86_BUILTIN_PSRLWI256,
1643 IX86_BUILTIN_PSRLW256, IX86_BUILTIN_PSRLDI256,
1644 IX86_BUILTIN_PSRLD256, IX86_BUILTIN_PSRLQI256,
1645 IX86_BUILTIN_PSRLQ256, IX86_BUILTIN_PSUBB256,
1646 IX86_BUILTIN_PSUBW256, IX86_BUILTIN_PSUBD256,
1647 IX86_BUILTIN_PSUBQ256, IX86_BUILTIN_PSUBSB256,
1648 IX86_BUILTIN_PSUBSW256, IX86_BUILTIN_PSUBUSB256,
1649 IX86_BUILTIN_PSUBUSW256, IX86_BUILTIN_PUNPCKHBW256,
1650 IX86_BUILTIN_PUNPCKHWD256, IX86_BUILTIN_PUNPCKHDQ256,
1651 IX86_BUILTIN_PUNPCKHQDQ256, IX86_BUILTIN_PUNPCKLBW256,
1652 IX86_BUILTIN_PUNPCKLWD256, IX86_BUILTIN_PUNPCKLDQ256,
1653 IX86_BUILTIN_PUNPCKLQDQ256, IX86_BUILTIN_PXOR256,
1654 IX86_BUILTIN_VBROADCASTSS_PS, IX86_BUILTIN_VBROADCASTSS_PS256,
1655 IX86_BUILTIN_VBROADCASTSD_PD256,
1656 IX86_BUILTIN_VBROADCASTSI256, IX86_BUILTIN_PBLENDD256,
1657 IX86_BUILTIN_PBLENDD128, IX86_BUILTIN_PBROADCASTB256,
1658 IX86_BUILTIN_PBROADCASTW256, IX86_BUILTIN_PBROADCASTD256,
1659 IX86_BUILTIN_PBROADCASTQ256, IX86_BUILTIN_PBROADCASTB128,
1660 IX86_BUILTIN_PBROADCASTW128, IX86_BUILTIN_PBROADCASTD128,
1661 IX86_BUILTIN_PBROADCASTQ128, IX86_BUILTIN_VPERMVARSI256,
1662 IX86_BUILTIN_VPERMDF256, IX86_BUILTIN_VPERMVARSF256,
1663 IX86_BUILTIN_VPERMDI256, IX86_BUILTIN_VPERMTI256,
1664 IX86_BUILTIN_VEXTRACT128I256, IX86_BUILTIN_VINSERT128I256,
1665 IX86_BUILTIN_PSLLVV4DI, IX86_BUILTIN_PSLLVV2DI,
1666 IX86_BUILTIN_PSLLVV8SI, IX86_BUILTIN_PSLLVV4SI,
1667 IX86_BUILTIN_PSRAVV8SI, IX86_BUILTIN_PSRAVV4SI,
1668 IX86_BUILTIN_PSRLVV4DI, IX86_BUILTIN_PSRLVV2DI,
1669 IX86_BUILTIN_PSRLVV8SI, IX86_BUILTIN_PSRLVV4SI.
1670 (ix86_init_mmx_sse_builtins): Add IX86_BUILTIN_GATHERSIV2DF,
1671 IX86_BUILTIN_GATHERSIV4DF, IX86_BUILTIN_GATHERDIV2DF,
1672 IX86_BUILTIN_GATHERDIV4DF, IX86_BUILTIN_GATHERSIV4SF,
1673 IX86_BUILTIN_GATHERSIV8SF, IX86_BUILTIN_GATHERDIV4SF,
1674 IX86_BUILTIN_GATHERDIV8SF, IX86_BUILTIN_GATHERSIV2DI,
1675 IX86_BUILTIN_GATHERSIV4DI, IX86_BUILTIN_GATHERDIV2DI,
1676 IX86_BUILTIN_GATHERDIV4DI, IX86_BUILTIN_GATHERSIV4SI,
1677 IX86_BUILTIN_GATHERSIV8SI, IX86_BUILTIN_GATHERDIV4SI,
1678 IX86_BUILTIN_GATHERDIV8SI.
1679 (ix86_preferred_simd_mode): Support AVX2 modes.
1680 (ix86_expand_args_builtin): Support AVX2 builtins.
1681 (ix86_expand_special_args_builtin): Likewise.
1682 (ix86_expand_builtin): Likewise.
1683 * config/i386/i386.md (UNSPEC_VPERMSI): New.
1684 (UNSPEC_VPERMDF): Likewise.
1685 (UNSPEC_VPERMSF): Likewise.
1686 (UNSPEC_VPERMDI): Likewise.
1687 (UNSPEC_VPERMTI): Likewise.
1688 (UNSPEC_GATHER): Likewise.
1689 (ssemodesuffix): Extend.
1690 * config/i386/immintrin.h: Include avx2intrin.h when __AVX2__
1692 * config/i386/predicates.md (const1248_operand): New.
1693 * config/i386/sse.md (VI1_AVX2): New mode iterator.
1694 (VI2_AVX2): Likewise.
1695 (VI4_AVX2): Likewise.
1696 (VI8_AVX2): Likewise.
1697 (VIMAX_AVX2): Likewise.
1698 (SSESCALARMODE): Likewise.
1699 (VI12_AVX2): Likewise.
1700 (VI24_AVX2): Likewise.
1701 (VI124_AVX2): Likewise.
1702 (VI248_AVX2): Likewise.
1703 (VI48_AVX2): Likewise.
1704 (VI4SD_AVX2): Likewise.
1705 (V48_AVX2): Likewise.
1706 (AVX256MODE2P): Likewise.
1707 (AVXMODE48P_DI): Likewise.
1708 (sse2_avx2): New mode attribute.
1709 (ssse3_avx2): Likewise.
1710 (sse4_1_avx2): Likewise.
1711 (avx_avx2): Likewise.
1712 (ssebytemode): Likewise.
1713 (AVXTOSSEMODE): Likewise.
1714 (AVXMODE48P_DI): Likewise.
1715 (gthrfirstp): Likewise.
1716 (gthrlastp): Likewise.
1717 (lshift): New code_iterator
1718 (lshift): New code attribute.
1720 (ssescalarmodesuffix): Update.
1721 (sseunpackmode): Likewise.
1722 (ssepackmode): Likewise.
1723 (avx2_vec_dupv4sf): New insn pattern.
1724 (avx2_vec_dupv8sf): Likewise.
1725 (avx2_interleave_highv4di): Likewise.
1726 (avx2_interleave_lowv4di): Likewise.
1727 (avx2_umulv4siv4di3): Likewise
1728 (*avx2_umulv4siv4di3): Likewise
1729 (avx2_pmaddwd): Likewise.
1730 (*avx2_pmaddwd): Likewise.
1731 (avx2_lshrqv4di3): Likewise.
1732 (avx2_lshlqv4di3): Likewise.
1733 (avx2_lshl<mode>3): Likewise.
1734 (avx2_<umaxmin:code><mode>3): Likewise.
1735 (*avx2_<umaxmin:code><mode>3): Likewise.
1736 (avx2_<smaxmin:code><mode>3): Likewise.
1737 (*avx2_<smaxmin:code><mode>3): Likewise.
1738 (avx2_eq<mode>3): Likewise.
1739 (*avx2_eq<mode>3): Likewise.
1740 (avx2_gt<mode>3): Likewise.
1741 (avx2_interleave_highv32qi): New.
1742 (avx2_interleave_lowv32qi): Likewise.
1743 (avx2_interleave_highv16hi): Likewise.
1744 (avx2_interleave_lowv16hi): Likewise.
1745 (avx2_interleave_highv8si): Likewise.
1746 (avx2_interleave_lowv8si): Likewise.
1747 (avx2_pshufd): Likewise.
1748 (avx2_pshufd_1): Likewise.
1749 (avx2_pshuflwv3): Likewise.
1750 (avx2_pshuflw_1): Likewise.
1751 (avx2_pshufhwv3): Likewise.
1752 (avx2_pshufhw_1): Likewise.
1753 (avx2_uavgv32qi3): Likewise.
1754 (*avx2_uavgv32qi3): Likewise.
1755 (avx2_uavgv16hi3): Likewise.
1756 (*avx2_uavgv16hi3): Likewise.
1757 (avx2_pmovmskb): Likewise.
1758 (avx2_phaddwv16hi3): Likewise.
1759 (avx2_phadddv8si3): Likewise.
1760 (avx2_phaddswv16hi3): Likewise.
1761 (avx2_phsubwv16hi3): Likewise.
1762 (avx2_phsubdv8si3): Likewise.
1763 (avx2_phsubswv16hi3): Likewise.
1764 (avx2_pmaddubsw256): Likewise.
1765 (avx2_umulhrswv16hi3): Likewise.
1766 (*avx2_umulhrswv16hi3): Likewise.
1767 (avx2_packusdw): Likewise.
1768 (avx2_pblendd<mode>): Likewise.
1769 (avx2_<code>v16qiv16hi2): Likewise.
1770 (avx2_<code>v8qiv8si2): Likewise.
1771 (avx2_<code>v8hiv8si2): Likewise.
1772 (avx2_<code>v4qiv4di2): Likewise.
1773 (avx2_<code>v4hiv4di2): Likewise.
1774 (avx2_<code>v4siv4di2): Likewise.
1775 (avx2_pbroadcast<mode>): Likewise.
1776 (avx2_permvarv8si): Likewise.
1777 (avx2_permv4df): Likewise.
1778 (avx2_permvarv8sf): Likewise.
1779 (avx2_permv4di): Likewise.
1780 (avx2_permv2ti): Likewise.
1781 (avx2_vec_dupv4df): Likewise.
1782 (avx2_vbroadcasti128_<mode>): Likewise.
1783 (avx2_vec_set_lo_v4di): Likewise.
1784 (avx2_vec_set_hi_v4di): Likewise.
1785 (*avx2_maskmov<avx2modesuffix><avxmodesuffix>): Likewise.
1786 (avx2_extracti128): Likewise.
1787 (avx2_inserti128): Likewise.
1788 (avx2_ashrvv8si): Likewise.
1789 (avx2_ashrvv4si): Likewise.
1790 (avx2_<lshift>vv8si): Likewise.
1791 (avx2_<lshift>v<mode>): Likewise.
1792 (avx2_<lshift>vv2di): Likewise.
1793 (avx2_gathersi<mode>): Likewise.
1794 (*avx2_gathersi<mode>): Likewise.
1795 (avx2_gatherdi<mode>): Likewise.
1796 (*avx2_gatherdi<mode>): Likewise.
1797 (avx2_gatherdi<mode>256): Likewise.
1798 (*avx2_gatherdi<mode>256): Likewise.
1799 (<plusminus_insn><mode>3): Use VI mode iterator.
1800 (*<plusminus_insn><mode>3): Use VI mode iterator.
1801 (<sse2_avx2>_<plusminus_insn><mode>3): Rename from
1802 sse2_<plusminus_insn><mode>3. Use VI12_AVX2 mode iterator.
1803 (*<sse2_avx2>_<plusminus_insn><mode>3): Rename from
1804 *sse2_<plusminus_insn><mode>3. Use VI12_AVX2 mode iterator.
1805 (mul<mode>3): Rename from mulv8hi3. Use VI2_AVX2 mode iterator.
1806 (*mul<mode>3): Rename from *mulv8hi3. Use VI2_AVX2 mode iterator.
1807 (<s>mul<mode>3_highpart): Rename from <s>mulv8hi3_highpart.
1808 Use VI2_AVX2 mode iterator.
1809 (*<s>mul<mode>3_highpart): Rename from *<s>mulv8hi3_highpart.
1810 Use VI2_AVX2 mode iterator.
1811 (mul<mode>3): Rename from mulv4si3. Use VI4_AVX2 mode iterator.
1812 (*mul<mode>3): Rename from *mulv4si3. Use VI4_AVX2 mode iterator.
1813 (*<sse4_1_avx2>_mulv2siv2di3): Rename from *sse4_1_mulv4si3.
1814 Use VI4_AVX2 mode iterator.
1815 (ashr<mode>3): Use VI24_AVX2 mode iterator.
1816 (lshr<mode>3): Use VI248_AVX2 mode iterator.
1817 (<sse2_avx2>_ashl<mode>3): Rename from sse2_ashlv1ti3.
1818 Use VIMAX_AVX2 mode iterator.
1819 (<sse2_avx2>_andnot<mode>3): Rename from sse2_andnot<mode>3.
1820 Use VI mode iterator.
1821 (*andnot<mode>3): Update for AVX2.
1822 (*<any_logic:code><mode>3): Likewise.
1823 (<sse2_avx2>_packsswb): Rename from sse2_packsswb.
1824 Use VI1_AVX mode iterator.
1825 (<sse2_avx2>_packssdw): Rename from sse2_packssdw.
1826 Use VI2_AVX mode iterator.
1827 (<sse2_avx2>_packuswb): Rename from sse2_packsswb.
1828 Use VI1_AVX mode iterator.
1829 (<sse2_avx2>_psadbw): Rename from sse2_psadbw.
1830 Use VI8_AVX2 mode iterator.
1831 (<ssse3_avx2>_pshufb<mode>3): Rename from ssse3_pshufbv16qi3.
1832 Use VI1_AVX2 mode iterator.
1833 (<ssse3_avx2>_psign<mode>3): Rename from ssse3_psign<mode>3.
1834 Use VI124_AVX2 mode iterator.
1835 (<ssse3_avx2>_palignr<mode>): Rename from ssse3_palignrti.
1836 Use SSESCALARMODE mode iterator.
1837 (abs<mode>2): Use VI124_AVX2 mode iterator.
1838 (<sse4_1_avx2>_movntdqa): Rename from sse4_1_movntdqa.
1839 Use VI8_AVX2 mode iterator.
1840 (<sse4_1_avx2>_mpsadbw): Rename from sse4_1_mpsadbw.
1841 Use VI1_AVX2 mode iterator.
1842 (<sse4_1_avx2>_pblendvb): Rename from sse4_1_pblendvb.
1843 Use VI1_AVX2 mode iterator.
1844 (<sse4_1_avx2>_pblendw): Rename from sse4_1_pblendvb.
1845 Use VI2_AVX2 mode iterator.
1846 (<avx_avx2>_maskload<avx2modesuffix><avxmodesuffix>): Rename from
1847 avx_maskload<ssemodesuffix><avxsizesuffix>. Use V48_AVX2 mode iterator.
1848 (<avx_avx2>_maskstore<avx2modesuffix><avxmodesuffix>): Rename from
1849 avx_maskstore<ssemodesuffix><avxsizesuffix>.
1850 Use V48_AVX2 mode iterator.
1851 * doc/extend.texi: Document AVX2 built-in functions.
1852 * doc/invoke.texi: Document -mavx2.
1854 2011-08-22 Matthias Klose <doko@debian.org>
1857 2011-07-11 Arthur Loiret <aloiret@debian.org>
1858 Matthias Klose <doko@debian.org>
1859 * config/mips/t-linux64 (MULTILIB_DIRNAMES): Set to 'n32 . 64' if
1860 tm_defines contains MIPS_ABI_DEFAULT ABI_32, to follow the glibc
1862 * config.gcc (tm_defines): Add MIPS_ABI_DEFAULT=ABI_32.
1864 2011-08-22 Mikael Pettersson <mikpe@it.uu.se>
1867 * ira-color.c (assign_hard_reg): Move saved_nregs declaration
1868 to #ifndef HONOR_REG_ALLOC_ORDER block.
1870 2011-08-21 Richard Henderson <rth@redhat.com>
1872 * rtl.h (INSN_ANNULLED_BRANCH_P): Only allow JUMP_INSN.
1873 * dwarf2cfi.c (scan_trace): Test JUMP_P before INSN_ANNULLED_BRANCH_P.
1874 * resource.c (next_insn_no_annul): Likewise.
1875 (mark_set_resources): Likewise.
1876 * reorg.c (delete_from_delay_slot): Likewise.
1877 (dbr_schedule, redundant_insn, try_merge_delay_insns): Likewise.
1878 (get_branch_condition): Test pc_rtx and LABEL_REF before dereferencing.
1880 2011-08-21 Uros Bizjak <ubizjak@gmail.com>
1882 * config/i386/i386.md (any_div): Remove.
1883 (sgnprefix): Update for removal.
1886 2011-08-20 Vladimir Makarov <vmakarov@redhat.com>
1888 * ira-lives.c (mark_pseudo_regno_subword_live): Use allocno class
1889 for ira_reg_class_max_nregs. Increase pressure by 1.
1890 (mark_pseudo_regno_subword_dead): Use allocno class
1891 for ira_reg_class_max_nregs.
1893 2011-08-20 Richard Henderson <rth@redhat.com>
1895 * config/c6x/eqd.c, config/c6x/eqf.c, config/c6x/ged.c,
1896 config/c6x/gef.c, config/c6x/gtd.c, config/c6x/gtf.c,
1897 config/c6x/led.c, config/c6x/lef.c, config/c6x/ltd.c,
1898 config/c6x/ltf.c: Adjust include path for soft-fp.
1900 2011-08-20 H.J. Lu <hongjiu.lu@intel.com>
1903 * config.gcc (tm_file): Add initfini-array.h if
1904 .init_arrary/.fini_array are supported.
1906 * crtstuff.c: Don't generate .ctors nor .dtors sections if
1907 USE_INITFINI_ARRAY is defined.
1909 * output.h (default_elf_init_array_asm_out_constructor): New.
1910 (default_elf_fini_array_asm_out_destructor): Likewise.
1911 * varasm.c (elf_init_array_section): Likewise.
1912 (elf_fini_array_section): Likewise.
1913 (get_elf_initfini_array_priority_section): Likewise.
1914 (default_elf_init_array_asm_out_constructor): Likewise.
1915 (default_elf_fini_array_asm_out_destructor): Likewise.
1917 * config/initfini-array.h: New.
1919 2011-08-20 Richard Sandiford <rdsandiford@googlemail.com>
1921 * config/mips/mips.c (mips_class_max_nregs): Check that the mode is
1922 OK for ST_REGS and FP_REGS before taking those classes into account.
1924 2011-08-20 Richard Sandiford <rdsandiford@googlemail.com>
1926 * config/mips/mips.c (mips_reorg_process_insns): Check for jumps
1927 before checking for annulled branches.
1929 2011-08-20 Uros Bizjak <ubizjak@gmail.com>
1931 * config/i386/i386.c (ix86_binary_operator_ok): Use
1932 satisfies_constraint_L.
1934 2011-08-20 Uros Bizjak <ubizjak@gmail.com>
1935 Michael Matz <matz@suse.de>
1937 * config/i386/i386.c (ix86_expand_round_sse4): Expand as
1938 trunc (a + copysign (nextafter (0.5, 0.0), a)).
1940 2011-08-20 Anatoly Sokolov <aesok@post.ru>
1942 * doc/tm.texi.in (PREFERRED_OUTPUT_RELOAD_CLASS): Remove.
1943 * doc/tm.texi: Regenerate.
1944 * targhooks.c (default_preferred_output_reload_class): Don't use
1945 PREFERRED_OUTPUT_RELOAD_CLASS macro.
1946 * system.h (PREFERRED_OUTPUT_RELOAD_CLASS): Poison.
1948 2011-08-20 Jakub Jelinek <jakub@redhat.com>
1950 PR tree-optimization/48739
1951 * tree-ssa.c: Include cfgloop.h.
1952 (execute_update_addresses_taken): When updating ssa, if in loop closed
1953 SSA form, call rewrite_into_loop_closed_ssa instead of update_ssa.
1954 * Makefile.in (tree-ssa.o): Depend on $(CFGLOOP_H).
1956 2011-08-19 Vladimir Makarov <vmakarov@redhat.com>
1958 PR rtl-optimization/49936
1959 * ira.c (ira_init_register_move_cost): Ignore too small subclasses
1960 for calculation of max register move costs.
1962 2011-08-19 Joseph Myers <joseph@codesourcery.com>
1964 * c-parser.c (c_parser_postfix_expression): Convert operands of
1965 __builtin_complex to their semantic types.
1967 2011-08-19 H.J. Lu <hongjiu.lu@intel.com>
1970 * explow.c (convert_memory_address_addr_space): Also permute the
1971 conversion and addition of constant for zero-extend.
1973 2011-08-19 Joseph Myers <joseph@codesourcery.com>
1975 * c-parser.c (c_parser_postfix_expression): Handle RID_BUILTIN_COMPLEX.
1976 * doc/extend.texi (__builtin_complex): Document.
1978 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
1980 * tree-ssa-math-opts.c (is_widening_mult_rhs_p): Handle constants
1982 (convert_mult_to_widen): Convert constant inputs to the right type.
1983 (convert_plusminus_to_widen): Don't automatically reject inputs that
1984 are not an SSA_NAME.
1985 Convert constant inputs to the right type.
1987 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
1989 * tree-ssa-math-opts.c (convert_plusminus_to_widen): Convert add_rhs
1990 to the correct type.
1992 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
1994 * tree-ssa-math-opts.c (convert_mult_to_widen): Better handle
1995 unsigned inputs of different modes.
1996 (convert_plusminus_to_widen): Likewise.
1998 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
2000 * tree-ssa-math-opts.c (is_widening_mult_rhs_p): Add new argument
2002 Use 'type' from caller, not inferred from 'rhs'.
2003 Don't reject non-conversion statements. Do return lhs in this case.
2004 (is_widening_mult_p): Add new argument 'type'.
2005 Use 'type' from caller, not inferred from 'stmt'.
2006 Pass type to is_widening_mult_rhs_p.
2007 (convert_mult_to_widen): Pass type to is_widening_mult_p.
2008 (convert_plusminus_to_widen): Likewise.
2010 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
2012 * tree-ssa-math-opts.c (is_widening_mult_p): Remove FIXME.
2013 Ensure the the larger type is the first operand.
2015 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
2017 * tree-ssa-math-opts.c (convert_mult_to_widen): Convert
2018 unsupported unsigned multiplies to signed.
2019 (convert_plusminus_to_widen): Likewise.
2021 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
2023 * tree-ssa-math-opts.c (convert_plusminus_to_widen): Permit a single
2024 conversion statement separating multiply-and-accumulate.
2026 2011-08-19 Richard Guenther <rguenther@suse.de>
2028 PR tree-optimization/50067
2029 * tree-data-ref.c (dr_analyze_indices): Simplify, strip MEM_REF
2030 offset only if we accounted for it.
2032 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
2034 * config/arm/arm.md (maddhidi4): Remove '*' from name.
2035 * expr.c (expand_expr_real_2): Use find_widening_optab_handler.
2036 * optabs.c (find_widening_optab_handler_and_mode): New function.
2037 (expand_widen_pattern_expr): Use find_widening_optab_handler.
2038 (expand_binop_directly): Likewise.
2039 (expand_binop): Likewise.
2040 * optabs.h (find_widening_optab_handler): New macro define.
2041 (find_widening_optab_handler_and_mode): New prototype.
2042 * tree-cfg.c (verify_gimple_assign_binary): Adjust WIDEN_MULT_EXPR
2043 type precision rules.
2044 (verify_gimple_assign_ternary): Likewise for WIDEN_MULT_PLUS_EXPR.
2045 * tree-ssa-math-opts.c (build_and_insert_cast): New function.
2046 (is_widening_mult_rhs_p): Allow widening by more than one mode.
2047 Explicitly disallow mis-matched input types.
2048 (convert_mult_to_widen): Use find_widening_optab_handler, and cast
2049 input types to fit the new handler.
2050 (convert_plusminus_to_widen): Likewise.
2052 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
2054 * expr.c (expand_expr_real_2): Use widening_optab_handler.
2055 * genopinit.c (optabs): Use set_widening_optab_handler for $N.
2056 (gen_insn): $N now means $a must be wider than $b, not consecutive.
2057 * optabs.c (widened_mode): New function.
2058 (expand_widen_pattern_expr): Use widening_optab_handler.
2059 (expand_binop_directly): Likewise.
2060 (expand_binop): Likewise.
2061 * optabs.h (widening_optab_handlers): New struct.
2062 (optab_d): New member, 'widening'.
2063 (widening_optab_handler): New function.
2064 (set_widening_optab_handler): New function.
2065 * tree-ssa-math-opts.c (convert_mult_to_widen): Use
2066 widening_optab_handler.
2067 (convert_plusminus_to_widen): Likewise.
2069 2011-08-19 Joseph Myers <joseph@codesourcery.com>
2071 * c-decl.c (grokdeclarator): Diagnose _Noreturn for non-C1X if
2073 * c-parser.c (c_parser_declspecs): Include _Noreturn in syntax comment.
2074 * ginclude/stdnoreturn.h (noreturn): Don't define for C++.
2076 2011-08-19 Joseph Myers <joseph@codesourcery.com>
2078 * opth-gen.awk: Do not declare target save/restore structures and
2079 functions if IN_RTS defined.
2081 2011-08-19 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
2084 * config/arm/arm.c (arm_output_epilogue): Properly handle epilogue
2085 when stack was realigned in interrupt handler prologue.
2087 2011-08-18 Joseph Myers <joseph@codesourcery.com>
2089 * c-decl.c (shadow_tag_warned): Check for _Noreturn.
2090 (quals_from_declspecs): Assert _Noreturn not present.
2091 (grokdeclarator): Handle _Noreturn.
2092 (build_null_declspecs): Initialize noreturn_p.
2093 (declspecs_add_scspec): Handle RID_NORETURN.
2094 * c-parser.c (c_token_starts_declspecs, c_parser_declspecs)
2095 (c_parser_attributes): Handle RID_NORETURN.
2096 * c-tree.h (struct c_declspecs): Add noreturn_p.
2097 * ginclude/stdnoreturn.h: New.
2098 * Makefile.in (USER_H): Add stdnoreturn.h.
2100 2011-08-18 Kirill Yukhin <kirill.yukhin@intel.com>
2102 * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX2_SET): New.
2103 (OPTION_MASK_ISA_AVX_UNSET): Update.
2104 (OPTION_MASK_ISA_AVX2_UNSET): New.
2105 (ix86_handle_option): Handle OPT_mavx2 case.
2106 * config/i386/cpuid.h (bit_AVX2): New.
2107 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2109 * config/i386/i386-c.c (ix86_target_macros_internal):
2110 Conditionally define __AVX2__.
2111 * config/i386/i386.c (ix86_option_override_internal): Define PTA_AVX2.
2112 Define "core-avx2" processor alias. Handle avx2 option.
2113 (ix86_valid_target_attribute_inner_p): Handle avx2 option.
2114 * config/i386/i386.h (TARGET_AVX2): New.
2115 * config/i386/i386.opt (mavx2): New.
2116 * doc/invoke.texi: Document -mavx2.
2118 2011-08-18 Vladimir Makarov <vmakarov@redhat.com>
2120 PR rtl-optimization/49890
2121 * ira-costs.c (setup_regno_cost_classes_by_aclass): Don't exclude
2122 subclasses of class which is superset of a pressure class.
2124 2011-08-18 H.J. Lu <hongjiu.lu@intel.com>
2125 Igor Zamyatin <igor.zamyatin@intel.com>
2127 * config/i386/i386-c.c (ix86_target_macros_internal): Replace int
2128 with HOST_WIDE_INT for isa_flag.
2129 (ix86_pragma_target_parse): Replace int with HOST_WIDE_INT for
2132 * config/i386/i386.c (ix86_target_string): Replace int with
2133 HOST_WIDE_INT for isa. Use HOST_WIDE_INT_PRINT to print isa.
2134 (ix86_target_opts): Replace int with HOST_WIDE_INT on mask.
2135 (pta_flags): Removed.
2136 (PTA_XXX): Redefined as (HOST_WIDE_INT_1 << X).
2137 (pta): Use HOST_WIDE_INT on flags.
2138 (builtin_isa): Use HOST_WIDE_INT on isa.
2139 (ix86_add_new_builtins): Likewise.
2140 (def_builtin): Use HOST_WIDE_INT on mask.
2141 (def_builtin_const): Likewise.
2142 (builtin_description): Likewise.
2144 * config/i386/i386.opt (ix86_isa_flags): Replace int with
2146 (ix86_isa_flags_explicit): Likewise.
2147 (x_ix86_isa_flags_explicit): Likewise.
2149 2011-08-17 Vladimir Makarov <vmakarov@redhat.com>
2151 PR rtl-optimization/50107
2152 * ira-int.h (ira_hard_reg_not_in_set_p): Remove.
2153 (ira_hard_reg_in_set_p): New.
2155 * ira-color.c (calculate_saved_nregs): New.
2156 (assign_hard_reg): Use it. Set up allocated_hard_reg_p for all
2158 (allocno_reload_assign, fast_allocation): Use
2159 ira_hard_reg_set_intersection_p instead of
2160 ira_hard_reg_not_in_set_p.
2162 * ira.c (setup_reg_renumber): Use
2163 ira_hard_reg_set_intersection_p instead of
2164 ira_hard_reg_not_in_set_p.
2165 (setup_allocno_assignment_flags, calculate_allocation_cost): Use
2166 ira_hard_reg_in_set_p instead of ira_hard_reg_not_in_set_p.
2168 * ira-costs.c (ira_tune_allocno_costs): Use
2169 ira_hard_reg_set_intersection_p instead of
2170 ira_hard_reg_not_in_set_p.
2172 2011-08-18 H.J. Lu <hongjiu.lu@intel.com>
2173 Igor Zamyatin <igor.zamyatin@intel.com>
2175 * hwint.h (HOST_WIDE_INT_1): New.
2177 * opt-functions.awk (switch_bit_fields): Initialize the
2178 host_wide_int field.
2179 (host_wide_int_var_name): New.
2180 (var_type_struct): Check and return HOST_WIDE_INT.
2182 * opt-read.awk: Handle HOST_WIDE_INT for "Variable".
2184 * optc-save-gen.awk: Support HOST_WIDE_INT on var_target_other.
2186 * opth-gen.awk: Use HOST_WIDE_INT_1 on HOST_WIDE_INT. Properly
2187 check masks for HOST_WIDE_INT.
2189 * opts-common.c (set_option): Support HOST_WIDE_INT flag_var.
2190 (option_enabled): Likewise.
2191 (get_option_state): Likewise.
2193 * opts.h (cl_option): Add cl_host_wide_int. Change var_value
2196 2011-08-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2197 Marc Glisse <marc.glisse@normalesup.org>
2199 PR libstdc++-v3/1773
2200 * target.def (decl_mangling_context): New C++ hook.
2201 * doc/tm.texi: Regenerate.
2202 * config/sol2-cxx.c, config/sol2-stubs.c: New files.
2203 * config/sol2-protos.h: Group by source file.
2204 (solaris_cxx_decl_mangling_context): Declare.
2205 * config/sol2.h (TARGET_CXX_DECL_MANGLING_CONTEXT): Define.
2206 * config/t-sol2 (sol2-cxx.o, sol2-stubs.o): New targets.
2208 * config.gcc (*-*-solaris2*): Add sol2-cxx.o to cxx_target_objs.
2209 Add sol2-stubs.o to extra_objs.
2211 2011-08-18 Jakub Jelinek <jakub@redhat.com>
2214 * stor-layout.c (update_alignment_for_field): Don't ICE on
2215 packed flexible array members if ms_bitfield_layout_p.
2218 * config/i386/i386.c (assign_386_stack_local): Call validize_mem
2219 on the result before returning it.
2222 * tree-vect-stmts.c (vect_finish_stmt_generation): If gsi_stmt (*gsi)
2223 is a debug stmt, use location of the first non-debug stmt after it.
2225 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
2227 * config/arm/arm.c (arm_rtx_costs_1): Don't modify the costs of SET.
2228 (arm_size_rtx_costs): Likewise.
2230 2011-08-18 Richard Guenther <rguenther@suse.de>
2232 * tree.h (tree_int_cst_msb): Remove.
2233 * tree.c (tree_int_cst_msb): Likewise.
2234 (tree_int_cst_sign_bit): Move from ...
2235 * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): ... here.
2237 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
2239 * doc/tm.texi.in (TARGET_RTX_COSTS): Add an opno paramter.
2240 * doc/tm.texi: Regenerate.
2241 * target.def (rtx_costs): Add an opno parameter.
2242 * hooks.h (hook_bool_rtx_int_int_intp_bool_false): Replace with...
2243 (hook_bool_rtx_int_int_int_intp_bool_false): ...this.
2244 * hooks.c (hook_bool_rtx_int_int_intp_bool_false): Replace with...
2245 (hook_bool_rtx_int_int_int_intp_bool_false): ...this.
2246 * cse.c (COST_IN): Add an opno parameter.
2247 (notreg_cost): Likewise. Update call to rtx_cost.
2248 (COST, fold_rtx): Update accordingly.
2249 * dojump.c (prefer_and_bit_test): Update call to rtx_cost.
2250 * expmed.c (emit_store_flag): Likewise.
2251 * optabs.c (avoid_expensive_constant): Add an opno parameter.
2252 Update call to rtx_cost.
2253 (expand_binop_directly, expand_binop): Likewise.
2254 (expand_twoval_binop, prepare_cmp_insn): Likewise.
2255 * rtl.h (rtx_cost, get_full_rtx_cost): Add opno parameters.
2256 (set_src_cost, get_full_set_src_cost): Update accordingly.
2257 * rtlanal.c (rtx_cost): Add an opno parameter. Update call
2259 (get_full_rtx_cost): Add an opno paramter. Update calls to rtx_cost.
2260 (default_adress_cost): Update calls to rtx_cost.
2262 * config/arm/arm.c (arm_rtx_costs_1, arm_size_rtx_costs)
2263 (arm_slowmul_rtx_costs): Adjust calls to rtx_cost.
2264 (arm_rtx_costs): Add an opno parameter.
2265 * config/alpha/alpha.c (alpha_rtx_costs): Add an opno parameter and
2266 adjust any recursive rtx-cost calls.
2267 * config/avr/avr.c (avr_operand_rtx_cost, avr_rtx_costs): Likewise.
2268 * config/bfin/bfin.c (bfin_rtx_costs): Likewise.
2269 * config/c6x/c6x.c (c6x_rtx_costs): Likewise.
2270 * config/cris/cris.c (cris_rtx_costs): Likewise.
2271 * config/frv/frv.c (frv_rtx_costs): Likewise.
2272 * config/h8300/h8300.c (h8300_rtx_costs): Likewise.
2273 * config/i386/i386.c (ix86_rtx_costs): Likewise.
2274 * config/ia64/ia64.c (ia64_rtx_costs): Likewise.
2275 * config/iq2000/iq2000.c (iq2000_rtx_costs): Likewise.
2276 * config/lm32/lm32.c (lm32_rtx_costs): Likewise.
2277 * config/m32c/m32c.c (m32c_rtx_costs): Likewise.
2278 * config/m32r/m32r.c (m32r_rtx_costs): Likewise.
2279 * config/m68k/m68k.c (m68k_rtx_costs): Likewise.
2280 * config/mcore/mcore.c (mcore_rtx_costs): Likewise.
2281 * config/mep/mep.c (mep_rtx_cost): Likewise.
2282 * config/microblaze/microblaze.c (microblaze_rtx_costs): Likewise.
2283 * config/mips/mips.c (mips_binary_cost): Update call to rtx_cost.
2284 (mips_zero_extend_cost): Add an opno parameter.
2285 * config/mmix/mmix.c (mmix_rtx_costs): Likewise.
2286 * config/mn10300/mn10300.c (mn10300_address_cost): Update call
2288 (mn10300_rtx_costs): Add an opno parameter and adjust any recursive
2290 * config/pa/pa.c (hppa_rtx_costs): Likewise.
2291 * config/pdp11/pdp11.c (pdp11_rtx_costs): Likewise.
2292 * config/picochip/picochip.c (picochip_rtx_costs): Likewise.
2293 * config/rs6000/rs6000.c (rs6000_rtx_costs): Likewise.
2294 (rs6000_debug_rtx_costs): Likewise.
2295 * config/s390/s390.c (s390_rtx_costs): Likewise.
2296 * config/score/score-protos.h (score_rtx_costs): Likewise.
2297 * config/score/score.c (score_rtx_costs): Likewise.
2298 * config/sh/sh.c (andcosts): Update call to rtx_cost.
2299 (sh_rtx_costs): Add an opno parameter.
2300 * config/sparc/sparc.c (sparc_rtx_costs): Likewise.
2301 * config/spu/spu.c (spu_rtx_costs): Likewise.
2302 * config/stormy16/stormy16.c (xstormy16_rtx_costs): Likewise.
2303 * config/v850/v850.c (v850_rtx_costs): Likewise.
2304 * config/vax/vax.c (vax_rtx_costs): Likewise.
2305 * config/xtensa/xtensa.c (xtensa_rtx_costs): Likewise.
2307 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
2309 * rtl.h (set_src_cost, get_full_set_src_cost): New functions.
2310 * auto-inc-dec.c (attempt_change): Use set_src_cost instead of
2312 * calls.c (precompute_register_parameters): Likewise.
2313 * combine.c (expand_compound_operation, make_extraction): Likewise.
2314 (force_to_mode, distribute_and_simplify_rtx): Likewise.
2315 * dse.c (find_shift_sequence): Likewise.
2316 * expmed.c (init_expmed, expand_mult, expand_smod_pow2): Likewise.
2317 * expr.c (compress_float_constant): Likewise.
2318 * fwprop.c (should_replace_address, try_fwprop_subst): Likewise.
2319 * gcse.c (want_to_gcse_p): Likewise.
2320 * ifcvt.c (noce_try_sign_mask): Likewise.
2321 * loop-doloop.c (doloop_optimize): Likewise.
2322 * loop-invariant.c (create_new_invariant): Likewise.
2323 * optabs.c (avoid_expensive_constant): Likewise.
2324 * postreload.c (reload_cse_simplify_set, reload_cse_simplify_operands)
2325 (try_replace_in_use, reload_cse_move2add): Likewise.
2326 * reload1.c (calculate_elim_costs_all_insns): Likewise.
2327 (note_reg_elim_costly): Likewise.
2328 * rtlanal.c (insn_rtx_cost): Likewise.
2329 * simplify-rtx.c (simplify_binary_operation_1): Likewise.
2330 * stmt.c (lshift_cheap_p): Likewise.
2331 * tree-ssa-loop-ivopts.c (seq_cost, computation_cost): Likewise.
2332 * config/avr/avr.c (final_prescan_insn): Likewise.
2333 * config/bfin/bfin.c (bfin_rtx_costs): Likewise.
2334 * config/mips/mips.c (mips_binary_cost, mips_rtx_costs): Likewise.
2336 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
2338 * rtl.h (set_rtx_cost, get_full_set_rtx_cost): New functions.
2339 * auto-inc-dec.c (attempt_change): Use set_rtx_cost.
2340 * cfgloopanal.c (seq_cost): Likewise.
2341 * loop-invariant.c (create_new_invariant): Likewise.
2342 * postreload.c (move2add_use_add2_insn, move2add_use_add3_insn)
2343 (reload_cse_move2add): Use get_full_set_rtx_cost.
2345 2011-08-18 Richard Guenther <rguenther@suse.de>
2347 * expr.c (get_inner_reference): Fix typo in last change.
2349 2011-08-18 Paolo Carlini <paolo.carlini@oracle.com>
2350 Joseph Myers <joseph@codesourcery.com>
2352 PR tree-optimization/49963
2353 * hwint.c (absu_hwi): Define.
2354 * hwint.h (absu_hwi): Declare.
2355 * fold-const.c (fold_plusminus_mult_expr): Use absu_hwi instead
2357 * tree-ssa-math-opts.c (gimple_expand_builtin_pow): Likewise.
2358 * tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Likewise.
2360 2011-08-18 Richard Guenther <rguenther@suse.de>
2362 * expr.c (get_inner_reference): Sign-extend the constant
2363 twos-complement offset before doing arbitrary precision
2365 * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
2366 (get_constraint_for_1): Pass the offset of a MEM_REF unchanged
2367 to get_constraint_for_ptr_offset.
2369 2011-08-17 Kaz Kojima <kkojima@gcc.gnu.org>
2372 * config/sh/sh.c (sh_output_mi_thunk): Don't call dbr_schedule.
2374 2011-08-17 Richard Guenther <rguenther@suse.de>
2376 * tree.h (convert_to_ptrofftype_loc): New function.
2377 (convert_to_ptrofftype): Define.
2378 * builtins.c (expand_builtin_bzero): Use size_type_node.
2379 (fold_builtin_bzero): Likewise.
2380 (std_gimplify_va_arg_expr): Build the BIT_AND_EXPR on the pointer.
2381 * c-typeck.c (build_unary_op): Use convert_to_ptrofftype_loc.
2382 * cgraphunit.c (thunk_adjust): Use fold_build_pointer_plus_loc.
2383 (cgraph_redirect_edge_call_stmt_to_callee): Use size_int.
2384 * expr.c (expand_expr_addr_expr_1): Use fold_build_pointer_plus.
2385 * fold-const.c (build_range_check): Negate using the original type.
2386 (fold_unary_loc): Use fold_build_pointer_plus_loc.
2387 * gimple-fold.c (gimple_adjust_this_by_delta): Use
2388 convert_to_ptrofftype.
2389 * gimplify.c (gimplify_self_mod_expr): Likewise.
2390 * graphite-clast-to-gimple.c (clast_to_gcc_expression): Likewise.
2391 (graphite_create_new_loop_guard): Likewise.
2392 * graphite-sese-to-poly.c (my_long_long): Remove.
2393 (scop_ivs_can_be_represented): Adjust.
2394 * tree-cfg.c (verify_gimple_assign_unary): Use ptrofftype_p.
2395 * tree-chrec.c (chrec_fold_plus_1): Use fold_build_pointer_plus.
2396 * tree-loop-distribution.c (build_size_arg_loc): Use
2398 (generate_memset_zero): Simplify.
2399 * tree-mudflap.c: Use fold_convert, not convert.
2400 * tree-predcom.c (suitable_reference_p): Expand DR_OFFSET in
2402 (determine_offset): Likewise for DR_STEP.
2403 (valid_initializer_p): Likewise.
2404 * tree-profile.c (prepare_instrumented_value): Convert the pointer
2405 to an integer type of same size.
2406 * tree-scalar-evolution.c (interpret_rhs_expr): Do not refer
2407 to sizetype without need.
2408 * tree-ssa-address.c (tree_mem_ref_addr): Likewise.
2409 * tree-ssa-loop-ivopts.c (find_bivs): Use convert_to_ptrofftype.
2410 * tree-ssa-loop-manip.c (create_iv): Likewise.
2411 (determine_exit_conditions): Adjust comment.
2412 * tree-ssa-pre.c (create_expression_by_pieces): Use
2413 convert_to_ptrofftype.
2414 * tree-ssa-structalias.c (get_constraint_for_1): Likewise.
2415 * varasm.c (array_size_for_constructor): Compute using double_ints.
2417 2011-08-16 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
2419 * config/spu/spu.c (spu_emit_branch_or_set): Avoid reverse tests
2420 when generating an integer result where possible. Short-cut
2421 comparison against 0 also for QImode.
2423 2011-08-16 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
2425 * config/spu/spu.h (LEGITIMIZE_RELOAD_ADDRESS): New macro.
2426 * config/spu/spu-protos.h (spu_legitimize_reload_address): Add
2428 * config/spu/spu.c (spu_legitimize_reload_address): New function.
2429 (spu_legitimate_address_p): Do not check displacement if the base
2430 is an eliminable stack register.
2432 2011-08-16 Anatoly Sokolov <aesok@post.ru>
2434 * config/m32c/m32c.h (PREFERRED_RELOAD_CLASS,
2435 PREFERRED_OUTPUT_RELOAD_CLASS): Remove macro.
2436 * config/m32c/m32c-protos.h (m32c_preferred_reload_class,
2437 m32c_preferred_output_reload_class): Remove.
2438 * config/m32c/m32c.c (m32c_preferred_reload_class): Make static.
2439 Change rclass argument and return types to reg_class_t. Use
2440 reg_class_subset_p instead of class_sizes.
2441 (m32c_preferred_output_reload_class): Make static. Change rclass
2442 argument and return types to reg_class_t.
2443 (TARGET_PREFERRED_RELOAD_CLASS,
2444 TARGET_PREFERRED_OUTPUT_RELOAD_CLASS): Define.
2446 2011-08-16 Kai Tietz <ktietz@redhat.com>
2448 * config/i386/mingw32.h (GOMP_SELF_SPEC): Add -pthread option.
2450 2011-08-16 Richard GUenther <rguenther@suse.de>
2452 PR tree-optimization/50082
2453 * tree-ssa-forwprop.c (combine_cond_expr_cond): Handle overflow
2454 warnings here, instead of ...
2455 (ssa_forward_propagate_and_combine): ... here.
2456 (forward_propagate_into_comparison_1): Adjust.
2457 (forward_propagate_into_comparison): Likewise.
2458 (forward_propagate_into_gimple_cond): Likewise.
2459 (forward_propagate_into_cond): Likewise.
2461 2011-08-16 Andreas Schwab <schwab@redhat.com>
2463 * ggc.h (ggc_alloc_rtvec_sized): Use ggc_alloc_zone_rtvec_def
2464 instead of ggc_alloc_zone_vec_rtvec_def.
2466 2011-08-16 Richard Guenther <rguenther@suse.de>
2468 * tree.h (ptrofftype_p): New helper function.
2469 * tree-cfg.c (verify_expr): Use ptrofftype_p for POINTER_PLUS_EXPR
2470 offset verification.
2471 (verify_gimple_assign_binary): Likewise.
2472 * tree.c (build2_stat): Likewise.
2473 * tree-chrec.c (chrec_fold_plus_poly_poly): Likewise.
2474 (reset_evolution_in_loop): Likewise.
2475 * tree-chrec.h (build_polynomial_chrec): Likewise.
2477 2011-08-16 Liang Wang <lwang1@marvell.com>
2479 * ggc.h (ggc_alloc_rtvec_sized): Change arguments of
2480 ggc_alloc_zone_vec_rtvec_def.
2482 2011-08-16 Richard Guenther <rguenther@suse.de>
2484 * tree-vrp.c (extract_range_from_multiplicative_op_1): New
2485 helper factored out from ...
2486 (extract_range_from_binary_expr_1): ... here. Re-structure
2487 to not glob handling too different tree codes.
2489 2011-08-15 Richard Henderson <rth@redhat.com>
2492 * explow.c (allocate_dynamic_stack_space): Move suppress_reg_args_size
2493 setting out to include allocate_stack named pattern as well.
2494 * builtins.c (expand_builtin_apply): Add ARG_SIZE 0 note.
2495 * stmt.c (expand_stack_restore): Likewise.
2497 2011-08-15 Richard Guenther <rguenther@suse.de>
2500 * fold-const.c (maybe_canonicalize_comparison_1): Properly
2501 convert the modified operand to the other operand type.
2502 (fold_comparison): Call maybe_canonicalize_comparison_1 with
2503 useless conversions stripped from comparison operands.
2505 2011-08-15 Richard Guenther <rguenther@suse.de>
2507 * tree-vrp.c (value_range_nonnegative_p): Fix anti-range case.
2508 (extract_range_from_unary_expr_1): Restructure.
2510 2011-08-15 Richard Guenther <rguenther@suse.de>
2512 PR tree-optimization/50058
2513 * tree-ssa-sccvn.c (vn_reference_lookup_3): Relax aggregate
2516 2011-08-15 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
2519 * config/arm/arm.c (output_move_double): Add 2 parameters
2520 to count the number of insns emitted and whether to emit or not.
2521 Use the flag to decide when to emit and count number of instructions
2522 that will be emitted.
2523 Handle case where output_move_double might be called for calculating
2524 lengths with an invalid constant.
2525 (arm_count_output_move_double_insns): Define.
2526 * config/arm/arm-protos.h (arm_count_output_move_double_insns): Declare.
2527 (output_move_double): Adjust prototype.
2528 * config/arm/vfp.md ("*movdi_vfp"): Adjust call to
2530 ("*movdi_vfp_cortexa8"): Likewise and add attribute
2532 * config/arm/arm.md ("*arm_movdi"): Adjust call to output_move_double.
2533 ("*movdf_soft_insn"): Likewise.
2534 * config/arm/cirrus.md ("*cirrus_arm_movdi"): Likewise.
2535 ("*cirrus_thumb2_movdi"): Likewise.
2536 ("*thumb2_cirrus_movdf_hard_insn"): Likewise.
2537 ("*cirrus_movdf_hard_insn"): Likewise.
2538 * config/arm/neon.md (*neon_mov<mode> VD): Likewise.
2539 * config/arm/iwmmxt.md ("*iwmmxt_arm_movdi"): Likewise.
2540 ("mov<mode>_internal VMMX"): Likewise.
2541 * config/arm/fpa.md (*movdf_fpa, *thumb2_movdf_fpa): Likewise.
2543 2011-08-14 Uros Bizjak <ubizjak@gmail.com>
2545 * config/i386/i386.c (ix86_expand_round_sse4): New function.
2546 * config/i386/i386-protos.h (ix86_expand_round_sse4): New prototype.
2547 * config/i386/i386.md (round<mode>2): Use ix86_expand_round_sse4
2550 (rint<mode>2): Simplify TARGET_ROUND check.
2551 (floor<mode>2): Ditto.
2552 (ceil<mode>2): Ditto.
2553 (btrunc<mode>2): Ditto.
2555 2011-08-14 Anatoly Sokolov <aesok@post.ru>
2557 * config/mmix/mmix.c (TARGET_PREFERRED_OUTPUT_RELOAD_CLASS): Redefine
2558 as mmix_preferred_output_reload_class.
2560 2011-08-14 Georg-Johann Lay <avr@gjlay.de>
2563 * config/avr/avr.md (UNSPEC_IDENTITY): New c_enum.
2564 (branch_unspec): New insn.
2565 (branch): Beauty farm.
2566 * config/avr/avr.c (compare_condition): Use JUMP_P. Test SET_SRC
2568 (avr_compare_pattern, avr_reorg_remove_redundant_compare):
2569 New static functions.
2570 (avr_reorg): Use them. Use next_real_insn instead of NEXT_INSN.
2571 Use CONST_INT_P. Beauty.
2573 2011-08-12 Richard Henderson <rth@redhat.com>
2576 * sched-init.h (struct deps_desc): Add sched_before_next_jump.
2577 * sched-deps.c (init_deps): Clear it.
2578 (deps_analyze_insn): Consume it.
2579 (sched_analyze_insn): Fill it.
2581 2011-08-12 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
2584 * config/arm/arm.h (CASE_VECTOR_SHORTEN_MODE): Fix distance
2585 for tbh instructions.
2587 2011-08-12 Diego Novillo <dnovillo@google.com>
2589 * data-streamer.h (streamer_write_zero): Rename from output_zero.
2590 (streamer_write_uhwi): Rename from lto_output_uleb128.
2591 (streamer_write_hwi): Rename from output_sleb128.
2592 (streamer_write_string): Rename from lto_output_string.
2593 (streamer_string_index): Rename from lto_string_index.
2594 (streamer_write_string_with_length): Rename from
2595 lto_output_string_with_length.
2596 (streamer_write_uhwi_stream): Rename from lto_output_uleb128_stream.
2597 (streamer_write_hwi_stream): Rename from lto_output_sleb128_stream.
2598 (streamer_read_string): Rename from lto_input_string.
2599 (streamer_read_indexed_string): Rename from input_string_internal.
2600 (streamer_read_uhwi): Rename from lto_input_uleb128.
2601 (streamer_read_hwi): Rename from lto_input_sleb128.
2602 (streamer_write_hwi_in_range): Rename from lto_output_int_in_range.
2603 (streamer_read_hwi_in_range): Rename from lto_input_int_in_range.
2604 (streamer_write_enum): Rename from lto_output_enum.
2605 (streamer_read_enum): Rename from lto_input_enum.
2606 (streamer_write_record_start): Rename from output_record_start.
2607 (streamer_read_record_start): Rename from input_record_start.
2608 (streamer_write_bitpack): Rename from lto_output_bitpack.
2609 (streamer_read_bitpack): Rename from lto_input_bitpack.
2610 (streamer_write_char_stream): Rename from lto_output_1_stream.
2611 (streamer_read_uchar): Rename from lto_input_1_unsigned.
2612 * tree-streamer.h (streamer_cache_d): Rename from lto_streamer_cache_d.
2613 (streamer_handle_as_builtin_p): Rename from lto_stream_as_builtin_p.
2614 (streamer_read_string_cst): Rename from input_string_cst.
2615 (streamer_read_chain): Rename from lto_input_chain.
2616 (streamer_alloc_tree): Rename from lto_materialize_tree.
2617 (streamer_read_tree_body): Rename from lto_input_tree_pointers.
2618 (streamer_get_pickled_tree): Rename from lto_get_pickled_tree.
2619 (streamer_get_builtin_tree): Rename from lto_get_builtin_tree.
2620 (streamer_read_integer_cst): Rename from lto_input_integer_cst.
2621 (streamer_read_tree_bitfields): Rename from tree_read_bitfields.
2622 (streamer_write_chain): Rename from lto_output_chain.
2623 (streamer_write_tree_header): Rename from lto_output_tree_header.
2624 (streamer_pack_tree_bitfields): Rename from pack_value_fields.
2625 (streamer_write_tree_body): Rename from lto_output_tree_pointers.
2626 (streamer_write_integer_cst): Rename from lto_output_integer_cst.
2627 (streamer_write_builtin): Rename from lto_output_builtin_tree.
2628 (streamer_check_handled_ts_structures): Rename from
2629 check_handled_ts_structures.
2630 (streamer_tree_cache_insert): Rename from lto_streamer_cache_insert.
2631 (streamer_tree_cache_insert_at): Rename from
2632 lto_streamer_cache_insert_at.
2633 (streamer_tree_cache_append): Rename from lto_streamer_cache_append.
2634 (streamer_tree_cache_lookup): Rename from lto_streamer_cache_lookup.
2635 (streamer_tree_cache_get): Rename from lto_streamer_cache_get.
2636 (streamer_tree_cache_create): Rename from lto_streamer_cache_create.
2637 (streamer_tree_cache_delete): Rename from lto_streamer_cache_delete.
2638 * tree-streamer-out.c (write_string_cst): Rename from output_string_cst.
2639 (write_identifier): Rename from output_identifier.
2640 (write_ts_common_tree_pointers): Rename from
2641 lto_output_ts_common_tree_pointers.
2642 (write_ts_vector_tree_pointers): Rename from
2643 lto_output_ts_vector_tree_pointers.
2644 (write_ts_complex_tree_pointers): Rename from
2645 lto_output_ts_complex_tree_pointers.
2646 (write_ts_decl_minimal_tree_pointers): Rename from
2647 lto_output_ts_decl_minimal_tree_pointers.
2648 (write_ts_decl_common_tree_pointers): Rename from
2649 lto_output_ts_decl_common_tree_pointers.
2650 (write_ts_decl_non_common_tree_pointers): Rename from
2651 lto_output_ts_decl_non_common_tree_pointers.
2652 (write_ts_decl_with_vis_tree_pointers): Rename from
2653 lto_output_ts_decl_with_vis_tree_pointers.
2654 (write_ts_field_decl_tree_pointers): Rename from
2655 lto_output_ts_field_decl_tree_pointers.
2656 (write_ts_function_decl_tree_pointers): Rename from
2657 lto_output_ts_function_decl_tree_pointers.
2658 (write_ts_type_common_tree_pointers): Rename from
2659 lto_output_ts_type_common_tree_pointers.
2660 (write_ts_type_non_common_tree_pointers): Rename from
2661 lto_output_ts_type_non_common_tree_pointers.
2662 (write_ts_list_tree_pointers): Rename from
2663 lto_output_ts_list_tree_pointers.
2664 (write_ts_vec_tree_pointers): Rename from
2665 lto_output_ts_vec_tree_pointers.
2666 (write_ts_exp_tree_pointers): Rename from
2667 lto_output_ts_exp_tree_pointers.
2668 (write_ts_block_tree_pointers): Rename from
2669 lto_output_ts_block_tree_pointers.
2670 (write_ts_binfo_tree_pointers): Rename from
2671 lto_output_ts_binfo_tree_pointers.
2672 (write_ts_constructor_tree_pointers): Rename from
2673 lto_output_ts_constructor_tree_pointers.
2674 (write_ts_target_option): Rename from lto_output_ts_target_option.
2675 (write_ts_translation_unit_decl_tree_pointers): Rename from
2676 lto_output_ts_translation_unit_decl_tree_pointers.
2677 * tree-streamer.c (streamer_tree_cache_add_to_node_array):
2678 Rename from lto_streamer_cache_add_to_node_array.
2679 (streamer_tree_cache_insert_1): Rename from lto_streamer_cache_insert_1.
2680 (record_common_node): Rename from lto_record_common_node.
2682 * streamer-hooks.h (bitpack_d, lto_streamer_cache_d): Remove forward
2684 * data-streamer-in.c (lto_input_widest_uint_uleb128): Remove unused
2686 * data-streamer-out.c (lto_output_widest_uint_uleb128_stream): Remove
2688 * Makefile.in (lto-section-out.o): Add dependency on DATA_STREAMER_H.
2689 (ipa-reference.o): Likewise.
2690 * lto-section-out.c: Include data-streamer.h.
2691 * ipa-reference.c: Include data-streamer.h.
2693 2011-08-12 Nick Clifton <nickc@redhat.com>
2695 * builtins.c (expand_builtin_memcmp): Do not use cmpstrnsi pattern.
2696 * doc/md.texi (cmpstrn): Note that the comparison stops if both
2697 fetched bytes are zero.
2699 (cmpmem): Note that the comparison does not stop if both of the
2700 fetched bytes are zero.
2702 2011-08-12 Uros Bizjak <ubizjak@gmail.com>
2704 * builtins.def (BUILT_IN_ICEIL{,F,L}, BUILT_IN_IFLOOR{,F,L}
2705 BUILT_IN_IRINT{,F,L}, BUILT_IN_IROUND{,F,L}: New builtin definitions.
2706 * convert.c (convert_to_integer): Convert to BUILT_IN_ICEIL,
2707 BUILT_IN_IFLOOR, BUILT_IN_IRINT or BUILT_INT_IROUND when converting
2708 to integer_type_node.
2709 * fold-const.c (tree_call_nonnegative_warnv_p): Handle BUILT_IN_ICEIL,
2710 BUILT_IN_IFLOOR, BUILT_IN_IRINT and BUILT_INT_IROUND.
2711 * builtins.c (expand_builtin_in): Ditto.
2712 (mathfn_built_in_1): Ditto.
2713 (expand_builtin_int_roundingfn): Handle BUILT_IN_ICEIL and
2715 (expand_builtin_int_roundingfn_2): Handle BUILT_IN_IRINT and
2717 (fold_fixed_mathfn): Canonicalize BUILT_IN_ICEIL, BUILTIN_IN_IFLOOR
2718 BUILT_IN_IRINT and BUILT_IN_IROUND to BUILT_IN_LCEIL,
2719 BUILTIN_IN_LFLOOR, BUILT_IN_LRINT and BUILT_IN_LROUND on ILP32 targets.
2721 2011-08-12 Richard Guenther <rguenther@suse.de>
2723 * tree-vrp.c (extract_range_from_unary_expr_1): Implement -X as 0 - X.
2725 2011-08-12 Romain Geissler <romain.geissler@gmail.com>
2727 * Makefile.in (PLUGIN_HEADERS): Add C_TREE_H.
2729 2011-08-12 Richard Sandiford <rdsandiford@googlemail.com>
2731 * config/arm/arm.c (get_label_padding): New function.
2732 (create_fix_barrier, arm_reorg): Use it.
2734 2011-08-11 Uros Bizjak <ubizjak@gmail.com>
2737 * config/i386/i386.md (*lea_5_zext): New.
2738 (*lea_6_zext): Ditto.
2739 * config/i386/predicates.md (const_32bit_mask): New predicate.
2740 (lea_address_operand): Reject AND.
2741 * config/i386/i386.c (ix86_decompose_address): Allow Dimode AND with
2742 const_32bit_mask immediate.
2743 (ix86_print_operand_address): Handle AND.
2744 (memory_address_length): Ditto.
2746 2011-08-11 Romain Geissler <romain.geissler@gmail.com>
2747 Brian Hackett <bhackett1024@gmail.com>
2749 * plugin.def: Add event for finish_decl.
2750 * plugin.c (register_callback, invoke_plugin_callbacks): Same.
2751 * c-decl.c (finish_decl): Invoke callbacks on above event.
2752 * doc/plugins.texi: Document above event.
2754 2011-08-11 Richard Guenther <rguenther@suse.de>
2756 * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid redundant
2757 lookups, make looking through aggregate copies stronger.
2759 2011-08-11 Richard Henderson <rth@redhat.com>
2762 * expr.c (fixup_args_size_notes): Accept and ignore normal calls.
2764 2011-08-11 Richard Guenther <rguenther@suse.de>
2766 * lto-cgraph.c (input_node): Use DECL_BUILT_IN.
2767 * tree-vrp.c (stmt_interesting_for_vrp): Likewise.
2768 (vrp_visit_stmt): Likewise.
2770 2011-08-11 Richard Guenther <rguenther@suse.de>
2773 * gimplify.c (gimplify_modify_expr_complex_part): Mark the
2774 load of the other piece with TREE_NO_WARNING.
2775 * tree-flow.h (warn_uninit): Adjust prototype.
2776 * tree-ssa.c (warn_uninit): Take uninitialized SSA name,
2777 the base variable and the expression that is used separately.
2778 Properly query all TREE_NO_WARNING flags.
2779 (struct walk_data): Remove.
2780 (warn_uninitialized_var): Likewise.
2781 (warn_uninitialized_vars): Do not walk gimple pieces but simply
2782 look at all SSA uses of the statement. Handle unused memory
2784 * tree-ssa-uninit.c (warn_uninitialized_phi): Adjust.
2786 2011-08-11 Kazuhiro Inaoka <kazuhiro.inaoka.ud@renesas.com>
2788 * config/rx/rx.md (movsicc): Allow register to register transfers.
2789 (*movsicc): Likewise.
2790 (*stcc): Restrict this pattern to EQ and NE compares.
2791 (*stcc_reg): New pattern. Works for any comparison but only for
2794 2011-08-11 Diego Novillo <dnovillo@google.com>
2796 * tree-streamer-out.c (lto_output_ts_decl_with_vis_tree_pointers):
2797 Call stream_write_tree instead of output_record_start.
2798 (lto_output_ts_binfo_tree_pointers): Likewise.
2800 * streamer-hooks.h (stream_write_tree): Move from tree-streamer.h.
2801 Convert it to a macro.
2802 (stream_read_tree): Likewise.
2804 * lto-streamer.h (lto_stream_as_builtin_p): Move ...
2805 * tree-streamer.h (lto_stream_as_builtin_p): ... here.
2807 * lto-streamer-in.c (lto_read_tree): Call lto_streamer_cache_append
2808 and tree_read_bitfields.
2809 * lto-streamer-out.c (lto_is_streamable): Move from lto-streamer.c
2810 (lto_write_tree): Call it.
2811 * lto-streamer.c (lto_is_streamable): Move to lto-streamer-out.c
2812 * streamer-hooks.h (struct streamer_hooks): Remove fields
2813 name, is_streamable and alloc_tree. Update all users.
2814 * tree-streamer-in.c (tree_read_bitfields): Factor out of ...
2815 (lto_materialize_tree): ... here.
2816 Handle CALL_EXPR codes.
2817 Remove call to lto_streamer_cache_append.
2818 * tree-streamer-out.c (lto_output_tree_header): Handle CALL_EXPR nodes.
2819 * tree-streamer.h (tree_read_bitfields): Declare.
2821 * Makefile.in (TREE_STREAMER_H): Add STREAMER_HOOKS_H.
2822 (gimple-streamer-in.o): Add dependency on TREE_STREAMER_H.
2823 * tree-streamer.h (stream_read_tree): New. Replace all calls
2824 to lto_input_tree with it.
2825 (stream_write_tree): New. Replace all calls to lto_output_tree,
2826 lto_output_tree_ref and lto_output_tree_or_ref with it.
2827 * lto-streamer-in.c (lto_read_tree): Inline code from
2828 lto_streamer_read_tree.
2829 (lto_input_tree): Move from tree-streamer-in.c.
2830 * lto-streamer-out.c (lto_output_tree_ref): Make static.
2831 Remove handling of NULL values for EXPR.
2832 Do not handle EXPRs that are not indexable.
2833 (lto_write_tree): Move from tree-streamer-out.c.
2834 Inline lto_streamer_write_tree.
2835 (lto_output_tree): Move from tree-streamer-out.c.
2836 If REF_P is true and EXPR is indexable, call lto_output_tree_ref.
2837 * lto-streamer.c (lto_record_common_node): Move to tree-streamer.c.
2838 (lto_preload_common_nodes): Likewise.
2839 Remove assertions and adjustments for nodes
2840 main_identifier_node, ptrdiff_type_node and fileptr_type_node.
2841 (lto_streamer_hooks_init): Set streamer_hooks.write_tree to
2842 lto_output_tree and streamer_hooks.read_tree to lto_input_tree.
2843 * lto-streamer.h (lto_input_tree): Declare.
2844 (lto_output_tree_ref): Remove.
2845 * streamer-hooks.h (struct streamer_hooks): Remove fields
2846 preload_common_nodes, indexable_with_decls_p,
2847 pack_value_fields, unpack_value_fields and output_tree_header.
2849 * tree-streamer-in.c (lto_materialize_tree): Make extern.
2850 (lto_input_tree_pointers): Likewise.
2851 (lto_read_tree): Move to lto-streamer-in.c.
2852 (lto_input_integer_cst): Make extern.
2853 (lto_get_pickled_tree): Likewise.
2854 (lto_get_builtin_tree): Likewise.
2855 (lto_input_tree): Move to lto-streamer-in.c.
2856 * tree-streamer-out.c (pack_value_fields): Make extern.
2857 (lto_output_tree_or_ref): Remove. Replace all callers with
2858 calls to stream_write_tree.
2859 (lto_output_builtin_tree): Make extern.
2860 (lto_streamer_write_tree): Inline into lto_write_tree.
2861 (lto_output_tree_pointers): Make extern.
2862 (lto_output_tree_header): Likewise.
2863 (lto_output_integer_cst): Likewise.
2864 (lto_write_tree): Move to lto-streamer-out.c.
2865 (lto_output_tree): Likewise.
2866 * tree-streamer.c (lto_record_common_node): Move from lto-streamer.c
2867 (preload_common_nodes): Likewise.
2868 (lto_streamer_cache_create): Call it.
2869 * tree-streamer.h: Include streamer-hooks.h.
2870 (stream_write_tree): New.
2871 (stream_read_tree): New.
2872 (lto_input_tree): Remove.
2873 (lto_materialize_tree): Declare.
2874 (lto_input_tree_pointers): Declare.
2875 (lto_get_pickled_tree): Declare.
2876 (lto_get_builtin_tree): Declare.
2877 (lto_input_integer_cst): Declare.
2878 (lto_output_tree_header): Declare.
2879 (pack_value_fields): Declare.
2880 (lto_output_tree_pointers): Declare.
2881 (lto_output_integer_cst): Declare.
2882 (lto_output_builtin_tree): Declare.
2884 2011-08-11 Sergey Grechanik <mouseentity@ispras.ru>
2886 * sel-sched-ir.c (has_dependence_note_reg_use): Call ds_full_merge
2887 only if producer writes to the register given by regno.
2889 2011-08-11 Sergey Grechanik <mouseentity@ispras.ru>
2890 Alexander Monakov <amonakov@ispras.ru>
2892 * sched-deps.c (sched_get_condition_with_rev): Rename to ...
2893 (sched_get_condition_with_rev_uncached): ... this. Factor out
2894 condition caching logic into ...
2895 (sched_get_condition_with_rev): ... this. Reimplement. Do not
2896 attempt to use cache for instructions with zero luid.
2897 (sched_analyze_insn): Use INSN_CACHED_COND instead of INSN_COND.
2898 * sched-int.h (INSN_COND): Rename to INSN_CACHED_COND.
2900 2011-08-11 Sergey Grechanik <mouseentity@ispras.ru>
2902 * sel-sched-ir.c (get_seqno_of_a_pred): Rename to
2903 get_seqno_for_a_jump. Update the caller.
2904 (get_seqno_by_succs): New. Use it ...
2905 (get_seqno_for_a_jump): ... here to find a seqno if looking at
2906 predecessors was not sufficient.
2907 (get_seqno_by_preds): Include head in iteration range, exclude insn.
2909 2011-08-11 Dmitry Melnik <dm@ispras.ru>
2911 * sel-sched-ir.c (invalidate_av_set): Remove the assert.
2913 2011-08-11 Sergey Grechanik <mouseentity@ispras.ru>
2915 * sel-sched-ir.h (register_unavailable_p): Declare.
2916 * sel-sched-ir.c (register_unavailable_p): New. Use it...
2917 (set_unavailable_target_for_expr): ... here to properly test
2918 availability of a register.
2919 (speculate_expr): Ditto.
2920 * sel-sched.c (substitute_reg_in_expr): Ditto.
2921 (av_set_could_be_blocked_by_bookkeeping_p): Ditto.
2923 2011-08-11 Sergey Grechanik <mouseentity@ispras.ru>
2925 * sel-sched.c (verify_target_availability): Fix usage of
2928 2011-08-11 Dmitry Melnik <dm@ispras.ru>
2930 * sel-sched-ir.c (init_global_and_expr_for_insn): Forbid copying of
2931 recognized by cannot_copy_insn_p hook and volatile instructions.
2933 2011-08-11 Dmitry Melnik <dm@ispras.ru>
2935 * sel-sched-ir.c (merge_expr_data): Take maximum spec.
2937 2011-08-11 Richard Sandiford <richard.sandiford@linaro.org>
2939 * doc/md.texi (define_bypass): Say that the instruction names can
2940 be filename-style globs.
2941 * Makefile.in (FNMATCH_H): Define.
2942 (build/genattrtab.o, build/genautomata.o): Depend on $(FNMATCH_H).
2943 * genattrtab.c: Include fnmatch.h.
2944 (bypass_list): Change field name from "insn" to "pattern".
2945 (gen_bypass_1): Update accordingly.
2946 (process_bypasses): Use fnmatch to check for matches between
2947 insn reservations and define_bypasses.
2948 * genautomata.c: Include fnmatch.h.
2949 (bypass_decl): Rename in_insn_name and out_insn_name to in_pattern
2950 and out_pattern respectively.
2951 (gen_bypass, insert_bypass): Update accordingly.
2952 (for_each_matching_insn, process_bypass_2, process_bypass_1)
2953 (process_bypass): New functions.
2954 (process_decls): Use process_bypass. Update after field name changes.
2956 2011-08-11 Georg-Johann Lay <avr@gjlay.de>
2959 * config/avr/avr.md (smulqi3_highpart): New insn.
2960 (umulqi3_highpart): New insn.
2961 (*subqi3.ashiftrt7): New insn.
2962 (smulhi3_highpart): New expander.
2963 (umulhi3_highpart): Nex expander.
2964 (*smulhi3_highpart_call): New insn.
2965 (*umulhi3_highpart_call): New insn.
2966 (extend_u): New code attribute.
2967 (extend_prefix): Rename code attribute to extend_su.
2968 * config/avr/avr.c (avr_rtx_costs): Report costs of highpart of
2969 widening QI/HI multiply.
2971 2011-08-11 Ira Rosen <ira.rosen@linaro.org>
2973 PR tree-optimization/50039
2974 * tree-vect-patterns.c (vect_operation_fits_smaller_type): Check
2975 that DEF_STMT has a stmt_vec_info.
2977 2011-08-10 Richard Guenther <rguenther@suse.de>
2979 * tree.h (can_trust_pointer_alignment): Remove.
2980 * builtins.c (can_trust_pointer_alignment): Remove.
2982 2011-08-10 Artjoms Sinkarovs <artyom.shinakroff@gmail.com>
2984 * c-typeck.c (scalar_to_vector): New function. Try scalar to
2986 (stv_conv): New enum for scalar_to_vector return type.
2987 (build_binary_op): Adjust.
2988 * doc/extend.texi: Description of scalar to vector expansion.
2990 2011-08-10 Richard Guenther <rguenther@suse.de>
2992 * tree.h (get_pointer_alignment): Remove max-align argument.
2993 (get_object_alignment): Likewise.
2994 * builtins.c (get_object_alignment_1): Adjust.
2995 (get_object_alignment): Remove max-align argument.
2996 (get_pointer_alignment): Likewise.
2997 (expand_builtin_strlen): Adjust.
2998 (expand_builtin_memcpy): Likewise.
2999 (expand_builtin_mempcpy_args): Likewise.
3000 (expand_builtin_strncpy): Likewise.
3001 (expand_builtin_memset_args): Likewise.
3002 (expand_builtin_memcmp): Likewise.
3003 (expand_builtin_strcmp): Likewise.
3004 (expand_builtin_strncmp): Likewise.
3005 (get_builtin_sync_mem): Likewise.
3006 (fold_builtin_memset): Likewise.
3007 (fold_builtin_memory_op): Likewise.
3008 (expand_builtin_memory_chk): Likewise.
3009 * emit-rtl.c (get_mem_align_offset): Likewise.
3010 (set_mem_attributes_minus_bitpos): Likewise.
3011 * expr.c (expand_assignment): Likewise.
3012 (expand_expr_real_1): Likewise.
3013 * tree-sra.c (tree_non_mode_aligned_mem_p): Likewise.
3014 * tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
3015 * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Likewise.
3016 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
3017 * value-prof.c (gimple_stringops_transform): Likewise.
3019 2011-08-10 Paulo J. Matos <paulo.matos@csr.com>
3021 * doc/tm.texi.in (CLASS_MAX_NREGS): Fix typo.
3022 * doc/tm.texi: Regenerate.
3024 2011-08-10 Georg-Johann Lay <avr@gjlay.de>
3027 * config/avr/avr.md (*ashlhiqi3): New insn-and-split.
3028 (*ashl<extend_prefix>qihiqi3): New insn-and-splits.
3029 (*ashl<extend_prefix>qihiqi3.mem): New insn-and-splits.
3030 Add peephole2 to map ashlhi3 to ashlqi3 if high part of
3031 shift target is unused.
3033 2011-08-10 Richard Guenther <rguenther@suse.de>
3035 PR tree-optimization/49937
3036 * tree-ssa-ccp.c (get_value_from_alignment): Re-implement
3037 using get_object_alignment_1.
3039 2011-08-09 Uros Bizjak <ubizjak@gmail.com>
3041 * config/i386/i386.c (ix86_emit_i387_round): New function.
3042 * config/i386/i386-protos.h (ix86_emit_i387_round): Declare.
3043 * config/i386/i386.md (round<mode>2): Use X87MODEF mode iterator.
3044 Use ix86_emit_i387_round to expand round function for i387 math.
3045 (lround<X87MODEF:mode><SWI248x:mode>2): Use X87MODEF mode iterator.
3046 Use ix86_emit_i387_round to expand {l,ll}round function for i387 math.
3048 2011-08-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3050 * config/sync.c: Move to ../libgcc.
3051 * Makefile.in (libgcc.mvars): Remove LIBGCC_SYNC, LIBGCC_SYNC_CFLAGS.
3052 * config/mips/t-libgcc-mips16 (LIBGCC_SYNC, LIBGCC_SYNC_CFLAGS):
3055 2011-08-09 Anatoly Sokolov <aesok@post.ru>
3057 * config/mmix/mmix.h (REGISTER_MOVE_COST): Remove macro.
3058 * config/mmix/mmix-protos.h (mmix_register_move_cost): Remove.
3059 * config/mmix/mmix.c (mmix_register_move_cost): Make static.
3060 Change 'from' and 'to' arguments type to reg_class_t.
3061 (TARGET_REGISTER_MOVE_COST): Define.
3063 2011-08-09 Vladimir Makarov <vmakarov@redhat.com>
3067 PR rtl-optimization/49990
3068 * ira-costs.c (print_allocno_costs, print_pseudo_costs): Don't
3069 ignore classes which can not change mode.
3070 (find_costs_and_classes): Ditto.
3072 2011-08-09 Richard Guenther <rguenther@suse.de>
3074 * tree-vrp.c (zero_nonzero_bits_from_vr): Also return precise
3075 information for ranges with only negative values.
3076 (extract_range_from_binary_expr_1): Adjust BIT_IOR_EXPR and
3077 BIT_AND_EXPR handling to handle ranges with negative values.
3079 2011-08-09 Kirill Yukhin <kirill.yukhin@intel.com>
3081 * config/i386/i386.c: Remove traling spaces.
3082 * config/i386/sse.md: Likewise.
3083 (*fma_fmadd_<mode>): Fix insn alternative 1 mnemonic.
3084 (*fma_fmsub_<mode>): Likewise.
3085 (*fma_fnmadd_<mode>): Likewise.
3086 (*fma_fnmsub_<mode>): Likewise.
3088 2011-08-09 Nick Clifton <nickc@redhat.com>
3090 * config/rx/rx.md: Disable extender peepholes at -O3.
3092 2011-08-09 Uros Bizjak <ubizjak@gmail.com>
3095 * config/i386/i386.md (reload_noff_load): New.
3096 (reload_noff_store): Ditto.
3097 * config/i386/i386.c (ix86_secondary_reload): Use
3098 CODE_FOR_reload_noff_load and CODE_FOR_reload_noff_store to handle
3099 double-word moves from/to non-offsetable addresses instead of
3100 generating XMM temporary.
3102 2011-08-09 Anatoly Sokolov <aesok@post.ru>
3104 * config/mmix/mmix.h (REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Remove.
3106 2011-08-09 Ira Rosen <ira.rosen@linaro.org>
3108 PR tree-optimization/50014
3109 * tree-vect-loop.c (vectorizable_reduction): Get def type before
3110 calling vect_get_vec_def_for_stmt_copy ().
3112 2011-08-08 Vladimir Makarov <vmakarov@redhat.com>
3114 PR rtl-optimization/49990
3115 * ira-costs.c (print_allocno_costs, print_pseudo_costs): Don't
3116 ignore classes which can not change mode.
3117 (find_costs_and_classes): Ditto.
3119 2011-08-08 Richard Henderson <rth@redhat.com>
3122 * config/i386/i386.c (ix86_expand_prologue): Call
3123 for SEH target gen_prologue_use instead of gen_blockage
3126 2011-08-08 Martin Jambor <mjambor@suse.cz>
3129 * tree-sra.c (access_precludes_ipa_sra_p): Also check access
3132 2011-08-08 Diego Novillo <dnovillo@google.com>
3134 * Makefile.in (LTO_STREAMER_H): Add DIAGNOSTIC_H.
3135 (DATA_STREAMER_H): New.
3136 (GIMPLE_STREAMER_H): New.
3137 (TREE_STREAMER_H): New.
3138 (STREAMER_HOOKS_H): New.
3139 (OBJS): Add data-streamer.o, data-streamer-in.o, data-streamer-out.o,
3140 gimple-streamer-in.o, gimple-streamer-out.o, streamer-hooks.o,
3141 tree-streamer.o, tree-streamer-in.o and tree-streamer-out.o.
3142 (data-streamer.o): New.
3143 (data-streamer-in.o): New.
3144 (data-streamer-out.o): New.
3145 (gimple-streamer-in.o): New.
3146 (gimple-streamer-out.o): New.
3147 (streamer-hooks.o): New.
3148 (tree-streamer.o): New.
3149 (tree-streamer-in.o): New.
3150 (tree-streamer-out.o): New.
3151 (lto-cgraph.o): Add dependency on DATA_STREAMER_H and TREE_STREAMER_H.
3152 (lto-streamer-in.o): Add dependency on DATA_STREAMER_H,
3153 GIMPLE_STREAMER_H and TREE_STREAMER_H.
3154 (lto-streamer-out.o): Add dependency on DATA_STREAMER_H,
3155 GIMPLE_STREAMER_H and TREE_STREAMER_H.
3156 (lto-streamer.o): Add dependency on STREAMER_HOOKS_H.
3157 (ipa-prop.o): Add dependency on DATA_STREAMER_H and TREE_STREAMER_H.
3158 (ipa-inline-analysis.o): Likewise.
3159 (ipa-pure-const.o): Likewise.
3160 * data-streamer-in.c: New.
3161 * data-streamer-out.c: New.
3162 * data-streamer.c: New.
3163 * data-streamer.h: New.
3164 * gimple-streamer-in.c: New.
3165 * gimple-streamer-out.c: New.
3166 * gimple-streamer.h: New.
3167 * ipa-inline-analysis.c: Include data-streamer.h.
3168 * ipa-prop.c: Include data-streamer.h.
3169 * ipa-pure-const.c: Include data-streamer.h.
3170 * lto-cgraph.c: Include data-streamer.h.
3171 * lto-section-in.c (lto_input_uleb128): Move to data-streamer-in.c.
3172 (lto_input_widest_uint_uleb128): Likewise.
3173 (lto_input_sleb128): Likewise.
3174 (bp_unpack_var_len_unsigned): Likewise.
3175 (bp_unpack_var_len_int): Likewise.
3176 * lto-section-out.c (lto_output_uleb128_stream): Move to
3177 data-streamer-out.c.
3178 (lto_output_widest_uint_uleb128_stream): Likewise.
3179 (lto_output_sleb128_stream): Likewise.
3180 (bp_pack_var_len_unsigned): Likewise.
3181 (bp_pack_var_len_int): Likewise.
3182 * lto-streamer-in.c: Include data-streamer.h and gimple-streamer.h.
3183 (struct string_slot): Remove. Update all users.
3184 (lto_tag_check_set): Make extern.
3185 (lto_tag_check_range): Move to lto-streamer.h.
3186 (lto_tag_check): Likewise.
3187 (hash_string_slot_node): Remove. Update all users.
3188 (eq_string_slot_node): Remove. Update all users.
3189 (string_for_index): Move to data-streamer-in.c
3190 (input_string_internal): Likewise.
3191 (input_string_cst): Move to tree-streamer-in.c.
3192 (input_identifier): Likewise.
3193 (lto_input_string): Move to data-streamer-in.c
3194 (input_record_start): Move to data-streamer.h
3195 (canon_file_name): Use new definition of struct string_slot
3196 from data-streamer.h. Set S_SLOT.LEN.
3197 (lto_input_location): Make extern.
3198 (lto_input_chain): Move to tree-streamer-in.c.
3199 (lto_init_eh): Make extern.
3200 (input_phi): Move to gimple-streamer-in.c.
3201 (input_gimple_stmt): Likewise.
3202 (input_bb): Likewise.
3203 (unpack_ts_base_value_fields): Move to tree-streamer-in.c.
3204 (unpack_ts_real_cst_value_fields): Likewise.
3205 (unpack_ts_fixed_cst_value_fields): Likewise.
3206 (unpack_ts_decl_common_value_fields): Likewise.
3207 (unpack_ts_decl_wrtl_value_fields): Likewise.
3208 (unpack_ts_decl_with_vis_value_fields): Likewise.
3209 (unpack_ts_function_decl_value_fields): Likewise.
3210 (unpack_ts_type_common_value_fields): Likewise.
3211 (unpack_ts_block_value_fields): Likewise.
3212 (unpack_ts_translation_unit_decl_value_fields): Likewise.
3213 (unpack_value_fields): Likewise.
3214 (lto_materialize_tree): Likewise.
3215 (lto_input_ts_common_tree_pointers): Likewise.
3216 (lto_input_ts_vector_tree_pointers): Likewise.
3217 (lto_input_ts_complex_tree_pointers): Likewise.
3218 (lto_input_ts_decl_minimal_tree_pointers): Likewise.
3219 (lto_input_ts_decl_common_tree_pointers): Likewise.
3220 (lto_input_ts_decl_non_common_tree_pointers): Likewise.
3221 (lto_input_ts_decl_with_vis_tree_pointers): Likewise.
3222 (lto_input_ts_field_decl_tree_pointers): Likewise.
3223 (lto_input_ts_function_decl_tree_pointers): Likewise.
3224 (lto_input_ts_type_common_tree_pointers): Likewise.
3225 (lto_input_ts_type_non_common_tree_pointers): Likewise.
3226 (lto_input_ts_list_tree_pointers): Likewise.
3227 (lto_input_ts_vec_tree_pointers): Likewise.
3228 (lto_input_ts_exp_tree_pointers): Likewise.
3229 (lto_input_ts_block_tree_pointers): Likewise.
3230 (lto_input_ts_binfo_tree_pointers): Likewise.
3231 (lto_input_ts_constructor_tree_pointers): Likewise.
3232 (lto_input_ts_target_option): Likewise.
3233 (lto_input_ts_translation_unit_decl_tree_pointers): Likewise.
3234 (lto_input_tree_pointers): Likewise.
3235 (lto_get_pickled_tree): Likewise.
3236 (lto_get_builtin_tree): Likewise.
3237 (lto_read_tree): Likewise.
3238 (lto_input_integer_cst): Likewise.
3239 (lto_input_tree): Likewise.
3240 * lto-streamer-out.c: Include data-streamer.h,
3241 gimple-streamer.h and streamer-hooks.h.
3242 (struct string_slot): Move to data-streamer.h.
3243 (hash_string_slot_node): Likewise.
3244 (eq_string_slot_node): Likewise.
3245 (lto_string_index): Move to data-streamer-out.c.
3246 (lto_output_string_with_length): Likewise.
3247 (lto_output_string): Likewise.
3248 (output_string_cst): Move to tree-streamer-out.c.
3249 (output_identifier): Likewise.
3250 (output_zero): Move to data-streamer-out.c
3251 (output_uleb128): Likewise.
3252 (output_sleb128): Likewise.
3253 (output_record_start): Move to data-streamer.h
3254 (pack_ts_base_value_fields): Move to tree-streamer-out.c.
3255 (pack_ts_real_cst_value_fields): Likewise.
3256 (pack_ts_fixed_cst_value_fields): Likewise.
3257 (pack_ts_decl_common_value_fields): Likewise.
3258 (pack_ts_decl_wrtl_value_fields): Likewise.
3259 (pack_ts_decl_with_vis_value_fields): Likewise.
3260 (pack_ts_function_decl_value_fields): Likewise.
3261 (pack_ts_type_common_value_fields): Likewise.
3262 (pack_ts_block_value_fields): Likewise.
3263 (pack_ts_translation_unit_decl_value_fields): Likewise.
3264 (pack_value_fields): Likewise.
3265 (lto_output_chain): Likewise.
3266 (lto_output_ts_common_tree_pointers): Likewise.
3267 (lto_output_ts_vector_tree_pointers): Likewise.
3268 (lto_output_ts_complex_tree_pointers): Likewise.
3269 (lto_output_ts_decl_minimal_tree_pointers): Likewise.
3270 (lto_output_ts_decl_common_tree_pointers): Likewise.
3271 (lto_output_ts_decl_non_common_tree_pointers): Likewise.
3272 (lto_output_ts_decl_with_vis_tree_pointers): Likewise.
3273 (lto_output_ts_field_decl_tree_pointers): Likewise.
3274 (lto_output_ts_function_decl_tree_pointers): Likewise.
3275 (lto_output_ts_type_common_tree_pointers): Likewise.
3276 (lto_output_ts_type_non_common_tree_pointers): Likewise.
3277 (lto_output_ts_list_tree_pointers): Likewise.
3278 (lto_output_ts_vec_tree_pointers): Likewise.
3279 (lto_output_ts_exp_tree_pointers): Likewise.
3280 (lto_output_ts_block_tree_pointers): Likewise.
3281 (lto_output_ts_binfo_tree_pointers): Likewise.
3282 (lto_output_ts_constructor_tree_pointers): Likewise.
3283 (lto_output_ts_target_option): Likewise.
3284 (lto_output_ts_translation_unit_decl_tree_pointers): Likewise.
3285 (lto_output_tree_pointers): Likewise.
3286 (lto_output_tree_header): Likewise.
3287 (lto_output_builtin_tree): Likewise.
3288 (lto_write_tree): Likewise.
3289 (lto_output_integer_cst): Likewise.
3290 (lto_output_tree): Likewise.
3291 (output_phi): Move to gimple-streamer-out.c.
3292 (output_gimple_stmt): Likewise.
3293 (output_bb): Likewise.
3294 * lto-streamer.c: Include tree-streamer.h and streamer-hooks.h.
3295 (streamer_hooks): Move to streamer-hooks.c.
3296 (check_handled_ts_structures): Move to tree-streamer.c
3297 (lto_streamer_cache_add_to_node_array): Likewise.
3298 (lto_streamer_cache_insert_1): Likewise.
3299 (lto_streamer_cache_insert): Likewise.
3300 (lto_streamer_cache_insert_at): Likewise.
3301 (lto_streamer_cache_append): Likewise.
3302 (lto_streamer_cache_lookup): Likewise.
3303 (lto_streamer_cache_get): Likewise.
3304 (lto_record_common_node): Likewise.
3305 (lto_preload_common_nodes): Likewise.
3306 (lto_streamer_cache_create): Likewise.
3307 (lto_streamer_cache_delete): Likewise.
3308 (streamer_hooks_init): Move to streamer-hooks.c.
3309 * lto-streamer.h: Include diagnostic.h
3310 (struct output_block, struct lto_input_block,
3311 struct data_in, struct bitpack_d): Remove forward declarations.
3312 (struct bitpack_d): Move to data-streamer.h.
3313 (struct lto_streamer_cache_d): Move to tree-streamer.h.
3314 (struct streamer_hooks): Move to streamer-hooks.h.
3315 (bp_pack_var_len_unsigned): Move to data-streamer.h.
3316 (bp_pack_var_len_int): Likewise.
3317 (bp_unpack_var_len_unsigned): Likewise.
3318 (bp_unpack_var_len_int): Likewise.
3319 (lto_input_location): Declare.
3320 (lto_tag_check_set): Declare.
3321 (lto_init_eh): Declare.
3322 (lto_output_tree_ref): Declare.
3323 (lto_output_location): Declare.
3324 (bitpack_create): Move to data-streamer.h.
3325 (bp_pack_value): Likewise.
3326 (lto_output_bitpack): Likewise.
3327 (lto_input_bitpack): Likewise.
3328 (bp_unpack_value): Likewise.
3329 (lto_output_1_stream): Likewise.
3330 (lto_input_1_unsigned): Likewise.
3331 (lto_output_int_in_range): Likewise.
3332 (lto_input_int_in_range): Likewise.
3333 (bp_pack_int_in_range): Likewise.
3334 (bp_unpack_int_in_range): Likewise.
3335 (lto_output_enum): Likewise.
3336 (lto_input_enum): Likewise.
3337 (bp_pack_enum): Likewise.
3338 (bp_unpack_enum): Likewise.
3339 * streamer-hooks.c: New.
3340 * streamer-hooks.h: New.
3341 * tree-streamer-in.c: New.
3342 * tree-streamer-out.c: New.
3343 * tree-streamer.c: New.
3344 * tree-streamer.h: New.
3346 2011-08-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3348 * gthr-posix95.h: Remove.
3349 * gthr.h [_PTHREADS95]: Remove.
3350 * configure.ac (enable_threads): Remove posix95.
3351 * configure: Regenerate.
3352 * doc/install.texi (Configuration, --enable-threads): Remove posix95.
3354 2011-08-08 Uros Bizjak <ubizjak@gmail.com>
3357 * config/i386/i386.c (ix86_decompose_address): Allow zero-extended
3359 (ix86_print_operand_address): Handle zero-extended addresses.
3360 (memory_address_length): Add length of addr32 prefix for
3361 zero-extended addresses.
3362 (ix86_secondary_reload): Handle moves to/from double-word general
3363 registers from/to zero-extended addresses.
3364 * config/i386/predicates.md (lea_address_operand): Reject
3365 zero-extended operands.
3367 2011-08-08 H.J. Lu <hongjiu.lu@intel.com>
3370 * config.gcc (libgcc_tm_file): Add i386/value-unwind.h for Linux/x86.
3372 * system.h (REG_VALUE_IN_UNWIND_CONTEXT): Poisoned.
3373 (ASSUME_EXTENDED_UNWIND_CONTEXT): Likewise.
3375 * unwind-dw2.c (ASSUME_EXTENDED_UNWIND_CONTEXT): New.
3376 (_Unwind_Context_Reg_Val): Likewise.
3377 (_Unwind_Get_Unwind_Word): Likewise.
3378 (_Unwind_Get_Unwind_Context_Reg_Val): Likewise.
3379 (_Unwind_Context): Use _Unwind_Context_Reg_Val on the reg field.
3380 (_Unwind_IsExtendedContext): Check ASSUME_EXTENDED_UNWIND_CONTEXT
3381 for EXTENDED_CONTEXT_BIT.
3382 (__frame_state_for): Likewise.
3383 (uw_init_context_1): Likewise.
3384 (_Unwind_GetGR): Updated.
3385 (_Unwind_SetGR): Likewise.
3386 (_Unwind_GetGRPtr): Likewise.
3387 (_Unwind_SetGRPtr): Likewise.
3388 (_Unwind_SetGRValue): Likewise.
3389 (_Unwind_GRByValue): Likewise.
3390 (uw_install_context_1): Likewise.
3392 * doc/tm.texi.in: Document REG_VALUE_IN_UNWIND_CONTEXT and
3393 ASSUME_EXTENDED_UNWIND_CONTEXT.
3394 * doc/tm.texi: Regenerated.
3396 2011-08-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3398 * Makefile.in (gengtype$(exeext)): Add $(LDFLAGS).
3400 2011-08-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3402 * doc/invoke.texi (DEC Alpha Options, -mcpu): native support isn't
3404 (DEC Alpha Options, -mtune): Likewise.
3405 (MIPS Options, -march): native is supported on IRIX.
3407 2011-08-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3409 * config/sparc/driver-sparc.c: New file.
3410 * config/sparc/x-sparc: New file.
3411 * config.host: Use driver-sparc.o, sparc/x-sparc on sparc*-*-solaris2*.
3412 * config/sparc/sparc.opt (native): New value for enum processor_type.
3413 * config/sparc/sparc-opts.h (PROCESSOR_NATIVE): Declare.
3414 * config/sparc/sparc.c (sparc_option_override): Abort if
3415 PROCESSOR_NATIVE gets here.
3416 * config/sparc/sol2.h [__sparc__] (host_detect_local_cpu): Declare.
3417 (EXTRA_SPEC_FUNCTIONS, MCPU_MTUNE_NATIVE_SPECS,
3418 DRIVER_SELF_SPECS): Define.
3419 * doc/invoke.texi (SPARC Options, -mcpu): Document native.
3420 (SPARC Options, -mtune): Likewise.
3421 * configure.ac (EXTRA_GCC_LIBS): Check for libkstat.
3423 * configure: Regenerate.
3424 * Makefile.in (EXTRA_GCC_LIBS): Set.
3425 (xgcc$(exeext)): Add $(EXTRA_GCC_LIBS).
3426 (cpp$(exeext)): Likewise.
3428 2011-08-08 Richard Guenther <rguenther@suse.de>
3430 * tree-vrp.c (extract_range_from_unary_expr_1): New function,
3432 (extract_range_from_unary_expr): ... here. Handle BIT_NOT_EXPR
3435 2011-08-08 Mikael Pettersson <mikpe@it.uu.se>
3437 PR tree-optimization/50005
3438 * ipa-inline-analysis (remap_predicate): Add cast to
3439 silence signed/unsigned comparison warning.
3441 2011-08-08 Richard Sandiford <richard.sandiford@linaro.org>
3443 * modulo-sched.c (get_sched_window): Use a table for the debug output.
3444 Print the current ii.
3445 (sms_schedule_by_order): Reduce whitespace in dump line.
3447 2011-08-08 Richard Sandiford <richard.sandiford@linaro.org>
3449 * modulo-sched.c (get_sched_window): Use just one loop for predecessors
3450 and one loop for successors. Fix upper bound of memory range.
3452 2011-08-06 Uros Bizjak <ubizjak@gmail.com>
3455 * config/alpha/alpha.c (alpha_instantiate_decls): New function.
3456 (TARGET_INSTANTIATE_DECLS): New define.
3458 2011-08-06 Paolo Bonzini <bonzini@gnu.org>
3459 Mikael Morin <mikael.morin@sfr.fr>
3461 * Makefile.in (INCLUDES_FOR_TARGET): New.
3462 (LIBGCC2_CFLAGS): Use it.
3463 (CRTSTUFF_CFLAGS): Use it instead of INCLUDES.
3465 2011-08-06 Uros Bizjak <ubizjak@gmail.com>
3467 * config/i386/i386.c (ix86_compute_frame_layout): Simplify
3468 frame->save_regs_using_mov calculation.
3470 2011-08-06 Uros Bizjak <ubizjak@gmail.com>
3472 * config/i386/i386.md (ssemodesuffix): Remove V8SI mode.
3473 * config/i386/sse.md (castmode): New mode attribute.
3474 (avx_<castmode><avxsizesuffix>_<castmode>): Rename from
3475 avx_<ssemodesuffix><avxsizesuffix>_<ssemodesuffix>.
3477 2011-08-05 Jan Hubicka <jh@suse.cz>
3480 * ipa-inline-analysis.c (remap_predicate): Add bounds check.
3482 2011-08-05 Jan Hubicka <jh@suse.cz>
3485 * tree-emultls.c (new_emutls_decl):Add alias_of parameter;
3487 (create_emultls_var):New function.
3488 (ipa_lower_emutls): Handle aliases correctly.
3490 2011-08-05 Jan Hubicka <jh@suse.cz>
3493 * ipa-inline.c (recursive_inlining): Look through aliases.
3495 2011-08-05 Jason Merrill <jason@redhat.com>
3497 * config/i386/i386.c (setup_incoming_varargs_ms_64): Move
3498 declarations to beginning of function.
3500 2011-08-05 Bernd Schmidt <bernds@codesourcery.com>
3502 PR rtl-optimization/49900
3503 * sched-ebb.c (add_deps_for_risky_insns): Also add dependencies to
3504 ensure basic blocks stay in the same order.
3506 2011-08-05 Aldy Hernandez <aldyh@redhat.com>
3508 * config/s390/s390.c (s390_expand_cs_hqi): Add new arguments to
3510 (s390_expand_atomic): Same.
3512 2011-08-05 Richard Henderson <rth@redhat.com>
3515 * dwarf2cfi.c (scan_insn_after): Split out of ...
3516 (scan_trace): ... here. Correctly place notes wrt sequences.
3518 2011-08-05 Kaz Kojima <kkojima@gcc.gnu.org>
3519 Richard Henderson <rth@redhat.com>
3522 * expr.c (fixup_args_size_notes): Look through no-op moves.
3524 2011-08-05 Uros Bizjak <ubizjak@gmail.com>
3526 * config/i386/i386.md (*push<mode>2): Use "o" constraint instead
3527 of "m" for operand 0. Add type and mode attribute.
3528 (*pushxf_nointeger"): Use "<" constraint for operand 0.
3529 (*pushdf_rex64): New pattern, split out of *pushdf. Use "m"
3530 constraint instead of "o" for opreand 1.
3531 (*pushdf): Disable for TARGET_64BIT. Correct mode attribute.
3532 (*movdi_internal_rex64): Use "!o" constraint instead of "!m" for
3533 operand 0, alternative 4.
3534 (*movdf_internal_rex64): Ditto for operand 0, alernative 6.
3536 2011-08-05 Uros Bizjak <ubizjak@gmail.com>
3538 * config/i386/predicates.md (lea_address_operand): Rename from
3539 no_seg_address_operand.
3540 * config/i386/i386.md (*lea_1): Update operand 1 predicate for rename.
3541 (*lea_1_zext): Ditto.
3543 (*lea_2_zext): Ditto.
3545 2011-08-05 Uros Bizjak <ubizjak@gmail.com>
3547 * config/i386/i386.c (ix86_print_operand_address): Handle SUBREGs of
3548 parts.base and parts.index.
3549 * config/i386/predicates.md (aligned_operand): Ditto.
3550 (cmpxchg8b_pic_memory_operand): Ditto.
3552 2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3554 * config/soft-fp: Move to ../libgcc.
3555 * Makefile.in (SFP_MACHINE): Remove.
3556 (libgcc-support): Remove $(SFP_MACHINE) dependency.
3557 * config/arm/sfp-machine.h: Move to ../libgcc/config/arm.
3558 * config/arm/t-arm-softfp: Move to
3559 ../libgcc/config/arm/t-softfp.
3560 * config/c6x/sfp-machine.h: Move to ../libgcc/config/c6x.
3561 * config/c6x/t-c6x-softfp: Remove.
3562 * config/i386/sfp-machine.h: Move to ../libgcc/config/i386.
3563 * config/i386/t-fprules-softfp: Move to
3564 ../libgcc/config/t-softfp-tf.
3565 * config/ia64/sfp-machine.h: Move to ../libgcc/config/ia64.
3566 * config/ia64/t-fprules-softfp: Remove.
3567 * config/lm32/sfp-machine.h: Move to ../libgcc/config/lm32.
3568 * config/lm32/t-fprules-softfp: Remove.
3569 * config/moxie/sfp-machine.h: Remove.
3570 * config/moxie/t-moxie-softfp: Remove.
3571 * config/rs6000/darwin-ldouble-format: Move to
3572 ../libgcc/config/rs6000/ibm-ldouble-format.
3573 * config/rs6000/darwin-ldouble.c: Move to
3574 ../libgcc/config/rs6000/ibm-ldouble.c
3575 * config/rs6000/libgcc-ppc-glibc.ver: Move to ../libgcc/config/rs6000.
3576 * config/rs6000/libgcc-ppc64.ver: Likewise.
3577 * config/rs6000/sfp-machine.h: Likewise.
3578 * config/rs6000/t-aix43 (SHLIB_MAPFILES): Remove
3579 $(srcdir)/config/rs6000/libgcc-ppc64.ver.
3580 (LIB2FUNCS_EXTRA): Remove.
3581 (TARGET_LIBGCC2_CFLAGS): Remove.
3582 * config/rs6000/t-aix52: Likewise
3583 * config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Remove
3584 $(srcdir)/config/rs6000/darwin-ldouble.c.
3585 (SHLIB_MAPFILES): Remove.
3586 * config/rs6000/t-darwin64 (LIB2FUNCS_EXTRA): Remove
3587 $(srcdir)/config/rs6000/darwin-ldouble.c.
3588 * config/rs6000/t-fprules-softfp: Move to
3589 ../libgcc/config/t-softfp-sfdf.
3590 * config/rs6000/t-freebsd: Move to ../libgcc/config/rs6000.
3591 * config/rs6000/t-linux64 (softfp_wrap_start, softfp_wrap_end): Remove.
3592 * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Remove
3593 $(srcdir)/config/rs6000/darwin-ldouble.c.
3594 * config/score/sfp-machine.h: Move to ../libgcc/config/score.
3595 * config/score/t-score-softfp: Remove.
3596 * config.gcc (arm*-*-linux*): Remove arm/t-arm-softfp,
3597 soft-fp/t-softfp from tmake_file.
3598 (arm*-*-uclinux*): Likewise.
3599 (arm*-*-ecos-elf): Likewise.
3600 (arm*-*-eabi*, arm*-*-symbianelf*): Likewise.
3601 (arm*-*-rtems*): Likewise.
3602 (arm*-*-elf): Likewise.
3603 (moxie-*-elf): Remove moxie/t-moxie-softfp, soft-fp/t-softfp from
3605 (moxie-*-uclinux*): Likewise.
3606 (moxie-*-rtems*): Likewise.
3607 (lm32-*-elf*): Remove lm32/t-fprules-softfp, soft-fp/t-softfp from
3609 (lm32-*-rtems*): Likewise.
3610 (lm32-*-uclinux*): Likewise.
3611 (powerpc-*-freebsd*): Remove rs6000/t-freebsd,
3612 rs6000/t-fprules-softfp, soft-fp/t-softfp from tmake_file.
3613 (powerpc-*-linux*, powerpc64-*-linux*): Remove
3614 rs6000/t-fprules-softfp, soft-fp/t-softfp from tmake_file.
3615 (score-*-elf): Remove score/t-score-softfp, soft-fp/t-softfp from
3617 (tic6x-*-elf): Remove c6x/t-c6x-softfp, soft-fp/t-softfp from
3619 (tic6x-*-uclinux): Likewise.
3620 (i[34567]86-*-darwin*, x86_64-*-darwin*): Remove i386/t-fprules-softfp,
3621 soft-fp/t-softfp from tmake_file.
3622 (i[34567]86-*-linux*, x86_64-*-linux*, i[34567]86-*-kfreebsd*-gnu)
3623 (x86_64-*-kfreebsd*-gnu, i[34567]86-*-gnu*): Likewise.
3624 (i[34567]86-*-solaris2*, x86_64-*-solaris2.1[0-9]*): Likewise.
3625 (i[34567]86-*-cygwin*, i[34567]86-*-mingw*, x86_64-*-mingw*): Likewise.
3626 (i[34567]86-*-freebsd*, x86_64-*-freebsd*): Likewise.
3628 2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3630 * Makefile.in (FPBIT_FUNCS, DPBIT_FUNCS, TPBIT_FUNCS): Remove.
3631 (libgcc-support): Remove $(FPBIT), $(DPBIT), $(TPBIT) dependencies.
3632 (libgcc.mvars): Remove FPBIT, FPBIT_FUNCS, DPBIT, DPBIT_FUNCS,
3634 * config/fp-bit.c, config/fp-bit.h: Move to ../libgcc.
3635 * config/arm/t-strongarm-elf (FPBIT, DPBIT, dp-bit.c, fp-bit.c):
3637 * config/arm/t-vxworks: Likewise.
3638 * config/arm/t-wince-pe: Likewise.
3639 * config/avr/t-avr (fp-bit.c, FPBIT): Remove.
3640 * config/bfin/t-bfin (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3641 * config/bfin/t-bfin-elf: Likewise.
3642 * config/bfin/t-bfin-linux: Likewise.
3643 * config/bfin/t-bfin-uclinux: Likewise.
3644 * config/cris/t-cris (FPBIT, DPBIT, dp-bit.c, tmplibgcc_fp_bit.c):
3646 * config/fr30/t-fr30: Likewise.
3647 * config/frv/t-frv: Likewise.
3648 * config/h8300/t-h8300 (FPBIT, fp-bit.c): Remove.
3649 * config/iq2000/t-iq2000 (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3650 * config/m32c/t-m32c: Likewise.
3651 * config/m32r/t-linux: (LIB2FUNCS_EXTRA, fp-bit.c, dp-bit.c): Remove.
3652 * config/m32r/t-m32r (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3653 * config/mcore/t-mcore: Likewise.
3654 * config/mep/t-mep: Likewise.
3655 * config/microblaze/t-microblaze: Likewise.
3656 * config/mips/t-linux64 (TPBIT, tp-bit.c): Remove.
3657 * config/mips/t-mips (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3658 * config/mips/t-sdemtk (FPBIT, DPBIT): Remove.
3659 * config/mips/t-sr71k (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3660 * config/mn10300/t-linux: Remove.
3661 * config/mn10300/t-mn10300 (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3662 * config/pdp11/t-pdp11: Likewise.
3663 * config/picochip/t-picochip (FPBIT, fp-bit.c): Remove.
3664 * config/rs6000/ppc64-fp.c: Move to ../libgcc/config/rs6000.
3665 * config/rs6000/t-aix43 (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3666 (LIB2FUNCS_EXTRA): Remove $(srcdir)/config/rs6000/ppc64-fp.c.
3667 * config/rs6000/t-aix52: Likewise.
3668 * config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Remove
3669 $(srcdir)/config/rs6000/ppc64-fp.c.
3670 * config/rs6000/t-fprules-fpbit: Remove.
3671 * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Remove.
3672 * config/rs6000/t-lynx (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3673 * config/sh/t-netbsd (FPBIT, DPBIT): Remove.
3674 * config/sh/t-sh (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3675 * config/sparc/t-elf: Likewise.
3676 * config/sparc/t-leon: Likewise.
3677 * config/sparc/t-leon3: Likewise.
3678 * config/spu/t-spu-elf: Likewise.
3679 (DPBIT_FUNCS): Remove.
3680 * config/stormy16/t-stormy16 (FPBIT, DPBIT, dp-bit.c, fp-bit.c): Remove.
3681 * config/v850/t-v850: Likewise.
3682 * config.gcc (avr-*-rtems*): Add avr/avr-lib.h to libgcc_tm_file.
3683 (avr-*-*): Likewise.
3684 (h8300-*-rtems*): Set libgcc_tm_file.
3685 (h8300-*-elf*): Likewise.
3686 (powerpc-*-eabisimaltivec*): Remove rs6000/t-fprules-fpbit from
3688 (powerpc-*-eabisim*): Likewise.
3689 (powerpc-*-elf*): Likewise.
3690 (powerpc-*-eabialtivec*): Likewise.
3691 (powerpc-xilinx-eabi*): Likewise.
3692 (powerpc-*-eabi*): Likewise.
3693 (powerpc-*-rtems*): Likewise.
3694 (powerpc-wrs-vxworks, powerpc-wrs-vxworksae): Likewise.
3695 (powerpcle-*-elf*): Likewise.
3696 (powerpcle-*-eabisim*): Likewise.
3697 (powerpcle-*-eabi*): Likewise.
3698 (rx-*-elf*): Add rx/rx-lib.h to libgcc_tm_file.
3699 (am33_2.0-*-linux*): Remove mn10300/t-linux from tmake_file.
3700 * doc/fragments.texi (Target Fragment, Floating Point Emulation):
3703 2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3705 * Makefile.in (UNWIND_H): Remove.
3706 (LIB2ADDEH, LIB2ADDEHSTATIC, LIB2ADDEHSHARED): Move to
3707 ../libgcc/Makefile.in.
3708 (LIBUNWIND, SHLIBUNWIND_LINK, SHLIBUNWIND_INSTALL): Likewise.
3709 (LIBUNWINDDEP): Remove.
3710 (libgcc-support): Remove LIB2ADDEH, $(srcdir)/emutls.c dependencies.
3711 (libgcc.mvars): Remove LIB2ADDEH, LIB2ADDEHSTATIC, LIB2ADDEHSHARED,
3712 LIBUNWIND, SHLIBUNWIND_LINK, SHLIBUNWIND_INSTALL.
3713 (stmp-int-hdrs): Remove $(UNWIND_H) dependency.
3714 Don't copy $(UNWIND_H).
3715 * config.gcc (ia64*-*-linux*): Remove with_system_libunwind handling.
3716 * configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Remove.
3717 * aclocal.m4: Regenerate.
3718 * configure: Regenerate.
3719 * emutls.c, unwind-c.c, unwind-compat.c, unwind-compat.h,
3720 unwind-dw2-fde-compat.c, unwind-dw2-fde-glibc.c, unwind-dw2-fde.c,
3721 unwind-dw2-fde.h, unwind-dw2.c, unwind-dw2.h, unwind-generic.h,
3722 unwind-pe.h, unwind-sjlj.c, unwind.inc: Move to ../libgcc.
3723 * unwind-dw2-fde-darwin.c: Move to ../libgcc/config.
3724 * config/arm/libunwind.S, config/arm/pr-support.c,
3725 config/arm/unwind-arm.c, config/arm/unwind-arm.h: Move to
3726 ../libgcc/config/arm.
3727 * config/arm/t-bpabi (UNWIND_H, LIB2ADDEH): Remove.
3728 * config/arm/t-symbian (UNWIND_H, LIB2ADDEH): Remove.
3729 * config/frv/t-frv ($(T)frvbegin$(objext)): Use
3730 $(srcdir)/../libgcc to refer to unwind-dw2-fde.h.
3731 ($(T)frvend$(objext)): Likewise.
3732 * config/ia64/t-glibc (LIB2ADDEH): Remove.
3733 * config/ia64/t-glibc-libunwind: Move to ../libgcc/config/ia64.
3734 * config/ia64/fde-glibc.c, config/ia64/fde-vms.c,
3735 config/ia64/unwind-ia64.c, config/ia64/unwind-ia64.h: Move to
3736 ../libgcc/config/ia64.
3737 * config/ia64/t-hpux (LIB2ADDEH): Remove.
3738 * config/ia64/t-ia64 (LIB2ADDEH): Remove.
3739 * config/ia64/t-vms (LIB2ADDEH): Remove.
3740 * config/ia64/vms.h (UNW_IVMS_MODE,
3741 MD_UNW_COMPATIBLE_PERSONALITY_P): Remove.
3742 * config/picochip/t-picochip (LIB2ADDEH): Remove.
3743 * config/rs6000/aix.h (R_LR, MD_FROB_UPDATE_CONTEXT): Remove.
3744 * config/rs6000/t-darwin (LIB2ADDEH): Remove.
3745 * config/rs6000/darwin-fallback.c: Move to ../libgcc/config/rs6000.
3746 * config/sh/t-sh ($(T)unwind-dw2-Os-4-200.o): Use
3747 $(srcdir)/../libgcc to refer to unwinder sources.
3748 * config/spu/t-spu-elf (LIB2ADDEH): Remove.
3749 * config/t-darwin (LIB2ADDEH): Remove.
3750 * config/t-freebsd (LIB2ADDEH): Remove.
3751 * config/t-libunwind (LIB2ADDEH, LIB2ADDEHSTATIC): Remove.
3752 * config/t-libunwind-elf: Move to ../libgcc/config.
3753 * config/t-linux (LIB2ADDEH): Remove.
3754 * config/t-sol2 (LIB2ADDEH): Remove.
3755 * config/xtensa/t-xtensa (LIB2ADDEH): Remove.
3756 * system.h (MD_FROB_UPDATE_CONTEXT): Poison.
3758 2011-08-05 H.J. Lu <hongjiu.lu@intel.com>
3760 * config/i386/i386.c (processor_alias_table): Add core-avx-i.
3762 * doc/invoke.texi: Document core-avx-i.
3764 2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3766 * tsystem.h (CONST_CAST2, CONST_CAST): Define.
3768 2011-08-05 Ira Rosen <ira.rosen@linaro.org>
3770 * tree-vect-loop.c (vect_create_epilog_for_reduction): Use the
3771 result of multiple results reduction when extracting the final
3772 value using scalar code.
3774 2011-08-05 Richard Guenther <rguenther@suse.de>
3776 PR tree-optimization/49984
3777 * tree-vrp.c (extract_range_from_binary_expr_1): Handle BIT_XOR_EXPR.
3779 2011-08-05 Richard Guenther <rguenther@suse.de>
3781 * tree-vrp.c (zero_nonzero_bits_from_vr): Make sure to always
3782 return true for constant integer ranges.
3783 (extract_range_from_binary_expr_1): Simplify BIT_AND_EXPR and
3784 BIT_IOR_EXPR handling.
3786 2011-08-04 Kai Tietz <ktietz@redhat.com>
3788 * config/i386/i386.c (setup_incoming_varargs_ms_64): Set
3789 ix86_varargs_gpr_size and ix86_varargs_fpr_size to zero.
3791 2011-08-04 Ira Rosen <ira.rosen@linaro.org>
3793 * tree-vectorizer.h (struct _stmt_vec_info): Add new field for
3794 pattern def statement, and its access macro.
3795 (NUM_PATTERNS): Set to 5.
3796 * tree-vect-loop.c (vect_determine_vectorization_factor): Handle
3797 pattern def statement.
3798 (vect_transform_loop): Likewise.
3799 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add new
3800 function vect_recog_over_widening_pattern ().
3801 (vect_operation_fits_smaller_type): New function.
3802 (vect_recog_over_widening_pattern, vect_mark_pattern_stmts):
3804 (vect_pattern_recog_1): Move the code that marks pattern
3805 statements to vect_mark_pattern_stmts (), and call it. Update
3807 * tree-vect-stmts.c (vect_supportable_shift): New function.
3808 (vect_analyze_stmt): Handle pattern def statement.
3809 (new_stmt_vec_info): Initialize pattern def statement.
3811 2011-08-04 Richard Henderson <rth@redhat.com>
3814 * config/i386/i386.c (ix86_expand_call): Don't create nested
3815 PARALLELs for TARGET_VZEROUPPER.
3816 (ix86_split_call_vzeroupper): Fix extraction of the original call.
3817 * config/i386/i386.md (*call_rex64_ms_sysv_vzeroupper): Don't
3818 recognize nested PARALLELs.
3819 (*call_pop_vzeroupper, *sibcall_pop_vzeroupper,
3820 *call_value_rex64_ms_sysv_vzeroupper, *call_value_pop_vzeroupper,
3821 *sibcall_value_pop_vzeroupper): Likewise.
3823 2011-08-04 Richard Henderson <rth@redhat.com>
3826 * calls.c (expand_call): Use fixup_args_size_notes for
3828 * expr.c (fixup_args_size_notes): Allow STACK_POINTER_REGNUM sets
3829 in non-standard modes.
3831 2011-08-04 Jakub Jelinek <jakub@redhat.com>
3833 * gcc.c (self_spec): New variable.
3834 (static_specs): Add self_spec.
3835 (main): Call do_self_spec on "self_spec" specs after reading
3836 user specs files. Move compare_debug handling right after that.
3838 2011-08-04 Richard Guenther <rguenther@suse.de>
3840 * tree-vrp.c (vrp_expr_computes_nonnegative): Remove.
3841 (value_range_nonnegative_p): New function.
3842 (ssa_name_nonnegative_p): Use it.
3843 (value_range_constant_singleton): New function.
3844 (op_with_constant_singleton_value_range): Use it.
3845 (extract_range_from_binary_expr_1): New function, split out from ...
3846 (extract_range_from_binary_expr): ... this. Remove fallback
3847 constant folding done here.
3849 2011-08-04 Richard Guenther <rguenther@suse.de>
3851 PR tree-optimization/49806
3852 * tree-vrp.c (op_with_boolean_value_range_p): New function.
3853 (simplify_truth_ops_using_ranges): Simplify. Allow inserting
3854 a new statement for a final conversion to bool.
3856 2011-08-04 Romain Geissler <romain.geissler@gmail.com>
3858 * gengtype-state.c: Include "bconfig.h" if
3859 GENERATOR_FILE is defined, "config.h" otherwise.
3860 * gengtype.c: Likewise.
3861 * gengtype-lex.l: Likewise.
3862 * gengtype-parse.c: Likewise.
3863 * Makefile.in (gengtype-lex.o-warn): New variable.
3864 (plugin_resourcesdir): Likewise.
3865 (plugin_bindir): Likewise.
3866 (plugin_includedir): Use $(plugin_resourcesdir) as prefix base.
3867 (MOSTLYCLEANFILES): Add gengtype$(exeext).
3868 (native): Depend on gengtype$(exeext) is $enable_plugin
3870 (gtype.state): Depend on s-gtype. Use temporary file.
3871 (gengtype-lex.o): New rule.
3872 (gengtype-parse.o): Likewise.
3873 (gengtype-state.o): Likewise.
3874 (gengtype$(exeext)): Likewise.
3875 (install-gengtype): Likewise.
3876 (gengtype.o): Likewise.
3877 (build/gengtype.o): Depend on version.h.
3878 (build/gengtype-state): Depend on double-int.h, version.h,
3879 $(HASHTAB_H), $(OBSTACK_H), $(XREGEX_H) and build/errors.o.
3880 (install-plugin): Depend on install-gengtype.
3882 2011-08-04 Jakub Jelinek <jakub@redhat.com>
3885 * tree.h (init_attributes): New prototype.
3886 * attribs.c (init_attributes): No longer static.
3888 2011-08-04 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
3890 * config/arm/arm.c (arm_set_fixed_optab_libfunc): Constify
3893 2011-08-03 David Li <davidxl@google.com>
3895 * tree-optimize.c (execute_fixup_cfg): Fix up entry
3896 outgoing edge counts after inlining.
3898 2011-08-03 David Li <davidxl@google.com>
3900 * profile.c (compute_branch_probabilities): Compute
3901 function frequency after profile annotation.
3903 2011-08-04 Alan Modra <amodra@gmail.com>
3905 * config/rs6000/rs6000.c (rs6000_emit_epilogue): Simplify
3906 use_backchain_to_restore_sp initialisation.
3907 (rs6000_legitimate_offset_address_p): Simplify offset test.
3909 2011-08-03 Richard Henderson <rth@redhat.com>
3911 * config/spu/spu.md: Use define_c_enum instead of define_constants.
3912 (UNSPECV_BLOCKAGE, UNSPECV_LNOP, UNSPECV_SYNC): Rename from UNSPEC_*.
3915 2011-08-03 Richard Henderson <rth@redhat.com>
3918 * config/avr/avr.md: New splitter for REG_ARGS_SIZE 0.
3920 2011-08-03 Jakub Jelinek <jakub@redhat.com>
3922 PR tree-optimization/49948
3923 * gimple.c (walk_stmt_load_store_addr_ops): Walk CONSTRUCTOR elements.
3925 2011-08-03 Anatoly Sokolov <aesok@post.ru>
3927 * config/m32c/m32c.c (class_sizes): Remove.
3928 (reduce_class): Change arguments and return type to reg_class_t.
3929 Change type cc var to HARD_REG_SET. Change type best var to
3930 reg_class_t. Change type best_size var to unsigned int. Remove
3931 initialization class_sizes var. Use reg_class_size array instead
3932 of class_sizes. Use reg_class_contents array instead
3935 2011-08-03 Richard Guenther <rguenther@suse.de>
3938 * fold-const.c (fold_binary_loc): Only associate
3939 (+ (+ (* a b) c) (* d e)) as (+ (+ (* a b) (* d e)) c) if
3942 2011-08-03 Alan Modra <amodra@gmail.com>
3944 PR rtl-optimization/49941
3945 * jump.c (mark_jump_label): Comment.
3946 (mark_jump_label_1): Set JUMP_LABEL for return jumps.
3947 * emit-rtl.c (copy_rtx_if_shared_1, copy_insn_1): Leave RETURN shared.
3948 (mark_used_flags): Don't mark RETURN.
3950 2011-08-03 Richard Guenther <rguenther@suse.de>
3952 PR tree-optimization/49938
3953 * tree-scalar-evolution.c (interpret_loop_phi): Gracefully
3954 deal with a POLYNOMIAL_CHREC.
3956 2011-08-03 Revital Eres <revital.eres@linaro.org>
3958 * modulo-sched.c (calculate_stage_count,
3959 calculate_must_precede_follow, get_sched_window,
3960 try_scheduling_node_in_cycle, remove_node_from_ps): Add
3962 (update_node_sched_params, set_must_precede_follow, optimize_sc):
3964 (reset_sched_times): Call update_node_sched_params.
3965 (sms_schedule): Call optimize_sc.
3966 (get_sched_window): Change function arguments.
3967 (sms_schedule_by_order): Update call to get_sched_window.
3968 Call set_must_precede_follow.
3969 (calculate_stage_count): Add function argument.
3971 2011-08-02 Richard Henderson <rth@redhat.com>
3975 * reg-notes.def (REG_ARGS_SIZE): New.
3976 * calls.c (emit_call_1): Emit REG_ARGS_SIZE for call_pop.
3977 (expand_call): Add REG_ARGS_SIZE to emit_stack_restore.
3978 * cfgcleanup.c (old_insns_match_p): Don't allow cross-jumping to
3979 different stack levels.